使用Git或Hg,如果整个团队使用来自中央服务器的pull and push,它与SVN有什么不同?

nop*_*ole 2 svn git mercurial dvcs

比如,如果整个团队使用Git或Mercurial正在做:

(例如Mercurial(Hg)):

hg pull
hg update

  [edit files or add files, and test]

hg add .
hg commit -m "good"
hg push
Run Code Online (Sandbox Code Playgroud)

我不知道它与使用SVN有何不同?如果团队从不推送或拉到另一个成员,而只是拉动并推送到中央服务器.(除非我们说合并更好,但合并是SVN或Git/Hg的工作,只取决于他们做的工作有多好,但不取决于它是否是DVCS(分布式版本控制系统)).真的吗?

JWW*_*ker 7

一个区别是您不必每次提交都要推送.例如,我经常在编码的一天内提交几组更改,然后在一天结束时推送一次.


And*_*all 5

使用Subversion,每个人在给定时间只在其本地计算机上有一个存储库版本,他们无法在不连接到中央存储库的情况下查看修订历史记录或回滚到以前的版本.使用Git和Mercurial,每个人都拥有存储库的完整副本,因此可以在本地执行上述所有操作,而无需连接到中央存储库.

Git和Mercurial只需要连接到存储库来推送本地提交的提交并获取尚未在本地存储库中提交的提交.如果没有与中央存储库的连接,Subversion根本无法运行.


Mat*_*ieu 5

我认为你的陈述一般都是正确的,同时可以有很多不同的答案.

DVCS为您提供了像svn这样的中央存储库模型无法实现的可能性:

  • 当服务器关闭时,用户仍然拥有整个历史记录,并且可以像没有任何事情一样工作.
  • 团队成员可以在不通过中央服务器的情况下在他们之间共享更改/分支.
  • 您可以将存储库的子集公开给不同的组(假设您拥有最新且最好的功能,您不希望向外部承包商公开,这些承包商仍然需要访问具有相同基本代码的'a'存储库.
  • 用户可以将他的更改提交到他的本地存储库并保持其本地状态,直到他对它满意为止(并且可以在推送之前重新编写历史记录以使其更清洁)
  • 通常,您在本地拥有整个存储库这一事实可以使某些操作更有效,尤其是在查看日志,比较历史记录中的文件等时.

我相信更多的可能性.这一切都取决于您的工作环境以及您可能想要使用的功能.