ce repo trivial Tenir compte:Dans mercurial, comment voir diff entre dans un changeset de fusion et un parent sans changements de l'autre parent?
mkdir temp
cd temp
hg init
echo abc > file1
hg ci -A -m init
echo def >> file1
echo hey > file2
hg ci -A -m A
hg up -r0
echo ghi >> file1
echo hey > file3
hg ci -A -m B
hg merge
hg ci -m merge
Au cours de fusion, prendre "GHI" (ne compte pas vraiment de quel côté).
Le DAG est:
0 - 2 - 3
\- 1 -/
hg diff -r1:3
montre Fichier1 changer et de nouvelles file3.
hg diff -r2:3
affiche le nouveau fichier2. Idem pour hg log -p -r3
et hg st --change 3
, car 2 est le premier parent.
Ma question est: comment puis-je voir les changements entre 1 et 3 moins les changements dans 2, qui est conceptuellement d(1:3) - d(0:2)
?
Je m'attends à voir seulement le changement de fichier1. hg log -r3 -v
montre seulement "files: file1" (je suppose que c'est le seul fichier dans le ctx de changement), mais curieusement, hg log -r3 --debug
montre également "files +: file2".
Si j'exécute hg view
(fourni par l'extension hgk
fournie) et que vous cliquez sur r3, cela affiche uniquement fichier1. Je ne peux pas lire le code tcl/tk, mais il semble que l'astuce est dans une fonction contmergediff
où il obtient la liste des fichiers dans une fusion, dans lequel il omet en quelque sorte file2. FWIW, TortoiseHg est différent de tout ce qui précède: cliquer sur r3 affiche "M file1" et "A file2" dans la liste des fichiers, mais ne montre aucun changement réel dans file1. Cliquez sur "Autre Parent" montre "M fichier1" et "A fichier3", qui est le même que "diff -r1: 3". Un cas d'utilisation dans le monde réel est le suivant: r1 est à moi, et r2 est un collègue. Plus tôt, le collègue a examiné r1 (diff 0: 1), mais il ne l'a pas fusionné avant de demander la révision de r2. J'ai donc passé en revue r2 (diff 0: 2), et plus tard il a fait la fusion. Puis quand je vois diff 1: 3, je dois oublier que j'ai déjà examiné r2. Si le diff de fusion est petit, je peux juste utiliser hgk. Mais si c'est gros, j'ai vraiment besoin de le voir dans vdiff.
(MISE À JOUR) Il existe maintenant un mergediff extension. Si quelqu'un essaie et trouve le travail, s'il vous plaît ajouter une réponse.
Pour mieux comprendre votre cas d'utilisation, vous voulez voir ce que votre collègue a fait avec * vos * changements (rev.1) lors de la fusion? –
@Oben Sonne: exactement, et symétriquement, ce qu'il a dû changer ses trucs pour la fusion. Depuis que je sais ce qui est 0: 1, et ce qui est 0: 2, je veux seulement voir le changement réel entre 1: 3 et 2: 3, mais hg diff 1: 3 comprend 0: 2 et 2: 3 comprend 0: 1. –