是的,我知道这里已经有大量的版本控制问题,但是所提出的解决方案都不能完全按照我希望他们做的事情来做,而且我无法找到一种方法来一起破解。我一直在找一个星期。
Windows 7计算机(具有cygwin,尽管我尚未针对此问题进行过介绍),远程密码保护的git repo和svn repo。对于新项目,逐渐从使用svn切换到git(之前没有人使用过git),并且需要来回移动代码。
我和其他几个人应该可以进行工作,gitproject/path/to/sharedcode
并自动更新我们的提交svnproject/trunk/path/to/sharedcode
。这只会影响这两个子目录,其余的回购协议应保持独立。我正在寻找从git到Subversion的单向永久链接。历史需要保存在git中,而不是svn中,因为那里不会进行开发。此外,我们希望此过程是可重复的,因此将来我们可以anothersvnproject/trunk/path/to/sharedcode
以相同的方式将其设置为镜像。
gitproject/path/to/sharedcode
(运行git diff
)中的更改,如果发现任何更改,则将其复制并将其推送到svn存储库中。它可以每天自动运行,也可以由进行了一些更改的开发人员调用。git push gitproject master
,而不是运行,它将更改同时推送到git和svn。或者,如果其他所有方法都失败,
SubGit对于我们的目的来说似乎有些矫kill过正,并且我不希望/没有权限对其进行设置,因为它不是开源的。我也想不创建新的仓库。
使用混帐SVN创建一个新的回购gitproject/path/to/sharedcode
使用git svn init --trunk=http://svnhost.com/svnproject/trunk/path/to/sharedcode --no-minimize-url
。这将创建一个我可以从中推送的新本地存储库,这对于批处理脚本可能很有用,但这并不是理想的解决方案。
Git2Svn看起来很有前途,但是我找不到关于它的任何文档,所以我不信任它。
我以前用过Svn2Git(用Ruby编写的),它工作得很漂亮,但是我不认为它具有我现在需要的功能。
Git-Subversion Bridge看起来与我们想要的自动同步非常相似,但是同样,它很复杂并且涉及到建立一个新的仓库。如果我从团队的其他成员那里得到帮助,我们可能最终会使用它。
我还尝试编写我描述的Windows批处理脚本。它继续是这样的:git pull
gitproject的最新版本,运行git diff
上gitproject/sharedcode
和svnproject/sharedcode
,管道输出到一个txt文件,使用可怕的,可怕的WindowsIF
声明说,如果diff
捡到东西除了自述文件,ROBOCOPY /MIR
内容gitproject/sharedcode
到svnproject/sharedcode
,ROBOCOPY
从正确的自述一个备份svnproject/sharedcode
,svn add
应有尽有,svn checkout
从远程回购,终于svn commit
。没用
我确定我拥有解决方案的所有内容,但是我缺乏将它们整合在一起的知识和编码技能。我希望stackoverflow可以提供帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句