Pergunta

No CVS, a minha cópia de trabalho (WC) é sobre um determinado ramo (que chamaremos de "foo"). Houve outras alterações verificados em foo por outro dev. Eu quero fazer uma comparação entre o meu WC eo estado a montante do foo. Normalmente, quando se trabalha no tronco (HEAD), eu só faço um diff cvs, e isso é bom. Mas por alguma razão ao fazer um cvs simples diff no ramo, o diff está vazio. Quando tento usar "cvs diff -r foo", os shows diff-se, mas é invertida -. Adições a montante são mostrados com desvantagens, e as remoções a montante são mostrados com vantagens

Como posso quer: (1) get CVS para diff "o outro lado" (mais de adições a montante), ou (2) invertido um patch (em geral)

Foi útil?

Solução

Se o principal objetivo deste é verificar "o que é acima" no repo central, eu sugiro que você obter-se um funcional espectador CVS / navegador / web coisinha onde você pode navegar e ver as últimas alterações antes de atualizar. Mas, supondo que tudo que você tem é de linha de comando CVS, vou tentar dar-lhe uma solução de qualquer maneira:)

Então, o que temos aqui é uma foo ramo que passou de A -> B, onde B é o estado do ramo (no servidor) após check-in do outro desenvolvedor, e A é o estado que você última actualização seu trabalho copiar.

Quando apenas fazendo um cvs diff planície nesta situação, você verá suas alterações locais em comparação com A desde A é o que você fez check-out. O estado CVS local irá mostrar que cada arquivo vem da revisão A no ramo foo, e ao comparar com o seu cliente CVS irá baixar essa revisão a partir do servidor. No seu caso eu estou supondo que você não tem alterações locais desde a sua cvs diff está vazio.

Então, quando você faz uma cvs diff -r foo você está diffing seu A local (ou A + muda) contra foo do servidor (que atualmente está no B) - e as mudanças necessárias para começar a partir B do servidor para o seu A+changes é exatamente o oposto de check-in do outro desenvolvedor, além de suas próprias mudanças locais.

Agora, se você realmente quer saber como B (ou a ponta-de-foo) compara a uma (a versão primitiva de tudo o que você tem atualmente check-out), o que eu acho que você tem a fazer é definir uma etiqueta na sua cópia de trabalho, então diff essa marca contra o estado do ramo. Algo parecido com isto:

cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1

Outras dicas

Talvez o que você quer pode ser feito usando interdiff do pacote patchutils.

muitas vezes eu usá-lo esta maneira de ver o que mudou no tronco para um determinado arquivo:

cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null

Você pode tentar exportar um arquivo do ramo a algum arquivo temporário e, em seguida, fazer diff entre a sua cópia de trabalho e este arquivo temporário. Parece ser a maneira mais fácil.

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