这可能值得一试,我是一个相对新手,但这就是我现在正在做的事情:
创建远程 svn 存储库的克隆:
# clone svn repository
git svn clone ....
创建一个普通的 git 存储库(克隆的克隆):
# clone the clone :)
git clone /path/to/original/clone
git checkout -b working
您现在可以在第二个克隆中工作,就好像它是一个普通的 git 存储库(本质上是这样):
# commit changes, whatever you like
git ci
...
要将您的更改推送回中央 SVN 存储库,请返回第一个克隆并:
# pull and flatten changes
git pull --squash /path/to/working/clone
该--squash
参数表示将拉入的所有提交合并为一个提交。该提交不会立即提交,因此您可以:
git ci
git svn dcommit
然后最后一步将所有内容作为一个提交推送。
编辑-我通常不建议--squash
在其他情况下使用,但请注意,工作存储库保留了完整的完整历史记录(它不受壁球的影响),但是您向上游发送的内容被压缩成一个干净的提交,这是在这种情况下所需要的. 我认为这是一个合理的妥协。