Je travaille sur un projet Java legacy qui a 20 modules connectés les uns aux autres. Donc, chaque module a sa propre branche et sa propre balise. La structure est comme ceci:
/projects
.svn
- module1
.svn
-trunk
-branch
-tag
- module2
.svn
-trunk
-branch
-tag
Le dossier des projets fait environ 30 Go, ce qui est presque impossible à utiliser git-svn clone
pour extraire tous les modules, mais c'est parce qu'il compte toutes les branches et balises.
Est-il possible de cloner uniquement le tronc du projet afin que je puisse commencer à valider localement?
Edit: J'ai mal lu la question et répondu à ce que je pensais que vous demandiez, pas à ce que vous avez réellement demandé.
Le clonage d'un seul répertoire Subversion est facile, et peu importe le répertoire que vous clonez. Ne spécifiez simplement aucun des arguments "layout" et donnez directement le chemin du tronc:
git svn clone http://path.to.svn.repo/module1/trunk
Un "normal" git svn clone
ressemblerait à quelque chose comme ceci:
git svn clone --stdlayout http://path.to.svn.repo/
Ce que vous souhaitez utiliser à la place sera donc:
git svn clone --stdlayout http://path.to.svn.repo/module1/
Cela trouvera les sous-dossiers trunk
, branch
et tag
des module1
dossier, et clonez-les pour vous.
J'ai trouvé que le clone git svn avec --stdlayout n'a pas fait la bonne chose pour moi.
Dans la même situation, cette stratégie a bien fonctionné:
git svn init --trunk $ repo/projects/module1/trunk --tags $ repo/projects/module1/tag --branches $ repo/projects/module1/branch git svn fetch
Je voulais juste ajouter plus d'informations sur la base de la réponse de @ me_and.
la commande donnée pour cloner juste le tronc va fonctionner mais dans le dossier git la structure créée était:
refs
|--remotes
|--git-svn
ce qui équivaut à refs/remotes/git-svn.
si nous le faisons à la place:
git svn clone https://domain/svn/repo/trunk --no-metadata --authors-file=authors.txt --trunk=https://domain/svn/repo/trunk
alors la structure créée est:
refs
|--remotes
|--Origin
|--trunk
ce qui équivaut à refs/remotes/Origin/trunk
La deuxième structure semble plus conviviale et pourrait potentiellement réduire les commandes et les scripts Shell que vous devez écrire :)
P.S. les arguments [--no-metadata] et [--author-file] sont facultatifs.