Comment diviser un SVN dossier dans son propre référentiel lorsqu'il a été renommé?
Je veux diviser un répertoire à partir d'un grand dépôt Subversion à un dépôt de sa propre, et de conserver l'historique des fichiers dans ce répertoire.
J'ai essayé la façon normale de procéder d'abord
svnadmin dump /path/to/repo > largerepo.dump
cat largerepo.dump | svndumpfilter include my/directory >mydir.dump
mais cela ne fonctionne pas, car le répertoire a été déplacé et copié au fil des ans et des fichiers ont été déplacés dans et hors de lui à d'autres parties du référentiel. Le résultat est que beaucoup de ces:
svndumpfilter: Invalid copy source path '/some/old/path'
Prochaine chose que j'ai essayé est d'inclure /some/old/path
tels qu'ils apparaissent, et après une longue, longue liste de fichiers et de répertoires inclus, le svndumpfilter terminée, MAIS l'importation de l'résultant de vidage ne produit pas les mêmes fichiers que le répertoire actuel est.
Alors, comment diviser le répertoire à partir de ce référentiel, tout en gardant l'histoire?
EDIT: j'ai particulièrement envie trunk/myproj
être le tronc dans un référentiel PLUS avoir le nouveau référentiel inclure aucun des autres vieux trucs, c'est à dire. il ne devrait pas être possible pour quiconque de faire la mise à jour à l'ancienne version avant la scission et obtenir/voir les fichiers.
La svndumpfilter solution, j'ai essayé permettrait de réaliser exactement ce que, malheureusement, ses pas faisable depuis le chemin d'accès/les fichiers ont été déplacés. Le solution par ng n'est pas accetable puisque c'est en fait un clone+suppression des extras qui conserve TOUTE l'histoire, et pas seulement pertinents myproj histoire.
- Bump. N'est toujours pas résolu.
- Avez-vous été capable de comprendre cela?
- En fait non, si j'ai besoin d'essayer cette 3ème partie script auriarte suggéré. Le projet a été gelé pendant un certain temps maintenant, donc j'ai été en ignorant le problème aussi, mais je vais essayer de temps en temps.
- Je suis confronté à la même question sur un 17G repo avec svn 1.5. J'ai d'exclure de 15 différents chemins, et mes pauses sur le numéro de révision 1259 à partir de 12000 que nous avons. Douh!!!
Vous devez vous connecter pour publier un commentaire.
Ce problème se produit lorsque l'un des répertoires/fichiers inclus par svndumpfilter à l'origine, a été copié ou déplacé à partir d'une section de l'arbre qui n'est pas inclus.
Pour résoudre le problème de l'utilisation de ce script: svndumpfilter3
J'ai eu un problème similaire fractionnement d'un référentiel ..
Ce que j'ai fait pour contourner le problème était incluant les vieux répertoires, c'est a la demande, ou que vous savez que vous avez déplacé. Dans mon cas, j'avais déménagé 3 répertoires dans un autre répertoire.
par exemple. Déplacé Dossiers A,B,C dans le Dossier D
Cela semblait résoudre mon problème. J'ai été en mesure de séparer le Dossier D du reste de l'opération.
Sur l'envers de la médaille, quand à l'exclusion de D je n'ai pas d'erreur, je suppose, car la suppression D ne nécessite que peu de liens/histoire de A,B,C
J'ai essayé au moins 4 différentes applications pour le faire, la seule qui vraiment travaillé a l'aide de svndumpfilterIN :
Voici ce que j'ai essayé et n'a pas travaillé :
svnlook
de travail, j'avais besoin de prévoir--repo
avec un chemin d'accès à un réel non compressé pensions pas un.dump
fichier en tant que votre exemple montre. J'ai été faire une erreur quemyrepo.dump/format
n'existait pas. J'ai dû faire unesvnadmin load
sur le .fichier de vidage et de point--repo
pour que. 2) Dans--scan-only
mode, la--output-dump
option est encore nécessaire, sinon vous aurez une erreur.Cela pourrait vous aider:
Citation de http://svnbook.red-bean.com/en/1.5/svn.reposadmin.maint.html#svn.reposadmin.maint.replication
Le Problème, bien sûr, est de perdre de la pré-renommer l'histoire...
auriarte lien à svndumpfilter3 404. Voici un lien de travail (comme d'2011-01-31), pour quiconque est à la recherche pour elle: http://furius.ca/pubcode/pub/conf/bin/svndumpfilter3.html
Je viens de migrer avec succès un projet à partir d'un combiné repo (Google Code) de sa propre repo. Les posts ici ont été très utiles.
C'est ce qui a fonctionné pour moi...
svnadmin dump to foo-dumpfile
cat dumpfile | ./svndumpfilter3 --untangle mymirrorrepo trunk/foo > foo-dumpfile
svnadmin create foorepo
svnadmin load foorepo --ignore-uuid < foo-dumpfile
La
--untangle
option à l'étape 3 a réussi à résoudre tous les problèmes de chemins que perplexe svndumpfilter et svndumpfilter2.D'abord, à l'étape 5, j'ai été bloqué sur le message d'erreur:
Mais ce post de Charles Calvert blog a expliqué que tout ce qui était nécessaire était de créer le tronc dir en foorepo avant l'exécution de la charge.
J'ai rencontré ce problème et a fini à l'aide de svndumpfilter2.
Plus précisément, cette commande:
J'ai eu l'erreur de mémoire insuffisante mentionné, cependant, depuis que j'étais en train de svn sur une VM, je viens de tombé de la mémoire jusqu'à 2G. Alors que je me rends compte que cela peut ne pas être une option pour tout le monde, j'ai remarqué qu'il a couru beaucoup plus rapidement qu'il avait avec 512M. (2G n'était probablement pas nécessaire).
Actuellement, c'est la transformation de révision 18,631.
Au cas où quelqu'un merveilles, la raison pour laquelle j'avais besoin de sortir de la partie de l'opération était parce que nous étions en train de créer des balises/exemplaires pour les distribuer à la mise en œuvre des fichiers dans un autre chemin d'accès de l'opération. Pour une raison quelconque, ce processus a été l'origine de la mise en pension de ballon d'énormes proportions. (Nous sommes à 17G maintenant.)
Je suis en train de faire cela sur une réplication de pensions de SVN, version 1.5.6, sur Debian Lenny, 5.0.4.
Pourquoi ne pas reproduire l'ensemble du référentiel, le dump dans une nouvelle. Ensuite, direction le coffre, supprimer la tête et de fusionner les parties que vous souhaitez récupérer dans le coffre de la branche. Ensuite, vous avez gardé de l'histoire et de diviser les parties que vous souhaitez un nouveau référentiel.
De cette façon, vous avez gardé de toute l'histoire, et de manière sélective choisi les pièces que vous souhaitez.
Je suis aussi à la recherche d'une réponse à cette question (d'avoir à traiter avec moi-même).
Basé sur Alex réponse, j'ai trouvé
http://furius.ca/pubcode/pub/conf/common/bin/svndumpfilter3.html
qui prétend résoudre certains de la svndumpfilter2 questions. Je crois que c'est une solution partielle.
La bonne:
Préoccupation:
Suis tombé sur ce problème et trouvé cet outil svndumpsanitizer semblait bien fonctionner, j'ai été en mesure d'importer le fichier créé dans un nouveau dépôt.
C'est un sauvage et fou coup de poignard dans le sur-de compliquer les choses sombres, mais ce que sur l'importation de la repo SVN à git en utilisant git-svn/[tailleur][3], la séparation entre le répertoire à l'aide de git-split, puis de l'exporter en arrière pour svn avec git-svn?
Les commandes spécifiques sont comme suit, je vais supposer que le dépôt est hébergé sur un serveur http(s)://serveur, bien que les mêmes commandes de travail pour svn://ou file://.
Vous devriez maintenant avoir la partie que vous voulez à partir de l'ancien dépôt le tronc de la nouvelle.
Je vois c'est assez vieux maintenant, mais ne l'ajout de "l'option--skip-missing-fusion-sources" aide quelconque? Il semble que c'est possible...
Si vous n'avez pas besoin de la totalité de l'histoire, vous pouvez la sélectionner à partir juste après l'erreur. Si votre erreur était à la révision 412, alors vous pouvez essayer de le ramasser juste après avec:
Je réalise que j'ai peut-être pas une solution parfaite, mais il peut être assez bon dans votre cas.
Vous pouvez aussi simplement faire tout cela en une seule étape
Quelques infos sur svndumpfilter et comment le résoudre - http://blog.rlucas.net/uncategorized/some-gotchas-with-using-svndumpfilter/
Ou vous pouvez essayer svndumpfilter remplacement de script, maintenant appelés svndumpfilter2 - http://cogo.wordpress.com/2009/03/10/problems-with-svndumpfilter/
Je n'ai pas essayé ce script, coz j'ai besoin d'un peu de temps pour une pension de sauvegarde, afin de tester sur que (j'ai une sauvegarde de vidage de jouer avec, mais sur Windows, et c'est un script linux).
viens de tomber sur ce problème et a écrit un petit script pour les tentatives de dumping jusqu'à ce que tous les source invalide chemins sont résolus.
En fonction de la réponse par ng., mais avec le filtrage et l'abandon de vide révisions.
L'étape 1. Vidage et de filtre:
L'étape 2. Créer de nouvelles pensions. (notez que cela peut être fait par exemple avec Tortoise SVN)
N'oubliez pas d'ajouter tout ce que vous devez être en mesure de valider les autorisations et tel).
L'étape 3. Checkout et ajouter dossier de base (peut aussi être fait par exemple avec Tortoise SVN)
L'étape 4. De la charge filtrée de vidage
L'étape 5. Déplacer les anciens de la racine à racine (peut aussi être fait par exemple avec Tortoise SVN)
Vous devriez maintenant avoir la partie que vous voulez à partir de l'ancien dépôt le tronc de la nouvelle.
Nous avons développé Subdivision, un outil graphique conçu pour diviser les dépôts svn.
Subdivision analyse du référentiel et calcule l'histoire des fichiers comme ils sont copiés et déplacés à travers le référentiel. En utilisant cette information, vos sélections sont intelligemment augmentée afin d'éviter tous les "non Valide copie chemin de la source des erreurs".
En plus de la division d'un référentiel, la Subdivision peut être utilisé pour supprimer des fichiers à partir d'un référentiel, ainsi que d'extraire des fichiers et des dossiers dans un nouveau dépôt.
Subdivision est gratuit pour les petits dépôts.