Ce qui suit est un exemple de fusion entre deux fichiers non apparentés "a" et "b".
Veuillez noter que j'utilise abusivement un format de liste parce que je n'arrive pas à comprendre comment utiliser ce système. Les lignes qui semblent être des en-têtes mais qui commencent comme "summary:" sont en réalité sorties de hg et se trouvent être la dernière ligne avant une ligne vide. Tous les autres en-têtes sont mes propres commentaires expliquant une commande/séquence et sa sortie. Les commandes apparaissent en ligne avec 'timeless-mbp: ... $'. Toutes les autres lignes sont sorties.
Configuration
timeless-mbp:~ timeless$ cd /tmp
timeless-mbp:tmp timeless$ rm -rf q
timeless-mbp:tmp timeless$ hg init q
timeless-mbp:tmp timeless$ cd q
Définir mon nom d'utilisateur
timeless-mbp:q timeless$ echo '[ui]' > .hg/hgrc
timeless-mbp:q timeless$ echo 'username = timeless' >> .hg/hgrc
d'abord créer, ajouter et engager fichier un
timeless-mbp:q timeless$ echo a > a
timeless-mbp:q timeless$ hg commit -Am a
adding a
Démarrer à une nouvelle révision de zéro (null)
timeless-mbp:q timeless$ hg up -r null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Créer, ajouter et COMMIT fichier b
timeless-mbp:q timeless$ echo b > b
timeless-mbp:q timeless$ hg commit -Am b
adding b
created new head
Revenez à notre premier fichier, ceci est juste pour créer une histoire version entrelacée
timeless-mbp:q timeless$ hg up -r 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Renommer un à fichier parce que nous voulons fusionner avec b sous le nom de « fichier »
timeless-mbp:q timeless$ hg mv a file
timeless-mbp:q timeless$ hg commit -m 'rename a to file'
Revenez à notre deuxième fichier, ceci est juste pour créer une histoire version entrelacée
timeless-mbp:q timeless$ hg up -r 1
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Renommer b pour le fichier parce que nous voulons fusionner avec un sous le nom de « fichier »
timeless-mbp:q timeless$ hg mv b file
timeless-mbp:q timeless$ hg commit -m 'rename b to file'
Je forcer une fusion à l'aide interne parce que je ne veux pas un outil de fusion pour pop up, il existe d'autres outils de fusion que vous pourriez utiliser (par exemple sur OS X avec les versions modernes de Mercurial, il a tendance à afficher FileMerge.app, mais c'est difficile à afficher dans un journal).
timeless-mbp:q timeless$ hg --config ui.merge=internal:local merge 2
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
Remplacez le contenu de ce que je veux
timeless-mbp:q timeless$ hg cat -r 2 file > file
timeless-mbp:q timeless$ hg cat -r 3 file >> file
Vérifiez qu'il a maintenant le contenu que je veux
timeless-mbp:q timeless$ cat file
a
b
Commit le fichier "fusionné"
timeless-mbp:q timeless$ hg commit -m merging
Consulter l'historique du référentiel
timeless-mbp:q timeless$ hg log
changeset: 4:d9d3d23ec1cc
tag: tip
parent: 3:01c6a61cbe04
parent: 2:3de70df713a7
user: timeless
date: Wed Jun 02 16:10:08 2010 +0300
summary: merging
changeset: 3:01c6a61cbe04
parent: 1:e6b8058965b4
user: timeless
date: Wed Jun 02 16:09:43 2010 +0300
summary: rename b to file
changeset: 2:3de70df713a7
parent: 0:635f50240100
user: timeless
date: Wed Jun 02 16:09:30 2010 +0300
summary: rename a to file
changeset: 1:e6b8058965b4
parent: -1:000000000000
user: timeless
date: Wed Jun 02 16:09:17 2010 +0300
summary: b
changeset: 0:635f50240100
user: timeless
date: Wed Jun 02 16:09:01 2010 +0300
summary: a
Vérifier annoter sortie
timeless-mbp:q timeless$ hg ann -f -c file
635f50240100 a: a
e6b8058965b4 b: b
Quelle commande montre que le nouveau fichier est dérivé des deux fichiers précédents? –
Je ne sais pas que l'on peut facilement le faire à partir de la ligne de commande. Peut-être que l'invocation de 'hg log --follow' pourrait le faire. L'argument --follow dit "suivre renomme dans le temps" ce qui explique pourquoi les hggreps ont trouvé des trucs à partir de fichier1 et de fichier2. –
Eh bien, même si je ne pouvais pas travailler 'hg' pour montrer réellement la fusion ou le changement de nom dans son journal, c'est la solution facile que je recherchais. –