Curso de CVS - Lab 4

509 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
509
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Curso de CVS - Lab 4

  1. 1. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden NeubertLab4-1: Aplicando EtiquetasObjetivosAo 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árioEste lab exercita o gerenciamento de etiquetas, o mecanismo que o CVS oferece para a marcação deliberações.Tarefa 1: Aplicar uma etiqueta sobre as revisões em uma cópia local1. Certifique-se de que você tem duas áreas de trabalho para o módulo places, por exemplo, C:Trabalhoplaces e C:Trabalhoplaces2. 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:Trabalhoplaces 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:Trabalhoplaces, 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. 1
  2. 2. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert5. 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 etiqueta1. 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. 2
  3. 3. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert3. 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 local1. 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. 3
  4. 4. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert4. 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 etiqueta1. 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. 4
  5. 5. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden NeubertLab4-2: Trabalhando com RamosObjetivosAo 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árioEste lab é voltado para o funcionamento de ramos no CVS. Iremos criar um ramo sobre umaetiqueta existente, utilizá-lo em uma cópia local, submeter alterações para esse ramo e verificar osresultados. Por fim, mesclaremos as alterações neste ramo com o tronco.Tarefa 1: Criar um ramo sobre uma etiqueta existenteComo vimos no treinamento, é uma boa prática marcar com uma etiqueta as revisões que formarãoa base de um ramo, antes de criar esse ramo. Usaremos uma etiqueta criada no lab anterior paracriar 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. 5
  6. 6. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden NeubertTarefa 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. 6
  7. 7. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert2. 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 ramo1. 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. 7
  8. 8. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert4. 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. 8
  9. 9. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden NeubertTarefa 4: Propagar as alterações do ramo para o troncoAgora iremos propagar as alterações feitas no ramo places-2_2-devel para o tronco do móduloplaces. 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. 9
  10. 10. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert5. 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. 10
  11. 11. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden Neubert7. Fique na raiz da área de trabalho, C:Trabalhoplaces, 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. 11
  12. 12. CVS Avançado: Laboratório do Aluno Copyright® 2005, Marden NeubertLab4-3: Exportando uma LiberaçãoObjetivosAo 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árioNeste lab, exportaremos uma liberação já marcada de nosso projeto. Usaremos as opções decontrole de substituição de palavras-chave para que os arquivos exportados contenham somentevalores, não nomes de palavras-chave.Tarefa 1: Exportar uma liberação marcada do projeto1. 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 “$”. 12

×