2009-12-16 6 views
4

Je hérite d'une base de code qui a beaucoup de répertoires dans le tronc qui devrait vraiment vivre dans des dépôts séparés. tout mon développement se passe dans un répertoire spécifique, ce qui devrait être la seule chose dans le coffre.git-svn, comment utiliser un répertoire dans le tronc comme tronc local

par exemple:/path/to/repo/tronc/true_trunk

toutes les balises et les branches dans le repo se réfèrent exclusivement à ce répertoire 'true_trunk'.

problème est: je ne peux pas obtenir git-svn à agir comme ce sous-répertoire de tronc est vraiment tronc. et par conséquent mes checkouts de tronc peuplent mon répertoire de travail avec tout le contenu du tronc, une douzaine d'autres bases de code sans rapport.

est-il possible de faire en sorte que git-svn ne parle qu'à ce 'vrai_trunk' administrateur?

toute tentative de spécifier ce répertoire donne le résultat suivant sur: L'utilisation du niveau d'URL supérieur: svn: // chemin/vers/trunk/true_trunk => svn: // path/to/repo

+0

l'option -t obéissait toujours « Utilisation plus URL de niveau » problème j'ai réussi à faire avancer les choses de travail en modifiant manuellement mon .git/config et en ajoutant le tronc manuellement comme un autre dépôt distant i besoin pour voir si le --no-minimize-url aurait travaillé –

Répondre

3

Le -T L'option git svn init vous permet de spécifier un répertoire qu'il traitera comme le répertoire "trunk". Je l'ai utilisé dans le passé avec des arborescences de répertoires Subversion étrangement arrangées et cela a été un succès. Vous devrez peut-être expérimenter un peu pour obtenir la bonne combinaison d'options pour votre situation.

1

Vous pouvez spécifier le votre véritable tronc avec l'option -T-git svn clone, également -b pour vos branches et -t pour les balises. Je pense que pour cette mise en page que vous devrez peut-être spécifier chaque branche/étiquette séparément, quelque chose comme cela devrait fonctionner pour vous,

$ git-svn clone \ 
-T svn://path/to/trunk/true_trunk \ 
-b svn://path/to/branches/branch1/true_trunk \ 
-b svn://path/to/branches/branch1/true_trunk \ 
-t svn://path/to/tags/tag1/true_trunk \ 
-t svn://path/to/tags/tag2/true_trunk \ 
repository_name 

Vous devrez peut-être générer une sauvegarde de vos branches et les étiquettes de svn pour formater un cette commande

$ svn ls svn://path/to/tags 
$ svn ls svn://path/to/branches 
+0

Umm, non. La première non-option de 'git svn clone' doit être l'URI svn repository; les options '-T/-b/-t' peuvent être relatives, et cela n'a aucun sens de les spécifier plusieurs fois (' -b branches' devient 'svn-remote.svn.branches = branches/*: refs/remotes/* 'dans la configuration de git). – ephemient

Questions connexes