2010-07-27 7 views
1

J'ai rejoint une équipe avec du code Greenfield. Quand je me suis joint, ils n'avaient pas de référentiel commun, et ils m'ont envoyé une archive de son dernier email. (oui, je sais ...) J'ai travaillé sur cette archive, en apportant des modifications et en ajoutant des fichiers. Maintenant, l'équipe a un référentiel Mercurial (hourra!), Et il a été rempli avec le même code contenant des changements plus récents par d'autres personnes. En d'autres termes, j'ai le code tarballed original dans le répertoire, mes changements dans un autre répertoire, et un clone hg dans un troisième répertoire, où le code tarball d'origine est l'ancêtre commun.Comment utiliser Mercurial pour fusionner les modifications effectuées en dehors du référentiel?

Quel est un bon moyen de fusionner mes modifications dans le référentiel Mercurial? Mercurial n'a pas d'histoire de l'ancêtre commun. Je suis tout nouveau à Mercurial. Mon expérience VCS est avec CVS, Perforce, et certains SVN. Puis-je créer deux autres clones hg locaux et réécrire un avec le code original, l'autre avec mon code modifié, et utiliser Mercurial pour les fusionner d'une manière ou d'une autre? (et si oui, comment?) Ou devrais-je envisager d'utiliser un outil de fusion indépendant, puis de copier la version fusionnée dans le répertoire de mon clone? Ou autre chose?

Tout cela est sur Linux RHE.

Merci.

Répondre

1

Une option est d'essayer quelque chose comme ceci:

diff -urN your-original-tarball your-current-code > mychanges.patch 
hg clone their-current-repo your-local-clone 
cd your-local-clone 
hg update -r 0 # go to their oldest item in history 
hg import --no-commit ../mychanges.patch 
# check it out, test, fix any rejected changes, etc. 
hg commit -m 'my changes' # <-- you'll be warned this creates new heads 
hg merge # merge your changes with their changes since they started using mercurial 
hg commit -m 'merged my solo work with yours' 

Cela prend tout votre travail à ce jour, l'importation comme un nouveau changeset basé sur la révision la plus ancienne ils ont, puis fusionner ce travail avec leur travailler dans mercurial depuis qu'ils ont commencé à l'utiliser.

Idéalement, leur r0 serait l'archive qu'ils vous ont donnée, mais un seul espoir n'est pas trop différent.

+0

Merci pour cette réponse; Je ne savais pas que vous pouviez importer un patch comme ça. Il s'avère que leur nouveau code a des changements significatifs par rapport à l'archive d'origine, et la structure du répertoire a quelques changements qui perturbent mon outil de comparaison. Je pense que je devrai utiliser un utilitaire de fusion indépendant fichier par fichier. * soupir * – jasper77

+0

déception. Mercurial lancera tout outil de fusion que vous lui apprendrez pour lancer http://mercurial.selenic.com/wiki/MergeToolConfiguration et vous pourrez utiliser 'hg resolve' entre les étapes 'hg merge' et 'hg commit' pour y travailler itérativement . –

Questions connexes