Le déplacement d'un dossier à partir d'un dépôt SVN à l'autre
J'ai un ensemble de dépôts avec une structure semblable à la suivante:
/Source
/branches
/tags
/trunk
/FolderP
/FolderQ
/FolderR
/Target
/branches
/tags
/trunk
/External
/Library1
/Library2
/Library3
/Internal
/FolderA
/FolderB
/FolderC
/FolderX
/FolderY
/FolderZ
Je voudrais déplacer les dossiers /Source/trunk/FolderP, /Source/trunk/FolderQ et /Source/trunk/FolderR /Cible/trunk/Internes tels que:
- /Source/trunk/FolderP devient /Cible/trunk/Interne/FolderP
- /Source/trunk/FolderQ devient /Cible/trunk/Interne/FolderQ
- /Source/trunk/FolderR devient /Cible/trunk/Interne/FolderR
Je devrais alors le suivant référentiel de structure:
/Target
/branches
/tags
/trunk
/External
/Library1
/Library2
/Library3
/Internal
/FolderA
/FolderB
/FolderC
/FolderP
/FolderQ
/FolderR
/FolderX
/FolderY
/FolderZ
Il est impératif que l'histoire soit maintenu pendant le déplacement.
J'ai regardé les 2 questions posées précédemment qui semblent être similaires:
- SVN move seul répertoire dans un autre dépositaire (avec historique)
- Comment puis-je déplacer un dossier unique d'une Subversion référentiel à un autre?
Je n'ai pas eu beaucoup de chance avec les solutions proposées. Plus précisément, j'ai une erreur quand je lance le svndumpfilter de commande, qui stipule que:
svndumpfilter: Invalid copy source path `/branches/name-of-a-branch/.../File.cs`
Ce qui se passe et comment puis-je contourner ce problème?
Edit:
Une solution de contournement que je suis en train d'essayer:
- Clone de l' /référentiel Source dans un autre appelé /Temp
- Supprimer les fichiers et dossiers à partir de /Temp que je n'ai pas besoin et d'archivage des tous les changements
- Dump /Temp référentiel en appelant "svnadmin dump X:\Repositories\Temp > X:\Dumps\Temp.dmp"
- Charge De Temp.dmp dans /référentiel Cible, en appelant "svnadmin load --parent-dir trunk\Internal\Temp X:\Repositories\Target < X:\Dumps\Temp.dmp"
- Caisse/mise à jour /référentiel Cible
- Utiliser TortoiseSVN pour déplacer des dossiers dans /Target/trunk/Interne/Temp/trunk/** dans /Target/trunk/Interne (en mettant en évidence celles que je veux dans l'Explorateur Windows, en appuyant sur Ctrl+X puis, changeant de dossier /Cible/trunk/Interne et l'émission de la coller avec TortoiseSVN
NB: ci-dessus suppose que svn est le maintien de tous les référentiels en X:\Repositories dossier et on est à l'aide de X:\Dumps dossier comme dossier de travail.
Cela va tabasser les numéros de révision évidemment, mais maintiendra l'histoire. J'espère que votre commettre les commentaires ne sont pas à inclure des références à des numéros de révision.
Quelqu'un d'autre a mentionné une svndumpfilter3 script Python, mais je n'ai jamais utilisé Python, et ne veulent pas apprendre à utiliser Python, juste pour cette.
OriginalL'auteur Umar Farooq Khawaja | 2010-06-25
Vous devez vous connecter pour publier un commentaire.
À moins que vous aussi, vous souhaitez également changer l'histoire de
FolderP
,FolderQ
, etFolderR
, pourquoi ne pas simplementsvn move
àInternal
?Noter que
svnadmin load
prend une option--parent-dir arg
, oùarg
est le dossier parent du dossier où vous voulez que votre importation de vidage à paraître. Doncsvnadmin load --parent-dir /trunk/Internal dump_of_source_repo target_repo
doit importer l'ensemble de la source repo sous
/trunk/Internal
dans la cible des pensions.En fait, je suis sûr que ce sera pas travail à travers les référentiels. Mais vous pouvez les déplacer après l'importation. De toute façon, comme je l'ai ajouté par la suite, vous pouvez l'importer dans un dossier spécifique, trop.
OriginalL'auteur sbi
La solution de contournement suivante est pour la situation spécifique que filipenf est, c'est à dire, pas d'accès à svnadmin sur le serveur Subversion.
Si vous pouvez vous déplacer physiquement les fichiers sur le serveur Subversion dans le dossier utilisé pour stocker des dépôts, alors vous êtes dans la chance.
Avant d'effectuer les opérations suivantes, veuillez prendre les sauvegardes, dans le cas de la présence fortuite de la corruption de données. Libéral de l'utilisation de l'utilitaire de sauvegarde ne peut jamais être trop soulignée. Maintenant, la solution de contournement:
Cela devrait vous donner des nouvelles de référentiel dans l'entreprise serveur Subversion, avec toute l'histoire intacte.
Vous pouvez ensuite utiliser svn:des propriétés externes à mettre dans le code de ce nouveau référentiel dans d'autres dépôts sur la société le serveur Subversion.
Veuillez noter que ceci implique la capacité à physiquement de copier des fichiers sur l'entreprise serveur Subversion, plutôt que de créer un nouvel espace de stockage ou un dossier à l'aide de l'interface utilisateur publié par le serveur Subversion.
En supposant que vous avez seulement accès de niveau utilisateur pour le dépôt Subversion et que vous souhaitez conserver de l'histoire ainsi, la seule autre option serait de créer un dossier de destination ou lieu de stockage, l'extraction de la première révision de la source de dépôt, le fusionner dans la caisse de l'emplacement de la cible (svn ajout de nouveaux fichiers, svn suppression de fichiers manquants), commit, répétez jusqu'à ce que vous arrivez à la dernière révision de la source. Vous pourriez probablement écrire un script MSBuild pour automatiser cela, mais on dirait presque trop de tracas et je frémis à l'idée de ce que si quelque chose n'allait pas. Ne PAS le faire.
OriginalL'auteur Umar Farooq Khawaja
Pour cela, j'ai trouvé un grand soutien au sein de TortoiseSVN version 1.9.4+:
TortoiseSVN > Show log
)Merge revisions to...
Avertissement
Cette méthode bandes de l'histoire et peuvent travailler seulement dans certaines circonstances, mais ma situation était évidemment exactement l'un de ces (c'est pourquoi j'aime TSVN: il aide vraiment à ses utilisateurs).
Histoire de fond:
J'ai essayé de convaincre un collège pour apporter un petit ("jouet") projet sous contrôle de version, j'ai donc nettoyé le SVN "terrain de jeu" référentiel. Il s'engage ensuite tout ce qu'il a pensé que c'était le code source (naturellement beaucoup plus que cela), j'ai ensuite ajouté le approprié ignorer les modèles, il a immédiatement commencé à faire le travail productif sous VC (en oubliant que tout cela se déroule dans le "terrain de jeu" repo). Maintenant, j'ai eu à le convaincre de passer à une persistance de dépôt et recherché un outil facile à appliquer et facile à enseigner la méthode, afin de permettre à lui de faire le premier s'engager dans le nouveau site.
It is imperative that history be maintained during the move.
, mais je pense que cette réponse est toujours utile dans certains cas.OriginalL'auteur Wolf