2017-08-14 10 views
0

J'ai la structure du référentiel svn suivante:Comment utiliser git-svn pour travailler avec des parties disparates d'un dépôt svn?

branches 
    branch-1 
    branch-2 
trunk 
    system-a 
     component-0 
     component-1 
    system-b* 
     component-0 
     component-1* 
    shared* 
    site_scons* 
    SConscript* 

J'ai une équipe qui a besoin de développer component-1 de system-b mais ils ont besoin d'utiliser git localement, car ils ne disposent pas d'un accès direct à notre serveur svn. git-svn semble être juste ce que je cherche, car il me permet de créer leur repo git et de gérer la synchronisation via git svn dcommit et git svn rebase.

Je peux facilement reproduire le repo toute svn pour eux avec git svn clone https://svn-repo, mais cela aussi leur donner tout sous system-a, ainsi que tout autre que component-1 sous system-b. Il y a plusieurs raisons de ne pas le faire, dont le moins important est qu'il n'est pas judicieux de répliquer (et de suivre les modifications) de vastes quantités du référentiel qui n'affectent pas l'équipe system-b/component-1.

Les répertoires étoilés ci-dessus sont les seuls dont ils ont vraiment besoin pour obtenir des mises à jour et les modifier. Ce serait aussi génial de leur interdire d'apporter accidentellement des changements à des choses auxquelles ils n'ont pas besoin d'accéder.

Comment puis-je accomplir ceci avec git-svn? Je pensais que je pourrais créer quelques repo git séparés, à la:

git svn clone https://svn-repo/trunk/SConscript 
git svn clone https://svn-repo/trunk/site-scons 
git svn clone https://svn-repo/trunk/system-b/component-1 
git svn clone https://svn-repo/trunk/shared 

Mais cela ressemble et sonne comme ce sera un casse-tête pour l'équipe git depuis, à ma connaissance, cela crée quatre dépôts git réellement distincts . Y a-t-il un moyen d'avoir cette structure de «caisse clairsemée» dans un seul dépôt git en utilisant git-svn?

Répondre

1

Bien sûr, permettez-moi de citer le man page pour vous

--include-chemins = < regex>

Celui-ci permet de spécifier une expression régulière Perl qui provoque l'inclusion de seulement les chemins correspondants de la caisse de SVN. L'option --include-paths doit correspondre pour chaque d'extraction (y compris récupérations automatiques en raison de clone, dcommit, rebasage, etc.) sur un référentiel donné. --ignore-paths a la priorité sur --include-paths.

config key: svn-remote.<name>.include-paths