En utilisant Mercurial, existe-t-il un moyen simple de comparer ma copie de travail avec le fichier de conseil dans le référentiel distant par défaut

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

Question

Lors de l'utilisation de mercurial, j'aimerais pouvoir comparer la copie de travail d'un fichier avec le fichier de conseil dans mon référentiel distant par défaut. Y a-t-il un moyen facile de faire cela?

Je sais que je peux faire un " hg incoming -p " pour voir les correctifs qui arrivent, mais ce serait bien de voir directement les changements réels pour un fichier particulier que je recevrais si je tirais les dernières informations (ou ce que je pourrais être sur le fait de pousser out).

La chose la plus simple à laquelle je puisse penser maintenant est de créer un petit script qui examine l'emplacement par défaut dans .hg / hgrc et télécharge le fichier en utilisant curl (s'il est sur http, sinon scp sur ssh ou faites simplement un diff direct s’il s’agit du système de fichiers local) puis différez la copie de travail ou le conseil par rapport à cette copie temporaire.

J'essaie de vendre Mercurial à mon équipe, et l'un des membres de mon équipe l'a présentée aujourd'hui comme quelque chose qu'ils peuvent faire facilement dans SVN avec leurs outils d'interface graphique.

Était-ce utile?

La solution

Après quelques recherches, je suis tombé sur la extension Rdiff qui fait l'essentiel de ce que Je le veux.

Cela ne vient pas avec mercurial, mais il peut être installé en clonant le référentiel:

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

Puis modifiez votre fichier ~ / .hgrc pour charger l’extension:

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

C’est un peu bizarre en ce sens qu’il modifie en réalité l’actuel " hg diff " commande en détectant si le premier paramètre est une URL distante. Si c'est le cas, ce fichier sera comparé à votre fichier de conseil dans votre dépôt local (pas la copie de travail). Ceci étant donné que le dépôt à distance est le premier dans les arguments, c'est l'inverse de ce à quoi je m'attendais, mais vous pouvez passer "- reverse". à la commande hg diff pour changer cela.

Je pouvais voir qu'il s'agissait d'améliorations potentielles de l'extension, mais pour le moment, je peux les contourner avec une fonction shell bash / zsh dans mon fichier starup. Il effectue un enregistrement temporaire de ma copie de travail (détenue par la transaction mercurial afin qu'elle puisse être annulée), exécute le différentiel inversé, puis annule la transaction pour rétablir les éléments tels qu'ils étaient:

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

Puis appelez-le avec:

hgrdiff <filename to diff against remote repo tip>

Autres conseils

Vous pouvez essayer de créer localement deux référentiels: un pour les documents entrants et un pour les documents sortants. Ensuite, vous devriez être capable de faire des différences avec tous les outils. Voir ici:

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

pour développer la méthode Lars (pour une raison quelconque, le commentaire ne fonctionne pas), vous pouvez utiliser l'option -R de la commande diff pour référencer un référentiel local. De cette façon, vous pouvez utiliser la même application de diff que celle que vous avez spécifiée dans hg

.

À l'aide de modèles, vous pouvez obtenir une liste de tous les fichiers modifiés:

hg incoming --template {files}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top