Pergunta

Eu estou usando CVS no Windows (com o front-end WinCVS), e gostaria de adicionar detalhes do último check-in para o e-mail do nosso processo de compilação automatizada, sempre que uma compilação falhar, a fim de facilitar a correção.

Eu preciso saber os arquivos que foram alterados, o usuário que eles mudaram, e o comentário.

Eu estive tentando descobrir as opções de linha de comando, mas nunca parecem obter resultados precisos (quer obter muitos resultados ao invés de apenas de um check-in, ou detalhes de alguns verificação aleatória em de duas semanas atrás)

Foi útil?

Solução

Wow.

Eu tinha esquecido como isso é difícil de fazer. O que eu tinha feito antes era um processo de dois estágios.

Em primeiro lugar, correndo

cvs history -c -a -D "7 days ago" |
    gawk '{ print "$1 == \"" $6 "\" && $2 == \"" $8 "/" $7 "\" { print \"" $2 " " $3 " " $6 " " $5 " " $8 "/" $7 "\"; next }" }' > /tmp/$$.awk

para reunir informações sobre todos os checkins nos últimos 7 dias e para gerar um script que seria usado para criar uma parte do e-mail que foi enviado.

Eu, então, arrastão na CVS / arquivo de entradas no diretório que continha o arquivo quebrado (s) para obter mais informações.

Mungeing os dois juntos me permitiu a dedo o culpado e enviar um email para eles notificando que they'de quebrado a compilação.

Lamentamos que esta resposta não é tão completo como eu esperava.

Outras dicas

CVS não agrupar conjuntos de alterações, como outros sistemas de controle de versão fazer; cada arquivo tem o seu próprio, número da versão independente e história. Esta é uma das deficiências no CVS que leva as pessoas a mover-se para um VC mais recente.

Dito isto, existem maneiras que você pode realizar seu objetivo. O mais fácil poderia ser a de adicionar um gancho post-commit para enviar e-mail ou registrar em um arquivo. Então, pelo menos, você pode agrupar um conjunto de commits juntos, olhando para o tempo os e-mails são enviados e que fez a alteração.

CVS não fornece esta capacidade. Você pode, no entanto, fazê-lo através da compra de uma licença para FishEye ou possivelmente usando CVSTrac (nota: Eu não tentei CVS Trac).

Ou você poderia migrar para SVN, que prevê essa capacidade via commits atômicas. Você pode verificar em um grupo de arquivos e tê-lo contar como um único cometer. No CVS, cada arquivo é um separado comprometer não importa o que você faz.

Nós fizemos este script através de um perl que despeja o changelog e você pode obter uma versão gratuita do perl para Windows no segundo link.

Cvs2Cl roteiro

ativo Perl

Eu uso loginfo em CVSROOT e escrever essa informação para um arquivo

http://ximbiot.com/cvs/manual /cvs-1.11.23/cvs_18.html#SEC186

Will "cvs história -a -l" chegar perto? Shows para todos os usuários último evento por projeto ...

cometer IDs que você pode usar no lugar de Tag em comandos de log, checkout ou update. Cada conjunto de arquivos comprometidos (commits são atômicas em CVSNT) recebe o seu próprio ID único. Você apenas tem que determinar a commitid do último check-in de arquivos via cvs log primeiro (você pode restringir a saída via-d "1 hora atrás" ou similar) e, em seguida, consulta que outros arquivos têm que ID.

Eclipse tem changesets construído em. Você pode navegar as últimas alterações (pelo menos mudanças de entrada aka atualizações) por cometer. Ele faz isso através do agrupamento de commits por autor, cometer mensagem e semelhantes timestamps.

Isso também funciona para "Comparar com / outro ramo ou Version", onde você pode escolher branches, tags e datas. Olhar Através da exibição de ícones de sincronização para um menu pop-up com "conjuntos de mudanças" e veja por si mesmo.

Edit: Isso exigiria a mudança para Eclipse, pelo menos, como um espectador, mas, dependendo da freqüência que você precisa para comparar e grupo pode não ser tão ruim. Se você não quiser usar mais - uso Eclipse apenas para CVS. Deve ser possível até obter um tamanho cliente cvs gráficas decente através do RCP com todos os plugins, mas this'd ser definitivamente fora do escopo ...

Não é este um problema resolvido? Eu acho que qualquer uma das várias ferramentas na CI Matrix que suporta notificações CVS e-mail poderia fazer isso por você.

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