适用于非网络环境的最佳版本控制系统?

时间:2008-10-17 16:23:00

标签: version-control dvcs

我正在指导高中机器人团队的编程小组。我想建立一个源代码控制存储库,以避免手动复制目录以进行共享/备份以及手动合并这些目录。构建位置通常不具有网络访问权限,因此这使我成为分布式版本控制系统(DVCS),我不熟悉。

最大要求如下:

  1. 适用于Windows XP和Vista。 (绝对必须)
  2. 可以在本地提交更改。 (似乎是所有DVCS的情况)
  3. 可以在没有网络访问的情况下合并来自多台计算机的存储库。 (可能是将存储库存储在USB驱动器上并将驱动器交换到另一台机器,然后从那里合并)
  4. 它也应该易于学习和使用,最好是通过图形用户界面,因为我正在与从未使用过版本控制系统的高中生一起工作。

    关于哪种DVCS最适合这种情况的任何建议。

    编辑:

    感谢您的回答。 Mercurial看起来很不错,但它是否支持将存储库从一个目录合并到另一个目录,或者我是否必须设置本地网络才能合并?

6 个答案:

答案 0 :(得分:6)

Git很可爱,但它的Windows支持是极端的(即使使用MSysGit)。我会推荐Mercurial。我自己并没有真正使用它,但我听说它的Windows支持非常实用。此外,对于来自传统VCS(如SVN)的人来说,它的学习曲线稍微容易一些。

答案 1 :(得分:5)

Mercurial在Windows和Linux上都很容易使用。 TortoiseHg是Windows的gui前端,集成到资源管理器中;它工作正常。两者都是开源的。据我所知,在Windows下使用Git不那么简单。

  

感谢您的回答。水银   看起来很不错,但它支持   从一个合并存储库   目录到另一个,或我必须   设置本地网络进行合并   跨越?

Mercurial / TortoiseHg将执行此操作(以及更多),所有其他分布式版本控制工具(据我所知)也是如此。我相信它会解决你的问题。它是一个DVCS,使用TortoiseHg,它很容易在Windows上使用。其他分布式版本控制工具也可能会起作用(例如bzr),但我对它们的经验较少。 Subversion(svn)是一个中心化的版本控制工具。通过一些解决方法,您可以使其在您的环境中运行,但它确实无法解决您想要解决的问题。我不知道为什么其他响应者会建议它。

答案 2 :(得分:2)

我猜Mercurial很适合您的需求。

  • 它是用Python编写的,所以在Windows下运行它不会有任何问题。
  • 可以使用补丁或捆绑包在本地轻松应用更改
  • 有几个GUI tools可用(寻找TurtoiseHG)

Mercurial是我个人使用的VCS。真的很容易学习。你肯定想尝试一下Git,因为它对Windows的支持更好。

答案 3 :(得分:2)

我爱集市:http://bazaar-vcs.org/

它满足您的要求,而且非常易于使用。

答案 4 :(得分:2)

  

感谢您的回答。 Mercurial看起来很不错,但它是否支持将存储库从一个目录合并到另一个目录,或者我是否必须设置本地网络才能合并?

是的。 所有 DVCS支持此功能。这与服务器合并的唯一区别通常是您将适当的命令传递给本地文件路径而不是URL。

在Mercurial中,它看起来像这样:

假设您有两个存储库,一个在硬盘上(C:\ Project),另一个在闪存驱动器上(F:\ Project):

  

cd C:\Project

     

hg pull F:\Project

同样,如果您在同一系统上有两个存储库:

  

cd C:\Project

     

hg pull C:\Project1

如果需要合并,它会创建两个“头”并要求您将它们与hg merge合并。

  

added 1 changesets with 1 changes to 1 files (+1 heads)

     

(run 'hg heads' to see heads, 'hg merge' to merge)

请注意,这与从服务器中提取和合并的情况相同。

答案 5 :(得分:0)

我发现SVN的设置和使用非常简单,特别是对于单个用户而言!

我发现有一件事非常有趣 - ssh + svn协议使用SSH能够在远程系统上运行命令行来实际启动SVN,因此在服务器外部实际上没有设置任何设置创建目录你的存储库。

如果你不喜欢CLI(Windows上的TortiseSVN),SVN有很多shell - 所以它和其他东西一样容易使用。