断开版本控制

时间:2011-07-28 17:30:56

标签: git svn version-control mercurial dvcs

我的团队在断开连接模式下工作。即他们开发应用程序并在公司网络内使用SVN来管理代码的版本控制。

我坐在客户办公室,无法从客户机器直接访问我公司的网络。我维护自己的SVN,每天检查从我的团队收到的代码丢弃,并对代码进行更改。

我在这种操作模式中面临两个问题。

  1. 如果我的团队删除/重命名某些文件,我只需将从我的团队收到的新代码粘贴到我的工作副本上。删除的文件仍保留在我的工作副本中。
  2. 为了避免这个问题..我让他们发给我补丁文件。补丁文件的成功率更高,但无法解决二进制文件问题。因此,如果我的团队在代码库中添加了新的images / xls模板等,我不会通过补丁文件获取它们。 2。
  3. 因此,我开始觉得两个断开连接的SVN存储库不适合我的情况。

    • 你们之前有过这种情况吗?
    • 你做了什么?
    • SVN中有什么东西可以帮助我吗?
    • OR是否有另一个版本控制系统可以帮我解决这个问题?
    • 如果是,您能指点我在VCS中的相关命令吗?

    首选免费替代品。

6 个答案:

答案 0 :(得分:5)

我会将SVN服务器转换为真正的DVCS,就像git一样。即使没有直接连接,也可以使用电子邮件提交的补丁(这适用于二进制文件)传播之间的更改。请参阅man git-format-patchesman 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问题),我认为它们可以使用,但您可能需要使用该公司笔记本电脑;-)