我的团队在断开连接模式下工作。即他们开发应用程序并在公司网络内使用SVN来管理代码的版本控制。
我坐在客户办公室,无法从客户机器直接访问我公司的网络。我维护自己的SVN,每天检查从我的团队收到的代码丢弃,并对代码进行更改。
我在这种操作模式中面临两个问题。
因此,我开始觉得两个断开连接的SVN存储库不适合我的情况。
首选免费替代品。
答案 0 :(得分:5)
我会将SVN服务器转换为真正的DVCS,就像git一样。即使没有直接连接,也可以使用电子邮件提交的补丁(这适用于二进制文件)传播之间的更改。请参阅man git-format-patches
和man git-am
。如果你不打算阅读补丁,还要man git-bundle
。
如果无法转换中央服务器,您仍然可以要求SVN网络上的某个人在生成他发送给您的补丁之前使用git-svn
,或者在应用您发送回给他的补丁之后。 (杀死SVN当然是一个更好的长期解决方案。)
答案 1 :(得分:2)
你应该研究一下git-svn。基本的想法是,您没有本地svn工作副本,而是拥有本地git存储库。您可以进行多个本地提交,然后在完成后,将这些本地提交推送到远程svn存储库。它允许您完全与中央svn存储库断开连接,但仍允许您在日常工作中使用版本控制。
答案 2 :(得分:1)
请查看@elevener提到的bzr-svn
,或者,对于git等效项,请使用git-svn
编辑:
我的印象是您有时可以访问公司网络,您可以在其中推送/拉动您的更改。如果不是这样,那么我想手动修补是唯一的方法(因为你几乎无法访问公司的SVN服务器。)
贵公司是否通过某种方式提供对内部网络的访问(SSH?VPN?)?如果是这样,也许您可以使用SSH隧道或VPN来访问SVN服务器。
答案 3 :(得分:0)
如果您位于不同的网络中且无法访问VCS,则只能手动修补。即使在DVCS(git或mercurial)中,您也必须在同一网络中从远程仓库推送或拉出。因此,据我所知,手动修补是您的唯一解决方案。
SVN专家的任何评论?
答案 4 :(得分:0)
我自己没有使用它,但AFAIK你可以使用Bazaar。它是一个分布式版本控制,可以使用SVN作为中央存储库。
请参阅bzr-svn。
答案 5 :(得分:0)
请查看git-bundle
的sneakernet转移步骤。它应该允许您打包一组更改,以便在网络之间通过VPN进行手动传输。
我自己一直在寻找交换问题(请参阅我的各种SO问题),我认为它们可以使用,但您可能需要使用该公司笔记本电脑;-)