2010-03-30 15 views
0

Je dois supprimer une branche de svn history pour de bon. Normalement, j'utiliserSVN: est-il possible de supprimer une branche copiée supprimée, etc. pour de bon?

svnadmin dump /path/to/repo |svndumpfilter --drop-empty-revs --renumber-revs exclude /branches/bad_branch 

Cependant cette branche n'a pas seulement créé, mais aussi déplacé puis retiré et un script vidage ne réussit pas à traiter l'information en aval avec des messages comme: chemin source de copie non valide «/branches/bad_branch »

J'imagine 2 façons de faire face au problème

  1. ne garder que quelques révisions dernières de l'histoire et mettre référentiel en cours comme une archive sur le web

  2. faire une décharge jusqu'à la révision où le « bad_branch » a été créé et appliquer le reste des changements comme un patch, donc de perdre l'histoire de quelques commits récents.

Y a-t-il une meilleure façon de gérer cela?

+2

Une raison particulière pour laquelle cette branche doit être supprimée pour toujours? –

+0

cette branche contient l'arbre entier du projet et les gens qui utilisent git svn obtiennent un énorme volume de données à récupérer qui prend des heures à faire – dimus

Répondre

2

La première partie de votre numéro 2 fonctionnera. Alors oui, créez une sauvegarde à l'endroit où la branche incriminée a été introduite et créez un nouveau référentiel avec elle. Puis, en utilisant toujours svnadmin dump et l'option --incremental, vider toutes les bonnes révisions entre les mauvaises révisions de branche. Voici un exemple de ce que la commande de vidage incrémentale ressemblerait à ceci:

svnadmin dump /path/to/repo --incremental -r 1234:2345 

ces décharges continuer à appliquer incrémentales au nouveau référentiel. Cela devrait produire un référentiel sans la création d'une mauvaise branche fautive, se déplacer, et valider et conserver tout votre historique pour les bonnes révisions qu'un patch, comme vous l'avez suggéré, détruirait.

Selon le nombre de révisions de la mauvaise branche, cela représente beaucoup de travail. C'est aussi le seul moyen de le faire avec les versions 1.6.x ou antérieures de Subversion pour le moment.

Maintenant, voici la mise en garde. S'il y a des messages de validation dans les bonnes révisions qui font référence aux numéros de révision, ils seront désactivés. Ce ne sera pas si mal s'il y en a un petit nombre, mais cela pourrait être fastidieux de corriger s'il y en a beaucoup.

+0

a travaillé comme un charme merci beaucoup! – dimus

+0

Heureux de l'entendre fonctionner :-) – jgifford25