Usando Mercurial, há uma maneira fácil de diff minha cópia de trabalho com o arquivo de ponta no repositório remoto padrão

StackOverflow https://stackoverflow.com/questions/156280

Pergunta

Ao usar o mercurial, eu gostaria de ser capaz de diff a cópia de trabalho de um arquivo com o arquivo de ponta no meu padrão remoto repositório. Existe uma maneira fácil de fazer isso?

Eu sei que posso fazer um "hg entrada -p" para ver os conjuntos de patches de mudanças chegando, mas seria bom apenas para ver diretamente as mudanças reais para um determinado arquivo que eu ganho se eu fizer um puxão das últimas coisas (ou o que eu poderia estar sobre pressão put out).

A coisa mais fácil que eu posso pensar agora é criar um pequeno script que lança um olhar sobre o local padrão no .hg / hgrc e baixa o arquivo usando curl (se é sobre http, caso contrário scp-lo sobre ssh, ou basta fazer uma diff direta se é no sistema de arquivos local) e depois para diff a cópia de trabalho ou a ponta contra a cópia temporária.

Eu estou tentando vender mercurial à minha equipe, e um dos membros da minha equipe trouxe este até hoje como algo que eles são capazes de fazer facilmente em SVN com suas ferramentas GUI.

Foi útil?

Solução

Depois de algumas escavações, me deparei com a rdiff extensão que faz mais do que Eu quero que ele.

Ele não vem com mercurial, mas pode ser instalado por clonagem do repositório:

hg clone http://hg.kublai.com/mercurial/extensions/rdiff 

E então modifing seu arquivo ~ / .hgrc para carregar a extensão:

[extensions] 
rdiff=~/path/to/rdiff/repo/rdiff.py

É um pouco peculiar em que ele realmente modifica o comando existente "hg diff", detectando se o primeiro parâmetro é uma URL remota. Se for, então ele vai diff esse arquivo contra o arquivo de ponta em sua repo local (não a cópia de trabalho). Esta como o repo remoto está em primeiro lugar os argumentos, é o contrário do que eu esperava, mas você pode passar "--reverse" para o comando hg diff para mudar esta situação.

Eu podia ver sendo estes melhoramentos potenciais para a extensão, mas por agora, eu posso trabalhar em torno deles com uma função de shell bash / zsh no meu arquivo starup. Ele faz um check-in temporário da minha cópia de trabalho (realizado pela transação mercurial para que possa ser revertida), executa o diff inversa, e depois rola a volta transação para devolver as coisas voltem a ser como eram:

hgrdiff() {
    hg commit -m "temp commit for remote diff" && 
    hg diff --reverse http://my_hardcoded_repo $* &&
    hg rollback      # revert the temporary commit
}

E, em seguida, chamá-lo com:

hgrdiff <filename to diff against remote repo tip>

Outras dicas

Você poderia tentar ter dois repositórios localmente - um para material de entrada, e outra para saída. Então você deve ser capaz de fazer diff com quaisquer ferramentas. Veja aqui:

http://weblogs.java.net/blog /kohsuke/archive/2007/11/using_mercurial.html

para expandir método Lars (por alguma razão comentário não funciona), você pode usar a opção -R no comando diff para fazer referência a um repositório local. Dessa forma, você pode usar a mesma aplicação diff que você especificou dentro hg

Usando modelos que você pode obter uma lista de todos os arquivos alterados:

hg incoming --template {files}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top