2009-09-28 7 views
8

Est-il possible de renommer le répertoire dans svn repository?Est-il possible de changer le nom du répertoire dans le dépôt par svndumpfilter?

Ne pas créer de nouvelle révision dans laquelle ce répertoire sera renommé.

Je voudrais changer le nom de ce répertoire à partir de la première révision. Dans la mesure où je comprends l'utilitaire svndumpfilter peut être utilisé pour cela.

Est-ce correct?

Quelqu'un peut-il me donner un petit exemple comment le faire?

Répondre

7

Vous devez svnadmin vider votre référentiel, traiter le fichier de vidage et svnadmin charge le fichier traité dans un repo vide. Non svndumpfilter nécessaire.

svnadmin dump /repos/path > old.dump 

Le fichier de vidage peuvent être traités avec Sed ou un autre outil (assurez-vous que les données binaires ne soit pas corrompu) et remplacer le nom du répertoire. Par exemple:

sed -b -e "s#^\(Node.*path\): dir1/dir_old#\1: dir1/dir_new#" old.dump > new.dump 

Une fois que vous avez fini de traiter le fichier de vidage:

svnadmin create /newrepos/path 
svnadmin load /newrepos/path < new.dump 
+2

ne pas traiter une structure de données complexe comme une vidage svn avec un outil simple comme sed. Personne ne vous garantit que la chaîne ': dir1' n'apparaît jamais ailleurs. – reto

+2

Dans ce cas, vous obtiendrez une erreur "Checksum mismatch" lors du chargement du fichier traité. Voir le format de fichier de vidage: http://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt – fglez

+0

C'est génial. Ça marche. C'est le seul moyen simple de se déplacer avec des dossiers dans svn dump! – qub1n

3

je recommanderais certainement pas utiliser sed, car il ne connaît pas le format de fichier et vous pouvez rend facilement le fichier de vidage SVN inutilisable. En outre, si vous voulez remplacer un peu plus qu'un simple chemin, vous devez également mettre à jour ou simplement supprimer les sommes de contrôle SHA1 et MD5.

La modification d'un vidage SVN n'est vraiment pas aussi triviale que cela puisse paraître au premier abord.

J'ai eu le même problème, hier, et j'ai écrit un petit programme à cet effet. Je publiais ici pour tout le monde à utiliser:

https://github.com/nlmarco/svndumptransformer

C'est un logiciel gratuit et vous êtes invités à le modifier, si vous voulez/avez besoin de plus de fonctionnalités.

Ce programme modifie uniquement le contenu textuel (si un fichier - par exemple une image - est marqué comme ayant le "mime/octet-stream" de type mime, il n'est pas modifié). Et comme il lit et comprend vraiment le format de vidage SVN, il ne modifie pas les données structurelles appartenant à la sauvegarde SVN - contrairement à la commande sed ci-dessus.

Pour moi, ce programme fonctionne très bien en renommant un produit - provoquant tous les chemins ainsi que les fichiers de configuration du projet (=> gradle) et quelques douzaines de classes Java à renommer. J'espère que ce programme sera également utile à d'autres personnes.

Btw. Je suis conscient que cette question est très ancienne, mais j'espère que ma réponse pourrait aider les autres qui rencontrent ce problème, maintenant.

Questions connexes