Utilizar Vigias ('Watches')

Uma vigia é o nome convencional para a funcionalidade do CVS que permite notificar os utilizadores do repositório, sempre que um ficheiro for alterado ou que algum utilizador começou a editar um ficheiro. A utilização das vigias obriga a que o ficheiro $CVSROOT/CVSROOT/notify tenha sido configurado convenientemente. Isto não será aqui discutido; se você precisar de mais informações sobre a configuração do ponto de vista do administrador, veja um dos livros que é indicado no apêndice.

O suporte principal de vigias no Cervisia são seis itens do menu.

Para poder adicionar uma vigia a um ou vários ficheiros, use a opção AvançadoAdicionar Vigia.... Na janela que você irá obter, poderá optar por ser notificado para qualquer um dos tipos de eventos que o CVS suporta. Por exemplo, se você só quiser ser notificado sempre que um ficheiro é actualizado por outra pessoa, assinale as opções e 'Commits'. Se você quiser ser notificado por qualquer evento relacionado com os ficheiros marcados, assinale a opção Todos. A linha de comandos usada quando você aceitar a janela será

cvs watch add -a commit nomes dos ficheiros

ou com uma opção semelhante, dependendo dos eventos que você opte por vigiar.

Se você não estiver mais interessado em alguns ficheiros, você poderá remover as suas vigias dos mesmos. Para isso, use o comando AvançadoRemover Vigia.... Na janela que obtém aqui, são oferecidas as mesmas opções que aparecem no formulário que você preencheu ao adicionar a vigia. Quando confirmar esta janela, o Cervisia envia o comando

cvs watch remove nomes dos ficheiros

provavelmente com uma opção -a para os eventos escolhidos.

Finalmente, você poderá obter uma lista das pessoas que estão a vigiar um conjunto de ficheiros. Escolha a opção AvançadoMostrar Vigilantes. Se usar este item do menu irá resultar num comando

cvs watchers nomes dos ficheiros

No cenário de utilização normal do CVS, cada programador trabalha em separado na sua versão pessoal extraída. Quando ele quiser modificar algum ficheiro, ele poderá apenas abri-lo no seu editor e começar a trabalhar no mesmo. Mais ninguém saberá do seu trabalho até que o ficheiro seja enviado.

Para alguns grupos de utilizadores, este não é o modelo preferido de cooperação. Eles quererão ser notificados sempre que alguém está a trabalhar num ficheiro no preciso momento em que ele começa. Isto poderá ser obtido com mais alguns comandos do CVS. Antes de você começar a editar um ficheiro, seleccione-o na janela principal do Cervisia e escolha a opção AvançadoEditar Ficheiros. Isto irá executar o comando

cvs edit nomes dos ficheiros

Isto irá enviar uma notificação para toda a gente que definiu uma vigia de edit (edição) para este ficheiro. Irá também registá-lo como um editor do ficheiro. Você poderá obter uma lista de todos os editores de um dado ficheiro se usar o comando AvançadoMostrar os Editores. Isto é equivalente a introduzir a linha de comandos

cvs editors nomes dos ficheiros

Uma sessão de edição é terminada automaticamente quando você enviar as alterações aos ficheiros (fizer o seu 'commit'). Nessa altura, é enviada uma notificação de unedit (fim de edição) para as pessoas que registaram uma vigia respectiva no ficheiro. Claro, você poderá não querer enviar as alterações dos ficheiros, mas sim interromper a sessão de edição e voltar à versão anterior do ficheiro. Isso é feito ao usar a opção AvançadoTerminar edição dos ficheiros. Tenha em atenção que, se usar este item do menu, todo o seu trabalho efectuado desde que você usou a opção AvançadoEditar Ficheiros será perdido. Mais precisamente, o Cervisia irá usar a linha de comandos

echo y | cvs unedit nomes dos ficheiros

Até agora, só foi discutido o caso em que as edições e fins de edições são usados voluntariamente pelos programadores. Para além disso, o CVS suporta um modelo que obriga à utilização desses comandos. O comando responsável por mudar para esse modelo é o cvs watch on, o qual não será muito mais detalhado, porque é usado, na maior parte dos casos, pelo administrador do repositório. Contudo, a parte importante do ponto de vista do programador é que, quando o projecto obrigar às edições, as cópias de trabalho são extraídas apenas com permissões de leitura. Isso significa que você não poderá editar um ficheiro por omissão (a menos que use truques do tipo do chmod). Só quando você usar a opção AvançadoEditar Ficheiros, é que o ficheiro poderá ser alterado. Ele será tornado de novo acessível apenas para leitura quando você enviar as alterações ao ficheiro ou quando usar a opção AvançadoTerminar edição dos ficheiros.

A interface do editor do Cervisia ajuda-o com os projectos que obrigam às vigias também de uma forma diferente. Se você acabou de iniciar um editor com um ficheiro apenas para leitura, após ter feito duplo-click no mesmo ou usando a opção FicheiroEditar, você não será capaz de gravar as suas modificações posteriores. Isto tem obviamente uma razão para tal: Sempre que quiser alterar um ficheiro, você deverá executar o cvs edit antes, para que toda a gente que está a vigiar o ficheiro obtenha uma notificação de que você vai começar a trabalhar nele.

Nesse caso, é aconselhável activar a opção ConfiguraçãoFazer 'cvs edit' automaticamente quando necessário. Agora, sempre que você editar um ficheiro ao fazer duplo-click nele, o Cervisia irá executar um cvs edit antes do editor ser efectivamente executado. A partir daí, você poderá editar o seu ficheiro como de costume. Quando terminar o seu trabalho, envie as alterações dos seus ficheiros, para que os ficheiros enviados voltem a ficar apenas acessíveis para leitura.