Pergunta

Há um legado repositório CVS, que contém um grande número de diretórios, subdiretórios e caminhos.Há também um grande número de agências e marcas que não necessarilly cobrir todos os caminhos e arquivos - normalmente um subconjunto.Como posso descobrir qual branch / tag cobre, quais arquivos e caminhos?

De log do CVS já fornece a lista de tags por arquivo.A tarefa requer-me a transpor isso em arquivos por marca.Eu não poderia encontrar tal funcionalidade no atual WinCVS (o cvsnt) implementação.Dado amplo vazio ciclos sou capaz de escrever um script em Perl que iria fazer o que, o algoritmo não é complexo, mas ele precisa ser feito.

Eu imagino que há algumas pessoas que precisavam de tais informações e resolvido esse problema.Assim, eu acho que deve ser prontamente disponíveis (open source / free) ferramenta para isso.

Foi útil?

Solução

Para determinar quais marcas se aplicam a um determinado uso do arquivo:

cvs log <filename>

Esta será a saída de todas as versões do arquivo e quais tags foram aplicadas para a versão.

Para determinar quais arquivos são incluídos em uma única marca, a única coisa que posso pensar é usando a tag e ver quais arquivos voltar.O comando para isso é qualquer um:

cvs update -r <tagname>
cvs co <modulename> -r <tagname>
cvs export <modulename> -r <tagname>

Outras dicas

A lista de tags de um ficheiro pode-se também fazer:

cvs status -v <file>

o método citado acima não funcionou para mim

cvs -p rdiff -s -D 2000-01-01 -r yourTagName

no entanto depois de um monte de gracinha eu já perceberam que

cvs -p rdiff -s -D 2000-01-01 -r yourTagName ModuleName

funciona

Você não precisa fazer um verdadeiro check-out.Você pode usar a opção-n para apenas simular este:

cvs -n co -rTagName ModuleName

Isto irá dar-lhe os nomes de todos os arquivos marcados TagName no módulo Módulo.

O comando a seguir fornece uma lista de arquivos que estão na tag "yourTagName".Os arquivos são marcados como nova, revisão de informações em "yourTagName".

Este comando faz uma comparação entre 2000-01-01 e sua marca, sinta-se livre para usar outra data que for anterior.

cvs -q rdiff -s -D 2000-01-01 -r yourTagName

Eu não sei de qualquer ferramenta que o pode ajudar, mas se você estiver escrevendo seu próprio país, eu posso salvá-lo de um headace:Diretórios CVS não pode ser tagget.Apenas os arquivos dentro deles tem tags (e que é o que determina o que é check-out quando você check-out de um diretório em uma tag específica).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top