Mercurial - voir la liste des fichiers qui doivent être fusionnés manuellement?
Est-il un Mercurial commande que vous pouvez utiliser après un hg pull
pour voir une liste de tous les fichiers doivent être fusionnés manuellement (c'est à dire: qui ont des conflits), lors d'une hg merge
?
- Je sais, ça fait presque un an, mais je viens de réaliser que ma réponse n'était pas tout à fait bon pour votre question. J'ai mis à jour pour une réponse qui pourrait être satisfaisante.
Vous devez vous connecter pour publier un commentaire.
hg resolve --list
De la la documentation:
Modifier 5 Janvier 2012:
(J'ai reçu un vote pour cette réponse aujourd'hui, j'ai donc revu. J'ai découvert que j'ai mal compris la question.)
La question est: "j'ai effectué un pull à partir d'un dépôt distant et n'ont pas encore effectué une fusion. Puis-je voir ce que les conflits seront créés lors de l'exécution de la fusion?"
Ma réponse ci-dessus est clairement erroné. Après la lecture par le biais liés à la documentation, je ne pense pas qu'il y est une méthode intégrée pour le faire. Cependant, il y a un moyen de le faire sans ruiner votre arbre des sources.
Supposons que vous avez cloné référentiel Un à partir d'une certaine distance de la source au dépôt B sur votre système local, c'est à dire
hg clone http://hg.example.com/A B
. Après cela, vous apportez des modifications à votre dépôt local, B, qui impliquent au moins un commit. Dans l'intervalle, des modifications ont été apportées au référentiel Un de sorte que lorsque vous faites une traction, vous obtenez un message indiquait nouvelles révisions ont été ajoutés et les têtes ont été créés.À ce stade, vous pouvez faire
hg heads
de la liste les deux révisions qui seront impliqués dans un processus de fusion. À partir de cette information, vous pouvez émettre une commande d'état d'énumérer les différences entre les chefs. En supposant que le numéro de révision du référentiel B, selon les têtes de liste, sont des "1" et "2", alors vous pouvez fairehg status --rev 1:2
pour voir une liste des modifications.Bien sûr, ce n'est pas vraiment vous dire si les conflits se produire lorsque vous effectuez une opération de fusion. Puisqu'il n'y a pas une commande qui va vous montrer cela, vous aurez à "aperçu" de la fusion par clonage d'un nouveau référentiel et faire la fusion de là. Donc,
hg clone B C && cd C && hg merge
. Si vous êtes satisfait avec le résultat de cette fusion que vous pouvez fairehg com -m 'Merging complete' && hg push && cd ../&& rm -rf C
.C'est un peu le processus, mais il maintient votre source de courant arbre propre si la fusion s'avère être un désastre. Vous pouvez également trouver des cette description de travail avec les dépôts publics utile.
Si je ne me méprise moi-même, les réponses ci-dessus ne semblent pas répondre à la question qui je pense est demandé: j'ai deux branches dans mon référentiel que j'aimerais fusionner, et je veux savoir ce que les conflits vont venir (par exemple, avant de marcher à travers les résolutions de conflits, un par un.)
Pour ce faire, je voudrais fusionner avec le
:merge3
outil (qui tente de fusionner automatiquement, mais laisse les conflits non résolus) et ensuite utiliserhg resolve --list
— ou tout simplement chercher à la sortie de la commande de fusion — pour voir les conflits.Si vous n'avez pas réellement envie de les fusionner à la fin (si vous voulez juste pour voir ce qui serait en conflit), vous pouvez exécuter
hg update -C
par la suite à l'annulation de la fusion.Si vous ne souhaitez terminer la fusion, vous pouvez exécuter
hg resolve <filepath>
pour chaque fichier, ou tout simplementhg resolve --all
à l'étape à travers tout ce qui reste avec les conflits, avant de voushg commit
la révision de la fusion.Vous pouvez utiliser le --rev option de hg stat avec une paire de révisions pour voir ce fichier existe des différences entre les deux. Voir ci-dessous pour un peu verbeux mais exemple détaillé:
Nous avons d'abord commencer par faire un nouveau référentiel:
Puis ajouter un fichier unique appelé
foo.txt
pour le nouveau référentiel:Maintenant ajouter un second fichier, appelé
bar.txt
que de la révision 1:Revenir à la révision 0, et ajouter un troisième fichier, sur un autre tête. Ceci est fait pour simuler une pull de quelqu'un d'autre qui avait cloné le même référentiel, à son départ de révision:
Maintenant, vous pouvez utiliser hg stat pour voir ce fichier existe des différences entre les paires de révisions, par exemple, les changements de rev 0 rev 1 ajoutée "bar.txt" pour la liste des fichiers:
Les changements de rev 0 à rev2 ajoutée "koko.txt" pour la liste des fichiers:
Mais plus intéressant encore, les changements de rev 1 rev 2 impliquent deux fichier manifeste des changements. (1) 'koko.txt" a été ajouté dans la version 2, et (2) 'bar.txt" existe dans la version 1, mais manquant de rev 2, de sorte qu'il s'affiche comme un "enlevé" fichier:
Je pense que
hg status
est ce que vous cherchez.Vous voudrez peut-être lire ce chapitre à partir Mercurial: The Definitive Guide
http://hgbook.red-bean.com/read/mercurial-in-daily-use.html