Você está procurando git-svn
? Por depende, você quer dizer que a versão pai está em svn ou tem fornecedores que são projetos svn?
Assumindo por depende, você quer dizer dependência:
Você pode colocar qualquer tipo de repositório dentro de um repositório git sem problemas. por exemplo
$ mkdir ~/project
$ cd ~/project
$ git init
$ ...
$ git commit -va
[master (root-commit) xxxxxxx] Did something
...
$ mkdir vendors
$ cd vendors
$ svn checkout svnproject(url)
$ cd svnproject
$ ...
$ svn ci -m "committing to svnproject"
etc.
E depois gerencie svnproject
como faria normalmente. Obviamente, você pode usar git-svn
para interagir com seu svn repo usando os comandos git.
Você também pode fazer isso:
$ cd ~/projects
$ git add vendors/svnproject
$ git commit -m "adding svnproject source to main repo"
Nesse caso, as atualizações feitas nos arquivos svnproject
aparecerão como svn e git diffs. Um exemplo em que /tmp/gitproject
é um projeto .. git e /tmp/gitproject/vendor/minify
é um svn checkout (aleatório):
[andy@laptop:/tmp/gitproject/vendor/minify]$ vim README.txt
[andy@laptop:/tmp/gitproject/vendor/minify]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: README.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
[andy@laptop:/tmp/so/vendor/minify]$ svn status
M README.txt
[andy@laptop:/tmp/so/vendor/minify]$
Se você costuma git-svn
interagir com seu repositório dependente do svn, é possível mantê-lo sincronizado com as alterações que você fez no projeto pai git usando git-filter-branch
e, portanto, não precisa se comprometer com cada repositório individualmente.
Como um aparte: da experiência de manter um projeto git e svn sincronizado é geralmente bastante problemático, a menos que um ou outro seja somente leitura.