这是我目前使用我的SVN项目工作流程(我从来没有使用svn分支,有些项目是由其他人积极努力的为好):git&svn外部 - 最终的解决方案呢?
- 在服务器上,做inital
git svn fetch
可能需要数小时。还要创建一个“构建”分支。 - 在开发机器克隆现在是快:依次
git clone srv://project.git, git checkout build
通过git update-refs ..., git svn fetch
到链路恢复到svn库 - 工作,提交,提交工作,...
- 检查,如果事情是理智的,
git push build
到服务器并引发哈德森建立分支 - 存储工作,使我可以从另一台机器工作,还推动成立时建立分支
- ,加入的逻辑步骤一起提交(例如,一个用于每个错误) ,承诺svn并重置所有内容,如
git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
输入svn外部值。我已经尝试了每个脚本here,但都失败了。我的外部是设置这样的:
/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
和脚本做的事情就像试图在文件系统和git svn fetch /path/to/x
的根目录中创建/path/to/x
。单个文件似乎也会导致更多问题。 (subquestion 1:什么是svn:externals格式这些脚本是为那么写的?)
它似乎并没有很难修改其中一个脚本来处理我的情况,并复制目录结构我正确后,但后来我留下了一个主要问题:如果我在x和y/z目录中更改文件,我没有看到一种方法将它加入单个svn提交中,这是我开始使用的原因之一git摆在首位。
因此,问题:有没有一种方法可以复制上述工作流程,仅使用特定svn存储库的某些部分,以这种方式可以在根中执行svn dcommit?我更喜欢现成的解决方案,可以在Linux和Windows上运行。
编辑我迅速通过我发现的脚本之一进行了黑客攻击,并使其复制了svn externals的目录结构。我不能克隆,虽然单个文件,这里的输出:
git svn clone -r HEAD srv://svn/repo/path/to/projects.sln
Initialized empty Git repository in xxx/projects.sln/.git/
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default':
Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114
subquestion 2:是不是可以通过取混帐SVN单个文件?
我发现[此脚本](https://github.com/mgee/git-svn-ext)适用于当前版本的SVN和Git 。 – 2013-11-01 14:14:56
@IvanKoblik谢谢你的发帖,尽管我不得不承认我只是放弃了让所有版本库同步,而是强迫所有的同事也只是使用git:P – stijn 2013-11-01 14:21:35