我有一个“git-svn”工作树。我想克隆一个“纯”git代码库,然后使用git push/pull在git-svn树和git树之间移动更改,同时还使用'git svn dcommit/rebase‘在git-svn树和它所基于的SVN代码库之间移动更改。
就使用git方法在git树之间来回移动内容而言,这似乎工作得很好,但是只要我与git-svn树中的SVN代码库交互,事情就会变得不稳定--要么在git树之间推送或拉取时出错,要么丢失git-svn树中的提交,或者其他奇怪的情况。
这种类型的SVN <-> git-svn <-> git工作流是否完全支持,或者我是否应该停止创建此树?
发布于 2010-02-16 07:29:40
根据我所看到的,由于SVN表示合并的方式,git-svn不支持这个工作流,将来也不会支持。
发布于 2009-02-20 20:20:49
我为我的一些项目设置了一个桥,但它只是从git到svn的单向(提供了git主分支的一个公共只读SVN镜像)。但是,因为它工作得很好,所以它可能会帮助您或在双向场景中为您指明正确的方向,因为我假设是git->svn造成了问题,而不是svn->git:
我的单向场景: github的现有git存储库需要git主分支的只读svn镜像。
svnadmin创建svnrepo mkdir主干svn导入主干svn://yoursvnserver/svnrepo rmdir -rf主干
git svn clone svn://yoursvnserver/svnrepo/trunk cd trunk git remote添加github git://github.com/yourname/repo.git git fetch github git branch tmp $(cat.git/refs/remotes/github/INIT_COMMIT=$) git标签日志-m "Last fetch“last tmp INIT_COMMIT=$(git log tmp --pretty=格式:%H| tail -1) git签出$INIT_COMMIT。git --find-copies-harder
git fetch github git branch tmp $(cat .git/refs/remotes/github/ -a ) git标签-M "Last fetch“newlast tmp git rebase -- mv master last tmp git branch -m tmp git svn dcommit --rmdir --find--copies-harder .git/refs/tags/newlast .git/refs/tags/last
来自googlecode的这两篇文章可能也会有所帮助:
发布于 2010-02-16 07:41:43
可能会给您带来麻烦的一件事是,git svn dcommit将重写它发送给SVN的所有提交-至少如果它被配置为将SVN元数据注释添加到提交消息的底部。因此,您必须采用这样的流程:任何存储库从您的git-svn工作空间中获取提交,都会根据它重新建立数据库,从而丢失所有无法存储在SVN中的合并历史记录。
https://stackoverflow.com/questions/570945
复制相似问题