Curso de CVS - Lab 4

12
CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert 1 Lab4-1: Aplicando Etiquetas Objetivos Ao final deste lab, você será capaz de: Aplicar uma etiqueta sobre os arquivos de um módulo. Mover etiquetas entre revisões de arquivos. Aplicar etiquetas sobre revisões em uma data específica. Renomear uma etiqueta. Cenário Este lab exercita o gerenciamento de etiquetas, o mecanismo que o CVS oferece para a marcação de liberações. Tarefa 1: Aplicar uma etiqueta sobre as revisões em uma cópia local 1. Certifique-se de que você tem duas áreas de trabalho para o módulo places, por exemplo, C:\Trabalho\places e C:\Trabalho\places2. Vá à área de trabalho places2 e edite o arquivo Country.java, adicionando um comentário de classe. Faça um check-in desse arquivo a partir dessa cópia local. 2. Vá à cópia em C:\Trabalho\places e verifique, com o comando status, que a revisão presente na cópia local é anterior à última revisão no repositório. Veja a figura abaixo. Seus números de revisão podem ser diferentes. 3. Vá à raiz da área de trabalho, em C:\Trabalho\places, e aplique a etiqueta PLACES-2_1- BETA. Observe a saída do comando. Para cada arquivo na cópia local, o comando tag indica que a etiqueta foi aplicada. 4. Volte ao diretório onde se encontra Country.java e execute o comando log, para verificar etiquetas e revisões desse arquivo. Observe que a etiqueta PLACES-2_1-BETA foi aplicada sobre a revisão que estava na cópia local, 1.1.1.2, não sobre a última revisão, que era 1.2. Esse é o comportamento padrão do comando tag: aplicar a etiqueta sobre as revisões presentes na cópia local.

Transcript of Curso de CVS - Lab 4

Page 1: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

1

Lab4-1: Aplicando Etiquetas

Objetivos

Ao final deste lab, você será capaz de: • Aplicar uma etiqueta sobre os arquivos de um módulo. • Mover etiquetas entre revisões de arquivos. • Aplicar etiquetas sobre revisões em uma data específica. • Renomear uma etiqueta.

Cenário

Este lab exercita o gerenciamento de etiquetas, o mecanismo que o CVS oferece para a marcação de liberações.

Tarefa 1: Aplicar uma etiqueta sobre as revisões em uma cópia local

1. Certifique-se de que você tem duas áreas de trabalho para o módulo places, por exemplo, C:\Trabalho\places e C:\Trabalho\places2. Vá à área de trabalho places2 e edite o arquivo Country.java, adicionando um comentário de classe. Faça um check-in desse arquivo a partir dessa cópia local.

2. Vá à cópia em C:\Trabalho\places e verifique, com o comando status, que a revisão presente na cópia local é anterior à última revisão no repositório. Veja a figura abaixo. Seus números de revisão podem ser diferentes.

3. Vá à raiz da área de trabalho, em C:\Trabalho\places, e aplique a etiqueta PLACES-2_1-

BETA. Observe a saída do comando. Para cada arquivo na cópia local, o comando tag indica que a etiqueta foi aplicada.

4. Volte ao diretório onde se encontra Country.java e execute o comando log, para verificar etiquetas e revisões desse arquivo. Observe que a etiqueta PLACES-2_1-BETA foi aplicada sobre a revisão que estava na cópia local, 1.1.1.2, não sobre a última revisão, que era 1.2. Esse é o comportamento padrão do comando tag: aplicar a etiqueta sobre as revisões presentes na cópia local.

Page 2: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

2

5. Atualize a cópia local e faça outra alteração em Country.java, adicionando mais uma linha ao comentário. Não faça o check-in ainda. Vá novamente para a raiz do módulo e aplique a etiqueta PLACES-2_1-BETA2, agora usando a opção –c. Veja o resultado do comando.

6. O comando tag, quando chamado com a opção –c, se recusa a criar a etiqueta se algum arquivo do módulo foi modificado localmente. A etiqueta PLACES-2_1-BETA2 não foi aplicada. Deixe-a assim.

Tarefa 2: Mover uma etiqueta

1. Submeta a modificação feita sobre o arquivo Country.java na última tarefa. 2. Iremos agora mover a etiqueta PLACES-2_1-BETA para a nova revisão de Country.java. Vá

à raiz da cópia local e execute novamente o comando tag, com a etiqueta PLACES-2_1-BETA. Veja que ocorre um erro, pois a etiqueta já existe sobre o arquivo Country.java, em outra revisão. O caractere “W” ao início da linha indica esse erro.

Page 3: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

3

3. Use agora a opção –F com tag. Veja que o único arquivo que teve a etiqueta reaplicada foi Country.java.

Tarefa 3: Aplicando uma etiqueta sem cópia local

1. Vá a um diretório fora da área de trabalho, por exemplo, C:\. Agora aplicaremos uma etiqueta diretamente sobre o repositório, marcando as revisões existentes em uma certa data.

2. Escolha uma data anterior às últimas modificações em arquivos como Country.java e City.java. Por exemplo, nestas instruções, será usada a data “2005/12/11 18:00+0000”.

3. Invoque o comando rtag, aplicando a etiqueta PLACES-2_1-STABLE sobre as revisões existentes nessa data. Não se esqueça da opção global –d, pois não estamos mais em uma área de trabalho. Também será preciso especificar o nome do módulo.

Page 4: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

4

4. Examine as etiquetas sobre o arquivo City.java. Note que a etiqueta marcou uma revisão anterior. O mesmo ocorreu com Country.java.

Tarefa 4: (Desafio) Renomeando uma etiqueta

1. A equipe do projeto pediu para que você renomeie a etiqueta PLACES-2_1-BETA para PLACES-2_1-FINAL. Atenda a solicitação da equipe.

Dica: Não existe um comando específico para renomear uma etiqueta. Use os comandos tag ou rtag e as opções vistas no treinamento para atingir o objetivo solicitado.

Page 5: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

5

Lab4-2: Trabalhando com Ramos

Objetivos

Ao final deste lab, você será capaz de: • Criar ramos em um projeto CVS. • Fazer o check-out de uma área de trabalho em um ramo. • Submeter alterações em um ramo e entender os resultados. • Mesclar as alterações em um ramo com o tronco de um projeto.

Cenário

Este lab é voltado para o funcionamento de ramos no CVS. Iremos criar um ramo sobre uma etiqueta existente, utilizá-lo em uma cópia local, submeter alterações para esse ramo e verificar os resultados. Por fim, mesclaremos as alterações neste ramo com o tronco.

Tarefa 1: Criar um ramo sobre uma etiqueta existente

Como vimos no treinamento, é uma boa prática marcar com uma etiqueta as revisões que formarão a base de um ramo, antes de criar esse ramo. Usaremos uma etiqueta criada no lab anterior para criar um ramo sobre as revisões marcadas por ela. 1. A partir de um diretório qualquer, por exemplo, C:\, crie um ramo sobre a etiqueta PLACES-

2_1-FINAL (ou PLACES-2_1-BETA, caso você não a tenha renomeado no desafio do último lab). O ramo será chamado places-2_2-devel. Compare com a saída a seguir.

2. Verifique que o ramo foi criado corretamente. Inspecione as etiquetas sobre o arquivos Country.java e City.java. Note que places-2_2-devel está aplicada sobre a mesma revisão que PLACES-2_1-FINAL. Observe também que o número do ramo já foi atribuído, de acordo com o número da revisão marcado pela etiqueta original. Neste ponto, vale uma observação sobre o CVS: apesar de nos referirmos ao ramo criado sobre a revisão 1.3 de Country.java com o número 1.3.2, o comando log informa o número 1.3.0.2. Essa é apenas uma forma de se referir ao mesmo ramo, usando um número par de elementos.

Page 6: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

6

Tarefa 2: Criar uma nova área de trabalho sobre ramo

É comum um desenvolvedor trabalhar em dois ramos de um mesmo módulo. Criaremos uma nova área de trabalho sobre o módulo places, apontando para o ramo criado na tarefa anterior. 1. Vá a seu diretório de trabalho (por exemplo, C:\Trabalho) e faça um check-out do módulo

places, apontando para o ramo places-2_2-devel, usando a opção –r de checkout. Ela automaticamente implica a opção –P, logo, não é preciso especificar esta. Use a opção –d, para criar uma área de trabalho chamada places-2.2.

Page 7: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

7

2. Inspecione o status dos arquivos Country.java e City.java. Veja as informações sobre a revisão em uso e sobre a etiqueta aderente (“Sticky Tag”). As revisões de trabalho ainda estão no tronco principal (1.3 e 1.7, respectivamente) porque ainda não foi criada uma revisão dentro do ramo. Já a etiqueta aderente places-2_2-devel indica que estamos trabalhando nesse ramo.

Tarefa 3: Realizar e submeter uma alteração no ramo

1. Na área de trabalho recém-criada sobre o ramo places-2_2-devel, altere o arquivo Country.java. Por exemplo, altere o uso de HashSet para TreeSet, nas linhas 3 e 12.

2. Efetue um check-in. Veja na figura abaixo que uma nova revisão foi criada, dentro do ramo de número 1.3.2. Seu número é 1.3.2.1, indicando que ela é a primeira revisão do arquivo Country.java nesse ramo.

3. Chame novamente o comando status. Veja que a revisão de trabalho (“Working revision”, isto é, BASE) e a revisão no repositório (“Repository revision”, isto é, HEAD) mudaram. Essa visão é exclusiva por ramo, portanto, outros ramos e o tronco principal vêem outra informação.

Page 8: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

8

4. Execute agora o comando log para inspecionar o histórico de Country.java. Observe que a nova revisão aparece junto com as demais. As revisões aparecem listadas por log em ordem crescente de ramos e, dentro de um ramo, em ordem decrescente de revisões.

Page 9: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

9

Tarefa 4: Propagar as alterações do ramo para o tronco

Agora iremos propagar as alterações feitas no ramo places-2_2-devel para o tronco do módulo places. Antes disso, criaremos um cenário um pouco mais complexo. 1. Na área de trabalho places-2.2, altere o arquivo ReportPrinter.java, no diretório

src/java/br/portifolioti/places, mudando as strings “Países”, “Estados” e “Cidades” para o singular. Faça o check-in.

2. Vá também à área de trabalho places, que atua sobre o tronco principal. Altere o mesmo arquivo, mudando, na linha 35, a string “\t” para “\n”. Faça o check-in.

3. Veja o log desse arquivo. Repare na numeração das revisões. Um detalhe: o ramo places-2_2-

devel foi criado sobre a revisão 1.1.1.1, importada do fornecedor, pois não criamos nenhuma revisão no tronco principal depois da importação. Apesar de a numeração parecer estranha, ela não tem nada de diferente e pertence ao mesmo ramo que a revisão recém-criada de Country.java.

4. Como o destino da nossa mescla é o tronco, vá à raiz da área de trabalho que atua sobre ele. Faça um update, para garantir que não há alterações pendentes de commit ou update. Para ter certeza de que não há nenhuma opção aderente pendente, use a opção –A. Use também –P e –d, para limpar eventuais diretórios vazios e enxergar novos diretórios criados no repositório. Veja a saída a seguir.

Page 10: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

10

5. Aplique uma etiqueta sobre o tronco, para marcar seu estado antes da mescla. Use o nome ANTES-MESCLA-2_2. Use a opção –c, para ter certeza de que não há alterações pendentes.

6. Execute a mescla. Note que a etiqueta que marca as revisões-base do ramo origem é PLACES-

2_1-FINAL, ao passo que a etiqueta do ramo em si é places-2_2-devel. Veja a saída a seguir e perceba que o CVS realizou duas mesclas automáticas: nos arquivos ReportPrinter.java e Country.java, exatamente os arquivos que alteramos dentro do ramo. Inspecione esses arquivos, eles encontram-se agora modificados na cópia local. Veja que as alterações foram corretamente propagadas, pois as mesclas tiveram sucesso. Deve-se notar que há uma diferença entre a mescla feita sobre o arquivo Country.java e sobre ReportPrinter.java. No caso de Country.java, a mescla não poderia gerar conflito, pois a revisão presente no tronco principal, 1.3, era uma ancestral da revisão no ramo, 1.3.2.1. Já no caso de ReportPrinter.java, houve modificações independentes: a revisão no tronco principal era 1.2, enquanto que a revisão no ramo era 1.1.1.1.2.1. Portanto, aqui havia a possibilidade real de um conflito. Como as alterações foram pequenas e distantes no arquivo, o algoritmo de mescla automática teve sucesso.

Page 11: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

11

7. Fique na raiz da área de trabalho, C:\Trabalho\places, e execute um commit, propagando as alterações geradas pela mescla. Para documentar melhor a mescla, você pode usar a opção –f, forçando um check-in de todos os arquivos no módulo, e uma mensagem clara para a opção –m. A opção –R também é usada, para garantir que o check-in é recursivo a todo o módulo.

Page 12: Curso de CVS - Lab 4

CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert

12

Lab4-3: Exportando uma Liberação

Objetivos

Ao final deste lab, você será capaz de: • Exportar uma liberação de um projeto no CVS. • Controlar a substituição de palavras-chave na exportação.

Cenário

Neste lab, exportaremos uma liberação já marcada de nosso projeto. Usaremos as opções de controle de substituição de palavras-chave para que os arquivos exportados contenham somente valores, não nomes de palavras-chave.

Tarefa 1: Exportar uma liberação marcada do projeto

1. Vá ao diretório onde os arquivos-fontes são armazenados em seu ambiente, por exemplo, C:\Fontes. Esse diretório não é uma área de trabalho.

2. Exporte a liberação marcada pela etiqueta PLACES-2_1-FINAL, usando o modo de substituição de palavras-chave –kv. Use a opção de comando –d para criar um diretório chamado places-2.1-final-src. Veja a saída abaixo.

3. Inspecione os arquivos no diretório places-2.1-final-src. Note que não existem diretórios CVS sob esse diretório. Veja o conteúdo do arquivo City.java, especificamente a linha de comentário contendo “@version”. Observe que a palavra-chave foi substituída por apenas seu valor, desaparecendo os caracteres “$”.