Je déplace un processus de construction pour utiliser mercurial et je souhaite ramener le répertoire de travail à l'état de la dernière révision. Les exécutions précédentes du processus de construction auront modifié certains fichiers et ajouté des fichiers que je ne veux pas valider, donc j'ai des modifications locales et des fichiers qui ne sont pas ajoutés au référentiel.
Quel est le moyen le plus simple de supprimer tout cela et d'obtenir un répertoire de travail propre contenant la dernière révision?
Actuellement, je fais ceci:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
mais il semble qu'il devrait y avoir un moyen plus simple.
Je veux faire l'équivalent de la suppression du dépôt, faire un nouveau clone et une mise à jour. Mais le repo est trop gros pour que cela soit assez rapide.
hg update 00
), puis que vous ne reveniez à la pointe. Pourquoi nehg revert --all
suffit-il pas de revenir à un état de dossier de travail cohérent avant l'extraction et la mise à jour?archive
commande utile dans le futur. Par exemple, vous pourriezhg archive ../newbuild
, et un instantané de votre référentiel au dernierhg update
sera placé là. Je fais généralement cela pour les builds nocturnes juste pour ne pas risquer d'encombrer mon repo. Supprimez simplement le répertoire de construction lorsque vous n'en avez plus besoin.Réponses:
Ces étapes devraient pouvoir être réduites à:
L'
-C
indicateur indique à la commande de mise à jour d'annuler toutes les modifications locales avant la mise à jour.Cependant, cela peut laisser des fichiers non suivis dans votre référentiel. Il semble que vous souhaitiez vous en débarrasser également, alors j'utiliserais l'
purge
extension pour cela:Dans tous les cas, il n'y a pas une seule commande que vous pouvez demander à Mercurial d'exécuter qui fera tout ce que vous voulez ici, sauf si vous changez le processus pour cette méthode de "clonage complet" que vous dites ne pas pouvoir faire.
la source
hg --config "extensions.purge=" purge --all
hg purge --all
vient de me donner un bon mal de tête, car il a également effacé mes configurations locales, c'est-à-dire: utilisateur / mot de passe de la base de données, etc. :)Cela supprimera toutes les modifications et mettra à jour la dernière tête de la branche actuelle.
Et vous pouvez activer l' extension de purge pour pouvoir également supprimer tous les fichiers non versionnés.
la source
hg purge
est pour les fichiers non versionnés.Pour supprimer non suivi sur * nix sans l'extension de purge, vous pouvez utiliser
Qui utilise
la source
Si vous recherchez une méthode simple , essayez-la.
Pour ma part, je peux à peine me souvenir des lignes de commande pour tous mes outils, j'ai donc tendance à le faire en utilisant l'interface utilisateur:
1. Sélectionnez d'abord "commit"
2. Ensuite, affichez les fichiers ignorés. Si vous avez des modifications non validées, masquez-les.
3. Maintenant, sélectionnez-les tous et cliquez sur "Supprimer les versions non versionnées".
Terminé. C'est une procédure qui est beaucoup plus facile à retenir que les éléments de ligne de commande.
la source
hg status vous montrera tous les nouveaux fichiers, puis vous pourrez simplement les rm .
Normalement, je veux me débarrasser des fichiers ignorés et non versionnés, donc:
Et puis suivez cela avec:
qui met tous les fichiers versionnés dans le bon état pour la révision xxxx
Pour suivre la tradition de Stack Overflow de vous dire que vous ne voulez pas faire cela, je trouve souvent que cette «option nucléaire» a détruit des choses qui me tiennent à cœur.
La bonne façon de le faire est d'avoir une option «make clean» dans votre processus de construction, et peut-être aussi «make reallyclean» et «make distclean».
la source