2010-01-14 4 views
3

Je voudrais tous les fichiers sous le dossier racine de repo sauf .hg /, .hgignore, .hgtags, etc. Existe-t-il une extension intégrée ou existante pour le faire?Existe-t-il une extension intégrée pour supprimer tous les fichiers "non-mercuriels" du répertoire racine du repos?

J'ai implémenté un script non-hg avec des "fichiers mercurial" de code dur, mais je voudrais une méthode programmatique pour exclure les fichiers liés mercurial. J'essaie de mettre en miroir un serveur de gestion de configuration non-mercurial (Starteam) en supprimant périodiquement tous les fichiers, en effectuant une extraction propre à partir de Starteam, puis en exécutant hg addremove, puis en cochant.

+0

Je pense qu'il est bon de supposer que tout fichier lié hg commencera par '.hg'. – tonfa

Répondre

3

Ce n'est pas exactement ce que vous cherchez, mais hg update -r null prend votre à la révision avant le premier changeset, qui ne contient évidemment pas de fichiers. Cela laissera votre .hg en place mais .hgtags et .hgignore seront partis. Cependant, ils sont suivis des fichiers afin qu'ils reviennent avec un hg update le même que tous les autres fichiers.

+0

Après la mise à jour à null je ne peux pas simplement vérifier tous les fichiers du serveur de cm non-mercurial et checkin puisque ceci créerait une nouvelle branche non reliée. S'il y avait une commande pour "mettre à jour une révision sans mettre à jour le répertoire de travail", alors cela fonctionnerait. Peut-être que j'ai besoin de reformuler la question? –

+0

Cette commande existe, elle est 'hg debugsetparent', mais je pense vraiment que ce que vous voulez faire est 'hg update -r null' suivi de 'hg update -r whateverrevisionyouwant' –

0

Pour chaque version que vous extrayez de Starteam, je suggère de créer un nouveau répertoire.

Dans ce répertoire, effectuez un hg clone -U à partir de votre répertoire précédent. Cela va cloner le dépôt, mais pas extraire les fichiers. Après quoi, copiez vos fichiers Starteam, puis faites un hg addremove.

+0

cela va créer une nouvelle branche pour chaque révision, ce n'est pas très utile. – tonfa

0

Copiez tout le contenu de Starteam dans un sous-dossier du dossier racine de votre repo.

Comme ceci: Vous avez donc seulement

/MyRepo/ 
/MyRepo/.hg 
/MyRepo/.hgignore 
/MyRepo/Starteam/ 
/MyRepo/Starteam/Starteam file 1 
etc. 

supprimer ce seul dossier « Starteam », sans qu'il soit nécessaire d'ignorer explicitement les fichiers spécifiques Mercurial.