2009-07-21 6 views
2

J'utilise Mercurial et j'essaie de fusionner les changements dans mon dépôt principal. Certains de ces fichiers dans mon dépôt principal sont protégés en écriture. Cela fait échouer la commande hg merge avec un abort: Access is denied.Comment faire pour que mercurial génère une liste de fichiers qui seront affectés par une fusion?

Je veux que les fichiers qui seront affectés par la fusion soient inscriptibles, et seulement ces fichiers (pas tout le repo). Existe-t-il un moyen de rendre Mercurial imprimer une liste de ces fichiers qui doivent être résolus?

(PS. Ils sont inscriptibles parce qu'ils sont contrôlés par Perforce. Les raisons de cette configuration sont çela trop bête pour se rapporter ici.)

Répondre

1

Je ne sais pas d'aucune façon intégrée pour faire ceci facilement ... ce n'est pas un besoin très commun. Une extension pourrait presque certainement être écrite pour ajouter une option --dry-run à hg merge tout comme hg revert option --dry-run.

Si vous voulez juste quelque chose de rapide et sale, peut-être quelque chose comme ça fonctionnerait?

hg merge -Pv | grep files | sed -e's/files:\s*//' -e's/\s/\n/g' | sort | uniq 

Cela suppose que vous ne disposez pas des fichiers avec des espaces dans leur nom ou toute autre chose tout à fait raisonnable comme ça ...

+0

Eh bien, heureusement, je n'ai pas de noms de fichiers avec des espaces, donc cela a très bien fonctionné! Merci! –

3

Une meilleure façon de le faire est hg --config ui.merge=internal:fail merge, qui produire un résumé comme ceci:

hg --config ui.merge=internal:fail merge 

[...] 

1 files updated, 0 files merged, 0 files removed, 1 files unresolved 

Ensuite, utilisez hg update -C . pour récupérer votre espace de travail.

Questions connexes