J'ai un référentiel mercurial personnel suivant certains changements que je travaille sur. J'aimerais partager ces changements avec un collaborateur, mais ils n'ont pas / ne peuvent pas devenir mercuriaux. J'ai donc besoin d'envoyer tout le fichier de fichiers et que le collaborateur fusionnera à sa fin. Je cherche un moyen d'extraire la version "Conseil" du sous-ensemble de fichiers modifiés entre deux numéros de révision. Y a-t-il un moyen de le faire facilement dans Mercurial? P>
9 Réponses :
À ma connaissance, il n'y a pas d'outil pratique pour cela (bien qu'un plug-in mercurial puisse être faisable). Vous peut em> exporter un correctif pour le fichier de fichiers, en utilisant HG Exporter à partir de: à CODE> (où et pour identifier les révisions.) Si vous avez vraiment besoin des fichiers entiers tels que vus sur la pointe, Vous pouvez probablement pirater quelque chose en fonction de la sortie de
HG DIFF -R -R de: à CODE>, qui génère une liste de fichiers avec des annotations sur le nombre de lignes changées, comme:
hg diff -r156:159 --stat | head - --lines=-1 | sed 's!|.*$!!' | xargs zip ../diffed.zip
Eh bien. En particulier, la commande GNU HG Extect $ Base: Conseil> Patch.Diff Code> produira un fichier de correctif standard, lisible par la plupart des outils. P>
PATCH CODE> peut appliquer tout le correctif sur les fichiers précédents. N'est-ce pas assez? Je ne vois pas pourquoi vous auriez besoin de l'ensemble des fichiers: pour moi, appliquer un patch semble plus facile que d'extraire des fichiers d'un zip et de les copier au bon endroit. plus em> si votre collaborateur a des changements locaux, vous les écraserez. Vous n'utilisez pas d'outil de contrôle de version pour forcer brutalement l'autre personne à fusionner manuellement em> les changements, non? Laissez
patch code> traite avec cela, honnêtement :) p>
Je conviens que l'envoi d'un diff est une bien meilleure idée. Il est tout simplement trop facile de perdre des changements lorsqu'une personne donne à une autre personne un ensemble de fichiers mis à jour (sous) mis à jour. Je me suis creusé à chaque fois que j'ai vu des fichiers entiers .java envoyé par courrier électronique dans mon emploi précédent.
Voici un petit script Bash laid et laids qui fera le travail, au moins si vous travaillez dans un environnement Linux. Cela n'a absolument aucun contrôle quoi de ce jour et sera probablement une pause probablement lorsque vous avez déplacé un fichier, mais c'est un début.
commande: p> code: p > #!/bin/sh
REV=$1
SRC_REPO=$2
DST_ZIP=$3
cd $SRC_REPO
FILES=$(hg status --rev $1 $SRC_REPO | cut -c3-)
IFS=$'\n'
FILENAMES=""
for line in ${FILES}
do
FILENAMES=$FILENAMES" \""$SRC_REPO"/"$line"\""
done
CMD="tar czf \"$DST_ZIP\" $FILENAMES"
eval $CMD
Le meilleur scénario des cas consiste à mettre la pression appropriée sur ces personnes pour obtenir la mercuriale, mais n'autorise qu'un patch est probablement meilleur qu'un ensemble zippé de fichiers, car le correctif suivra la suppression de la suppression et de la renommée. Si vous souhaitez toujours un fichier zip, j'ai écrit un script court qui fait un fichier zip: l'utilisation serait NameOfscript.py DuRevision Torevision Destination. Par exemple, Désolé pour la mauvaise interface de ligne de commande, mais hey le script n'a pris que 25 minutes pour écrire. P> nomofscript.py 45 51 c: \ mises à jour.zip code> p>
Je sais que vous avez déjà quelques réponses à celui-ci, mais un de mes amis avait un problème similaire et j'ai créé un programme simple dans vb.net pour le faire pour lui peut-être que cela pourrait aussi vous aider pour vous aussi, le PROG et A La copie de la source est au bas de l'article lié ci-dessous. P>
http://www.simianenterprises.co .uk / blog / mercurial-export-a changé-fichiers-80.html p>
Bien que cela ne vous permet pas de choisir une révision finale pour le moment, il serait très facile d'ajouter cela à l'aide de la source, mais il vous suffirait de mettre à jour la révision cible manuellement avant d'extraire les fichiers. Si nécessaire, vous pouvez même le modifier pour créer le zip au lieu d'un dossier de fichiers (qui est également agréable et facile à zip manuellement) p>
J'espère que cela vous aide à vous ou à quelqu'un d'autre qui veut cette fonctionnalité. P>
Je viens de contribuer une extension ici https://sites.google.com/ Site / Alessandronegrin / Pack-Mercurial-Extension P>
J'ai également apporté une extension, voir le Extension HGExportFiles sur BitBucket pour plus d'informations. L'extension des fichiers d'exportation fonctionne sur une gamme de révisions ou de révision donnée et crée l'ensemble des fichiers modifiés dans un répertoire spécifié. Il est facile de sélectionner le répertoire dans le cadre d'un script. P>
dans UNIX Ceci peut être fait avec:
-A code> pour ajouté des fichiers est manquant
J'ai rencontré ce problème récemment. Ma solution:
hg update null hg debugsetparents (starting revision) hg update (ending revision)
Quant à la raison pour laquelle je ne pouvais pas utiliser de patch: les révisions en question étaient principalement des fichiers binaires nouvellement créés, éparpillés dans tout le référentiel. Les correctifs reconstituent-ils correctement les fichiers binaires? Je ne sais pas, mais de cette façon était plus facile que de comprendre cela.