Question

Jusqu'à récemment, nous utilisons SVN pour tous les projets de notre studio web, et il y a une caractéristique très pratique présente dans plusieurs clients comme Subversive et TortoiseSVN qui peuvent extraire tous les fichiers qui ont été modifiés dans une certaine révision.

Est-il possible de le faire en Mercurial? Je ne me soucie pas si cela se fait via une interface graphique ou une ligne de commande, il est juste très pratique d'avoir un ensemble de fichiers qui ont été modifiés dans un certain changeset.

P.S. Je dois avoir mis mal la première fois. J'ai besoin plus que juste une liste de fichiers, ce serait génial d'avoir tous les fichiers exportés vers un autre dossier.

Était-ce utile?

La solution

Miser sur la réponse de Jérôme cela, vous obtiendrez les copies des fichiers qui a changé dans la révision 4:

hg archive --type files --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles

Cela met tous les fichiers qui ont changé en révision de quatre dans un répertoire nouvellement créé sous le nom changedfiles dans votre répertoire personnel.

Si vous modifiez à:

hg archive --type zip --rev 4 -I $(hg log -r 4 --template {files} | sed 's/ / -I /g') ~/changedfiles.zip

ils apparaissent dans une archive zip.

Il convient de noter que cela ne fonctionne que si vous avez pas d'espaces dans les noms de fichiers. Si vous avez fait cette erreur alors nous aurons besoin d'utiliser hg status --print0 -r revision -r parent-of-revision à la place, mais nous espérons que n'est pas nécessaire.

Notez également que le numéro de révision, « 4 » dans notre exemple, montre deux fois. Le tout pourrait très facilement être enveloppé dans un script shell, et ce serait paramétrés afin que vous n'avez pas à vous rappeler de le changer dans les deux endroits.

Autres conseils

Cela vous donne la liste des fichiers modifiés dans la révision 4:

hg log -r 4 --template {files}

Mise à jour: Si vous souhaitez avoir un fichier par ligne, vous pouvez utiliser le style décrit dans le livre de mercure .

En fonction de votre ned, il y a deux commande:

  1. Pour obtenir les changements associés à une révision particulière, vous pouvez utiliser hg export:

    hg export -r 23
    

Cela va générer une diff de tous les changements (en fait un patch formaté, prêt à être appliqué)

  1. Pour obtenir le nom de tous les fichiers qui ont été touchés, vous pouvez utiliser hg log:

    hg log -r 23 -v
    

imprimera la méta-information pour la révision, ainsi que les noms des fichiers qui ont été touchés.

Cette commande sorties des noms de tous les fichiers modifiés dans une version spécifique:

hg export revision_num | grep ^diff | cut -f 6 -d ' '
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top