【问题标题】:Version control to coordinate with yourself与自己协调的版本控制
【发布时间】:2010-10-04 23:17:37
【问题描述】:

为了在业余时间进行编程,我同时拥有台式机和笔记本电脑(都是 Mac,尽管我怀疑这对问题有影响)。我在他们两个上都安装了 VMware,并使用 Linux 映像来运行我的代码。它们是相同的图像,所以我在两个地方都有相同的环境。

诀窍是我喜欢对我的所有编码使用版本控制,即使我没有与其他人协调。我想在我使用的任何系统上查看我的代码的最新版本。

我不想一直依赖网络访问 - 我可能在没有 Wi-Fi 的地方进行编码(是的,这种情况很少见,但有些地方仍处于石器时代)。我正在考虑使用 git,但如果我有本地可用的存储库,SVN 之类的东西也可以。或者可能笔记本电脑成为 SVN 服务器,桌面访问它。

以前有人做过这种事吗?有什么陷阱/陷阱/经验教训?

【问题讨论】:

    标签: svn git version-control


    【解决方案1】:

    好吧,我绝对推荐使用分布式系统而不是 Subversion。这将满足您不依赖网络访问的要求,并且可能更适合您的工作流程。分布式 VCS 的主要选择是 gitMercurial(也称为“hg”)和 Bazaar(或“bzr”)。我个人的偏好是 Mercurial,但它们都相当可比。

    但是,Mercurial 确实优于其他的一件事(这对您的情况非常有帮助)是“hg serve”命令。你可以在这里阅读:Informal sharing with "hg serve"。基本上,它设置了一个非常简单的(临时)服务器,以允许通过网络拉取您的存储库。我一直使用它来保持台式机和笔记本电脑之间的代码同步。如果我在笔记本电脑上进行了一些更改,我只需在那里运行“hg serve”,然后从桌面运行“hg pull”,反之亦然,如果我一直在桌面上工作。

    所以总的来说,我绝对建议研究分布式系统,我认为他们会在设置您想要的环境方面做得最好。网络上有大量关于使用它们的信息。我没有花太多时间和其他人在一起,但如果你想试试 Mercurial,this free online book covers pretty much everything you'll need to get started

    【讨论】:

    • 听起来你是唯一一个以某种方式真正做到这一点的人。我对真正分布式的担忧是我必须在计算机之间来回合并,这是我忘记合并事物的秘诀。有什么神奇的解决方法吗?
    • 嗯,任何 VCS 都会要求您记住提交/更新,所以没有什么可以摆脱它。合并所有 DVCS 系统非常好,因此您不必将其视为一项艰巨的任务。
    • 除非出于某种原因您在不同的机器上以不同的方式更改了相同的代码(并且您的内存可能比这更好),否则永远不会有任何合并冲突,一切都会得到自动合并在一起,无需任何交互。
    • 顺便说明一下,Bazaar 也有一个 bzr serve 命令,可以通过 FTP、HTTP 等协议进行同步。
    【解决方案2】:

    如果您始终无法访问网络,我强烈推荐 git。

    但是,如果您仍然需要使用 subversion 存储库,您仍然可以使用 git-svn 获得两全其美。

    【讨论】:

    • Git-svn 或只是一个可以推送到的异地 git 存储库(如 github)。您可能希望在笔记本电脑以外的地方进行备份。
    • 我不同意你在使用 git-svn 时得到最好的 git。当然,这比尝试在没有 git 的情况下使用 svn 要好得多。
    【解决方案3】:

    无论您做什么,请确保定期备份您的存储库。如果您的笔记本电脑包含您的存储库,则尤其如此。您还需要考虑如果您的笔记本电脑被盗会发生什么。使用 git 并将存储库留在桌面上可能会更好。

    【讨论】:

    • 我肯定会做一些事情来确保它在异地备份。也许是一个 cron 作业来经常将它同步到我的 iDisk,或者定期将 repo 复制到我的桌面(已备份)。
    • 这就是 Mercurial 的美妙之处……每台计算机都有一个存储库的“克隆”。
    【解决方案4】:

    作为已经提到的 Git 的替代品,我强烈推荐 Bazaar。它和 git 一样是一个分布式 VCS,但有一些区别。

    如需(当然有些偏颇)比较,请查看this page

    【讨论】:

    • 我赞成这个。 Bazaar 比 git 更适合我对可用性的品味,但我认为它实际上是一种洗涤。
    • @Darcy,同意。不过,一个显着的区别是支持 Windows 的努力(虽然这似乎与 OP 无关)。
    • 不。不相干。不过,我需要 MacOS 支持和 Linux 支持。听起来我应该调查 Mercurial 和 Bazaar(我已经尝试过 git)。
    【解决方案5】:

    如果您追求简单(设置),SVN 很好。它可以在没有网络连接的情况下工作,因为您的整个历史记录都保存在每台同步的 PC 上,而且 SVN+SSH 的设置很简单。它使用 SSH 的内置功能来运行程序,因此,如果您设置了 SSH 服务器,您只需创建一个存储库,一切正常......无需任何服务器设置。

    这也可以作为您的备份,因为您在与之同步的每台计算机上都有整个存储库。

    分布式版本控制系统也很有趣,但我认为前期投资更高,但它的优点是您可以在不连接的情况下保存到存储库(如果您单独工作,则不是太重要,但能够检查点并且在任何地方回滚都有它的优势)。

    【讨论】:

    • 这种简单性是为什么在笔记本电脑上运行 SVN 存储库看起来很诱人的部分原因。因为我要么总是在本地,要么保证有笔记本电脑可用,所以使用它永远不会有问题。通过只有 1 个 repo,我不必与自己合并。
    • 试试 SVK,我听说它应该几乎一样简单,但也总是有一个本地存储库。虽然没有第一手经验。
    【解决方案6】:

    当您无权访问存储库时,使用 SVN 会变得非常尴尬。由于我在一台计算机上完成了所有开发工作,因此我在 SVN 上过得很好,但您可能会发现它并不那么容易。据我所知,这正是 git 旨在处理的问题 - 它允许您进行在本地副本中注册的提交,然后在您访问它时将它们全部上传到存储库。

    【讨论】:

      【解决方案7】:

      您可以考虑购买一台 SVN 主机 - 它们的价格相当实惠,让您不必为自己处理网络连接而烦恼:

      http://www.google.com/search?hl=en&q=svn+hosting&btnG=Google+Search&aq=f&oq=

      【讨论】:

      • 或者只是获得一个提供 SVN 作为一项功能的常规网络主机。
      • 很遗憾,如果我在没有直接网络访问权限的地方工作,这将不起作用。
      【解决方案8】:

      我最喜欢的 VCS 是 darcs,因为它支持补丁挑选。它是一个分布式 VCS,非常易于使用。

      【讨论】:

      • git 和 mercurial 对挑选樱桃也有很好的支持。 :)
      • 但据我所知,这对于 git 和 hg 是不可能的:repo A 包含补丁 1、2、3 和 4; repo B 包含补丁 1、5、6;回购 C 不包含任何内容。使用 darcs,我现在可以从 A 中拉出补丁 1、2、4,从 B 中拉出补丁 6,这样 C 现在包含 1、2、4、6 并且 A 和 B 保持不变。
      • 啊,还有一个重要的补充:我以后可以解压任何补丁,现在只有最后一个! darcs 中没有版本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2011-04-12
      • 2012-04-12
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      相关资源
      最近更新 更多