是的,我知道这里已经有大量的版本控制问题,但是所提出的解决方案都无法完全按照我的要求去做,而且我无法找到一种方法来共同破解。我一直在找一个星期。我的设置: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存储库中。它可以每天自动运行,也可以由进行了一些更改的开发人员调用。像^ this ^这样的脚本,我们可以在进行提交时运行,而不是运行git push gitproject master来将更改同时推送到git和svn。或者,如果其他所有方法都失败,一个非常清晰,明显的工作流程,当我们在git中工作时,我们所有人都可以轻松地遵循。类似于“首先,使用COMMAND检出gitproject。然后使用COMMAND创建一个名为NAME的新分支。然后进行更改。然后转到LOCATION并运行COMMAND ...”。我尝试过的对于我们而言,SubGit看起来有些过分,并且我不想/没有权限来设置它,因为它不是开源的。我也想在不创建新仓库的情况下这样做。使用git-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文件,使用糟糕的Windows IF语句表示如果除了自述文件以外,还选择了diff内容从ROBOCOPY /MIR到gitproject/sharedcode,svnproject/sharedcode从备份到ROBOCOPY的正确README,svnproject/sharedcode一切,从远程存储库获取svn add,最后是svn checkout。没用我确定我拥有解决方案的所有内容,但我缺乏将它们整合在一起的知识和编码技能。我希望stackoverflow可以提供帮助。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您不能在Git回购中对树的一部分进行操作(简而言之-它是整体对象,与SVN相反)由于p.1,您必须拆分Git存储库并将/path/to/sharedcode转换为其他特殊存储库。您可以使用Submodules或Subtree方法(时髦的Git-boys现在更喜欢子树)通过专用的仓库,您可以使用git-svn将新的远程添加到svnproject/trunk/path/to/sharedcode(Git历史记录将镜像到SVN,但这是最懒惰和最简单的方法) (adsbygoogle = window.adsbygoogle || []).push({});
08-26 13:31