为什么Git比Subversion更好?

几年来,我一直在使用 Subversion ,并且在使用 SourceSafe ,我只是喜欢Subversion。结合 TortoiseSVN ,我真的无法想象它会如何更好。

然而越来越多的开发者声称Subversion有问题,我们应该转向分布式版本控制系统的新品种,比如 Git

Git如何改进Subversion?

0
额外 编辑
意见: 6
有趣的是,作为最近编辑的一部分发布的更多详细信息与 sharepointoverflow.com/questions/966/…
额外 作者 Darren Kopp,
这是VseWss 1.3自带的,不是吗?
额外 作者 Darren Kopp,
也许你应该发布一个链接,指出你试图运行的命令应该起作用。
额外 作者 Darren Kopp,
你可以说得更详细点吗? Bousfield本地化对消失的周期有什么关系?
额外 作者 Stephen Pellicer,
将提到的任何芯片在 electronics.stackexchange.com/questions/6676/… 为你工作?
额外 作者 Jeremy Ruten,
尝试在标题中提问。另外,真实姓名真棒。
额外 作者 Jarrod Dixon,
“存在的类比...”不仅不是英语,而且是蹩脚的。 :-)
额外 作者 Jarrod Dixon,
这让我想起拉丁的复数, analogue - > analogi
额外 作者 Ilya Nikokoshev,
“你可以说得更详细点吗?”只是在Morava在他的文章中提到的很多问题中,关于消失周期的最后评论在我看来似乎是可以理解的,但我问到的专家给出了令人费解的矛盾答案。所以,我总结错失了一些理解,并提出更多问题。浓。 “真实姓名”:匿名使得询问可能更加愚蠢的问题更容易。
额外 作者 Thomas Riepe,
@Japp,你说得对,我们正在使用VseWss 1.3,我已经更新了这个问题
额外 作者 Shiraz Bhaiji,

31 答案

你有没有试过寻找74xx系列逻辑?选择你最喜欢的味道。 74HC194和74HC195是4位移位寄存器; 74HC174(四路触发器)和74HC175(十六进制触发器)可以做成移位寄存器。

编辑:根据您的意见,为什么不使用HC594(输出)或HC597(输入)?它们是8位寄存器,可轻松级联到任意长度,兼容SPI接口以及普通老式时钟。

8
额外
我正在寻找一些能够让我把几个连接在一起的菊花链,就像Maxim的MAX6969一样,当我点击Cin时,在16个时钟周期后,它出现在Dout。因此,为了让两个相同的芯片彼此相邻,我可以发送32位数据,现在这两个芯片都将包含数据。
额外 作者 urini,

如果这太多或太少,我很抱歉;留下评论,我可以尝试纠正它。他在谈论同伦理论中的一个特定问题,我们希望更好地理解这个问题。

稳定的同伦类别(隐式地定位于素数p)具有分层为“色”层,这对应于与正式组法的连接。我们几何学上将稳定同伦类作为模系列X上的某种类型的滑轮,它有一系列开放的子分支X(n) - 这些是“E(n) - 本地分类”,并且存在Bousfield本地化函子将一般元素M赋予它的E(n) - 本地化L E(n)M,你可以认为这是限制开放子部分。 (一般的布斯菲尔德本地化将采用一些“等价”的概念,并构造一个普遍的新类,其中这些等价变成同构,但是以适当的派生方式)。

两个相邻层之间的差异X(n)\ X(n-1)是一个X(n)的闭包,它在我们的语言中是“K(n)本地类别”。还有一个Bousfield定位函数,它将元素M应用到它的K(n)定位L K(n)M. Bousfield定位是相当普遍的机器,在之前的“开放”情况下它起作用作为限制;在这种“封闭”的情况下,它就像封闭的子网一样完成。

我们对K(n)本地类别有一些总体的了解。它们的行为很像一些Lubin-Tate空间的商数叠加,它是由正式群法的自同构群组方案(它是第n个Morava稳定群S ñ</子>。在几何学上,我们认为它是一个具有相当大的自同构群的点(尽管这当然是思考事物的错误方法)。这些地方可能会变脏,并执行特定的计算并一次检查一个彩色图层。

我们需要剩下两块数据,然后,从它的本地化L K(n)来理解M本身:我们需要了解它们是如何一起打补丁到E(n) - 本地化,我们需要了解L E(n)M的极限。后者是一个“色彩收敛”问题,并不直接与所讨论的重点相关。

总的来说,有一个“修补”图,大致类似于您通常与回忆相关的数据。 (我在这种情况下最喜欢的数据是Mazur的“关于数字域的上同调论的注释”)。我们有一个(同伦)回拉图


LE(n) M  ->  LE(n-1) M
     |             |
     V             V
LK(n) M  ->  LE(n-1) LK(n) M

它告诉我们一个普通的E(n)局部对象是从一个K(n)局部对象(集中在封闭堆栈上的东西),一个E(n-1)局部对象(集中在开放堆栈上)重建的, ,并修补数据(从开放堆栈上的对象到完整对象限制到打开堆栈的映射)。这大致如下,因为任何E(n-1) - 本地对象的K(n) - 本地化是微不足道的。

将对象集中在封闭子堆附近并将其限制(以派生方式)给开放子堆的函子是Morava认为的。在这里,用布斯菲尔德定位的语言,将E(n-1)局部化应用于K(n)局部对象。他似乎提出的是,这个通用的布斯菲尔德本地化设置应该是思考消失循环函数的一种方式(我同意他对“消失”术语的厌恶),我们可以以完全派生的方式查看视图在一个大堆栈上捆绑起来,作为来自打开 - 封闭对上的修补数据。

只是为了关闭这个循环,我们在这幅图中完全不了解的是这种“反色层”的东西真正做到的。例如,我们有两个稳定器组连接到相邻高度的正式组法则,而我们并不真正了解这种情况下专门化函数的作用。

7
额外
@SGP:是的,上同调理论被认为是准连续滑轮。我想我会说,这种“消失循环”仿函数在这种情况下不能从分解成开放子集上的滑轮和闭合子集上的滑轮而获得,而是在正式方案上打开子集上的滑轮和滑轮这是它的补充完成。我同意这可能与算术回撤平方有更多的相同之处,而不是“平常”的消失周期。
额外 作者 Stephen Pellicer,
真棒回答!小混乱:上同调理论是否应该是准连续滑轮?我问,因为消失周期通常是为了$ \ ell $ -adic系数,我不知道是否有一个(有意义的)准相位滑轮周期消失的理论。
额外 作者 SGP,

我不会说我明白,但我从中得到的是以下内容:
人们可以粗略地将消失循环函数看作是来自与奇异光纤相关的回忆的胶合数据。这是一个非常普遍的gadgetry(就像Bousfield的本地化),人们可以把它看作消失循环函数的一般版本。此外,不仅可以制作与同源纤维函子及其自同形相对应的基本类群的一个版本,而且还可以将信息与开放片段和内含物相关联,人们可以希望以合理的方式将其视为围绕布斯菲尔德本地化给出的单调上升到消失的循环函子。这将允许我们定义monodromy同构以及人们希望作为形式主义的一部分的其他部分(并且实际上也可能有必要给出消失循环函子的正确定义)。

也许这是可怕的错误,但如果它有希望,它会激励有人纠正我,我可以删除它!

2
额外

Git并不比Subversion好。但也不会更糟。这不一样。

关键的区别是它是分散的。想象一下,你是一名开发人员,在笔记本电脑上开发,并且希望拥有源代码控制权,以便可以返回3小时。

使用Subversion,你有一个问题:SVN信息库可能位于一个你无法访问的位置(在你的公司,而你目前没有互联网),你不能提交。如果你想复制你的代码,你必须从字面上复制/粘贴它。

使用Git,你没有这个问题。您的本地副本是一个存储库,您可以承诺它并获得源代码管理的所有好处。当您重新获得与主存储库的连接时,可以对其进行提交。

这看起来不错,但要记住这种方法增加了复杂性。

Git似乎是“新的,有光泽的,酷”的东西。这绝对不是坏事(因为Linus为Linux内核开发写了一个理由),但是我觉得很多人跳过“分布式源代码控制”列车,只是因为它是全新的,并且由Linus Torvalds编写,而没有实际上知道为什么/如果它更好。

Subversion有问题,但Git,Mercurial,CVS,TFS或其他。

Edit: So this answer is now a year old and still generates many upvotes, so I thought I'll add some more explanations. In the last year since writing this, Git has gained a lot of momentum and support, particularly since sites like GitHub really took off. I'm using both Git and Subversion nowadays and I'd like to share some personal insight.

首先,当分散工作时,Git可能会让人感到困惑。什么是遥控器?以及如何正确设置初始仓库?是一开始就提出的两个问题,尤其是与SVN简单的“svnadmin create”相比,Git的“git init”可以采用参数--bare和--shared,这似乎是“正确”设置集中的方式库。这是有原因的,但它增加了复杂性。 “checkout”命令的文档对于人们转换非常困惑 - “正确”的方式似乎是“git clone”,而“git checkout”似乎改变了分支。

当你分散时Git真的会闪耀。我在家里有一台服务器,路上有一台笔记本电脑,而SVN在这里根本不能很好地工作。使用SVN,如果我没有连接到存储库(我知道关于SVK或关于复制回购的方法),我不能拥有本地源代码控制。使用Git,无论如何这都是默认模式。这是一个额外的命令(git commit在本地提交,而git push origin master将主分支推送到名为“origin”的远程)。

如上所述:Git增加了复杂性。创建存储库,检出与克隆,提交与推送两种模式......你必须知道哪些命令在本地工作,哪些与“服务器”一起工作(我假设大多数人仍然喜欢中央“主存储库” )。

此外,工具仍然不足,至少在Windows上。是的,有一个Visual Studio AddIn,但我仍然使用msysgit的git bash。

SVN的优点是学习起来要简单得多:如果你知道如何创建,提交和签出,那么你的存储库和所有的变化都是针对它的,并且你准备好了以后能够像分支,更新等那样获取内容上。

如果一些开发人员并不总是连接到主存储库,那么Git的优势在于它更适合。而且,它比SVN快得多。从我所听到的来看,分支和合并的支持要好得多(这是可以预料的,因为这是它写的核心原因)。

这也解释了为什么它会在互联网上获得如此多的热门话题,因为Git非常适合开源项目:只需将它分叉,将您的更改提交到您自己的Fork,然后让原始项目维护人员进行修改。有了Git,这只是起作用。真的,在Github上试试它,这很神奇。

我还看到的是Git-SVN Bridges:中央存储库是一个Subversion回购,但开发人员在本地使用Git,然后桥接器将其更改推送到SVN。

但即使有这么长时间的补充,我仍然坚持我的核心信息:Git不会更好或更糟,它只是不同而已。如果您需要“离线源代码管理”并且愿意花费额外的时间学习它,那太棒了。但是,如果你有严格集中的源代码管理和/或努力引入源代码管理,因为你的同事不感兴趣,那么SVN的简单性和优秀工具(至少在Windows上)将大放异彩。

0
额外
不,你没有。法拉利是不切实际的,昂贵的,口渴的,如果你住在像纽约或巴黎这样的城市,不会让你从A到B更好 - 我更喜欢现代在许多地方,也因为划伤不那么严重。但是对于他自己的 - 法拉利也有(很少)优势......
额外 作者 Michael Stum,
如果你真的花了一些时间来研究它,并且你有它的工具(当然,你必须知道CVS的所有命令行工具,但这并不意味着人们真的很喜欢它们一直使用它们)。据说,很多人(我知道)说Git =好,因为莱纳斯
额外 作者 Michael Stum,
@sebnow我指的是 git initgit init --bare
额外 作者 Michael Stum,
@hasen只有当你越过更陡峭的学习曲线。我绝对喜欢它,但是在你仍然需要向开发者出售源代码控制概念的环境中(大多数时候意味着使用开发工具的Windows),SVN的出色工具和简单性只需按英里排列即可。如果(这是一个“如果”,而不是“何时”)你的开发者真的在使用源代码控制,那么git可以开始发光。我再也不会使用SVN,但是如果Git没有正确地集成到他们的工具中,并且他们不理解这个概念,那么大多数人都不会使用Git。
额外 作者 Michael Stum,
我做了一些补充,因为过去的12个月真的在Git上卖给我。它仍然是一个非常陡峭的学习曲线,在Windows上这个工具并不是很棒,但是一旦得知它非常出色。我不想听起来像一个广告客户,但TekPub的Mastering Git系列帮助我理解它,特别是(对我而言)关于“远程工作方式”的艰巨和关键的事情。
额外 作者 Michael Stum,
我的git经历并不完全是“改变人生的启示”。我认为它是一个很好的工具,当它不起作用时,那么它感觉相当粗糙。我对调试问题1052882这样的东西印象不深,即使这显然是一个RTFM问题:我认为git(和任何其他分布式vcs)比集中式更复杂,我会考虑在集中式环境中使用它。但是,再次,我主要是Windows开发人员,与SVN相比,Windows上的工具仍然不成熟。
额外 作者 Michael Stum,
@dana我也更喜欢Hayabusa = x
额外 作者 Pavel Radzivilovsky,
@Michael:软件的不同之处在于克隆几乎不需要任何成本。因此,只有一个设计才有生存权。几乎没有市场可以共享,这就是为什么它不像汽车。
额外 作者 Pavel Radzivilovsky,
Git似乎并不复杂。学习如何使用它,只需几分钟,如果你有良好的分步指导。它在GitHub和Stack Overflow等网站上有很好的支持。
额外 作者 B Seven,
呃,你可以在你的本地计算机上托管一个svn服务器?
额外 作者 bevacqua,
@Michael Stum:“git很难”模因完全是一个神话。我发现git比svn容易得多。我从来没有真正理解颠覆; git只是有道理。尽管我同意你的观点,但向窗户人推销可能会有点困难。
额外 作者 hasen,
我很惊讶这是最高票的答案! (来自git affectionados的AFAICT)git不仅仅是离线的svn - 它是一个全新的改变生活的启示。我怀疑这是由svn球迷厌恶听到关于git是多么伟大的投票。
额外 作者 Paul Biggar,
您只分析比较中的分布方面。我会告诉你为什么。因为你只想分享代码。 Git和SVN不仅仅是这些,你有没有标记,分支,合并,解决冲突,在分支之间复制补丁?我认为你的分析是有缺陷的。在这些方面,git是一个非常强大的工具。更不用说git可以做的事情了,SVN也不能像压扁,感染,修改,重新设计,挑选樱桃以及其他更多的东西。
额外 作者 mschonaker,
Newflash:开发人员以外的人员使用版本控制系统。看,我敢肯定git是第二次到来,但作为svn管理员,我们有非开发人员使用它(主要是通过TortoiseSVN),我99%肯定如果我们的开发人员要求git,我会保持2版本控制系统而不是一个。另外:有多少问题和错误跟踪系统允许配置多个RCS?
额外 作者 si618,
我也认为GIT的倡导可以将此放在心上。你可以殴打原则和谁使用它多年,但在第一次被滤除后。它可以使用更实际的解释(比如工作流程通常的样子)而不是抽象的讨论。
额外 作者 Marco van de Voort,
对不起,但我不得不给这一票倒票。并非真正意义上的,也没有好的论点,以及克隆和签出这两个完全不同的操作混淆混搭!
额外 作者 gilligan,
当人们说Git比Subversion快时,他们是否将Git本地签入与Subversion远程签到进行比较?这似乎不是一个公平的比较,因为本地签入不在其他人看到的中央存储库中,并且如果您的本地副本被损坏或丢失,将不会被备份...
额外 作者 Chris Jaynes,
Git比svn好。客观。事实。任何人声称否则不知道git,并试图合理化避免投资学习,或者只是因为与SVN有某种情感关系而对评估不合理。
额外 作者 Charlie Flowers,
应该注意的是,Jira允许一次配置多个存储库和多种类型的repo,以用于那些感兴趣或对修订控制有不同需求的人。
额外 作者 krystan honour,
分布并不是Subversion和Git之间的唯一区别。它也不会增加任何复杂性,除非您使用多个存储库。使用Git而不是Subversion有很多优点,但只有少数(通常不明显)的缺点。使用Git是因为它很好,没有光泽。
额外 作者 sebnow,
OP似乎对Git感到困惑,或者我是误解。有没有“两种创建回购模式”, git clone ~~ svn co <�​​/ code>, git push ~~ svn ci < / code>, git commit ~~ svn add / rm / etc 。如果您对VCS的工作原理有所认识,那么Git就很难学。我从mercurial开始,去git,然后不得不学习SVN。猜猜哪个是最难使用的? SVN!我开始使用git-svn,因为SVN太可怕了。关于svn如何使用术语“结账”没有任何“正确的”。
额外 作者 sebnow,
啊,在这种情况下,我会假设 svnadmin create ~~ git init --bare- bare 和normal之间唯一的区别是普通的repo有一个工作目录(文件被签出)。这通常仅用作服务器/中央存储库,并且可以被典型用户忽略。从这个意义上说,SVN有两种创建回购的方式; svnadmin create svn co <�​​/ code>。
额外 作者 sebnow,
我将不得不投入“Git和/或Hg是改变生活的启示”人群。 IMO,git> svn,hg> svn,git == hg。 Subversion使用一个固有的内部模型来存储它。
额外 作者 haydenmuhl,
@gilligan,我同意。我发现这个答案唯一的好处是:它是正确的(“没有更好/没有更坏,只是不同”)。
额外 作者 inger,
问题是“为什么git更好?”,而最高评级(和选定)的答案从“Git不好”开始。热闹。
额外 作者 Mark Beckwith,
法拉利并不比现代好。但也不会更糟。这不一样。 (什么?不要这样盯着我......我说错了什么?)
额外 作者 F.D.Castel,
@ steve314:抱歉,迟到的回应。对您的汽车或VCS选择印象深刻的女性类型很浅,可能需要高度维护。她会给你带来一些新的纠缠量子纠错VCS的人的心跳,让你的所有副本立即提交。
额外 作者 Hugh Brackett,

有了Git,你几乎可以离线执行任何事情,因为每个人都有自己的存储库。

分支之间的合并和分支之间的合并非常简单。

即使您没有项目的提交权限,您仍然可以使自己的存储库联机,并为您的补丁发布“推送请求”。每个喜欢你的补丁的人都可以将他们拖入他们的项目中,包括官方维护者。

分叉一个项目,修改它,并且仍然继续合并到来自HEAD分支的错误修正中是微不足道的。

Git适用于Linux内核开发人员。这意味着它非常快(它必须是),并且可以扩展到成千上万的贡献者。 Git也占用更少的空间(Mozilla存储库的空间减少了30倍)。

Git非常灵活,非常有TIMTOWTDI(有多种方法可以做到这一点)。你可以使用你想要的任何工作流程,Git将支持它。

最后, GitHub 是一个很好的网站,用于托管您的Git存储库。

Git的缺点:

  • 学习起来很难,因为Git有更多的概念和更多的命令。
  • 版本没有版本号,例如在版本中
  • 很多Git命令都很神秘,错误信息非常不友好
  • 它没有一个好的GUI(例如伟大的 TortoiseSVN
0
额外
我知道两个很好的gui是gitx(Mac)和gitg--非常好。
额外 作者 Michael Durrant,
+1给我。我认为很多开发人员忘记git缺乏像TortoiseSVN这样的东西,而且不仅开发人员使用版本控制。我不寒而栗不得不解释(和支持)分布式版本控制我们使用SVN非开发人员的思想| TortoiseSVN的!
额外 作者 si618,
另一个缺点 - 你必须拥有一个完整的版本库,你不能在部分版本上工作(如果你拥有巨大的版本,就像很多公司一样)
额外 作者 gbjbaanb,
我同意。我使用SVN和GIT(大约6个月后)。我真的很喜欢git,比我以前做过的SVN都多。学习它只是需要时间。对我来说最大的飞跃(我看到光线的那一刻:P)是当我终于意识到必须停止尝试像SVN一样使用GIT时。然后一切都落空了;)
额外 作者 Blizz,
虽然学习所有Git会更困难,但基本几乎完全相同。直到你学习更先进的东西时,学习范围并不是那么陡峭,SVN根本无法做到。
额外 作者 sebnow,
我是SVN用户,但 - 试试这个: code.google.com/p/tortoisegit
额外 作者 DiGi,
我喜欢git,但是我花了大约6个月的时间才真正有效地使用它。话虽如此,我使用了msysgit的git shell(命令提示符),msysgit的git gui和gitk以及TortoiseGit的组合。我认为TortoiseGit很棒,但我不明白为什么更多的人不使用它。我知道msysgit维护者因各种原因而感到厌恶,其中一些是意识形态的,这可能与它有关。 TortoiseGit是一个保存完好的秘密!
额外 作者 Jim Raden,

这一切都是为了做一些事情所需的易用性/步骤。

如果我在PC /笔记本电脑上开发单个项目,git会更好,因为它的设置和使用要容易得多。 您不需要服务器,并且在合并时不需要继续键入存储库URL。

如果只有2人,我会说git也更容易,因为你可以互相推拉。

一旦你超越了这一点,我会去颠覆,因为那时你需要设置一个'专用'服务器或位置。

你可以像使用SVN一样使用git来完成这项工作,但git的好处被需要执行额外步骤与中央服务器同步的需求所抵消。在SVN中,你只需提交。在git中你必须提交commit,然后git push。额外的步骤很烦人,因为你最终会这么做。

SVN也有更好的GUI工具的好处,但是git生态系统似乎很快就迎头赶上,所以我不会为长期担心。

0
额外
“实验主题分支”的争论经常是以git的名义提出来的,但说实话,我从来没有见过任何人在颠覆或者其他非DVCS系统中真正做过。也许这是一个大问题,我们都错过了,但从我看到的99%的开发人员(包括我自己)不关心主题分支,因为他们从不使用它们! - 你不能错过你从未有过的:-)。我认为,如果DVCS的人们将要提出“主题分支”作为一项功能,他们必须说服每个人这样的事情实际上是有用的。
额外 作者 Orion Edwards,
“将经过编辑的东西分解成更小的提交”再一次在理论上听起来不错。但是,在过去的三年里,我一次都没有想过“哦,我希望我能做到这一点”,我甚至想出了一个假设的情况,我可能想要这个功能。 ..很多git / DVCS的拥护者只是说“我们有X和X很棒”,而其他人都坐在那里想知道他们为什么需要X
额外 作者 Orion Edwards,
Git中的发布与分离是IMHO的优势,而非劣势。
额外 作者 Jakub Narębski,
好的,那么如何评价SVN的“易用性/步骤所需的步骤”: - 为实验创建主题分支 - 将此分支合并到另一分支 - 将文件中已编辑的内容分割成他们自己的较小提交 - 快速检查一个主要分支做一个小修复恕我直言,我不明白如何设置SVN服务器比设置您的git服务器更容易。为什么你想放弃你从轻量级分支中获得的所有优点,这样你就不必“分开推动”。
额外 作者 Sam,

那么,它是分布式的。基准测试表明它速度相当快(考虑到它的分布式特性,差异和日志等操作都是本地的,所以在这种情况下它的速度更快),而工作文件夹更小(这仍然令我感到震惊)。

当你在使用Subversion或任何其他客户端/服务器版本控制系统时,通过检出修订版本,您实际上可以在您的机器上创建工作副本。这代表了仓库看起来像什么时候的快照。您通过更新更新工作副本,并通过提交更新存储库。

使用分布式版本控制,您没有快照,而是整个代码库。想与3个月大的版本做差异?没问题,3个月大的版本仍在您的电脑上。这不仅意味着速度会更快,但如果您与中央服务器断开连接,则仍然可以执行许多您习惯的操作。换句话说,你不只是给定修订的快照,而是整个代码库。

你会认为Git会在你的硬盘上占用一堆空间,但是从我看到的一些基准测试中,它实际上需要的更少。不要问我如何。我的意思是,它是由Linus构建的,他知道我猜想的文件系统有一两件事。

0
额外
为什么Git可以占用较少的磁盘空间来存储整个存储库而不是Subversion仅仅用于检出?Subversion存储“原始拷贝”以使'svn diff'(与上一版本比较)工作......并且该git存储库被压缩)。
额外 作者 Jakub Narębski,
我并不惊讶git“工作文件夹”(即回购)比svn工作副本小,因为即使svn回购比svn工作副本还要小。
额外 作者 R. Martinho Fernandes,

由于它不需要经常与中央服务器通信,所以几乎每个命令都在不到一秒的时间内运行(显然,git push / pull / fetch的速度较慢,仅仅是因为它们需要初始化SSH连接)。分支要容易得多(一个简单的分支命令,一个简单的命令合并)

0
额外

Google Tech Talk:git上的Linus Torvalds

http://www.youtube.com/watch?v=4XpnKHJAok8

Git Wiki的比较页面

http://git.or.cz/gitwiki/GitSvnComparsion

0
额外
我喜欢Linus Torvalds的视频,但他暗示git是分布式的,而不是集中式的,这是错误的。它可以以分布式方式使用,或以集中方式使用。您可以拥有一个所有人都承诺的中央存储库,就像在SVN中一样。只是你不必这样做。
额外 作者 MatrixFrog,
@MatrixForog:我认为在这种情况下,“分散”不是“集中”的对立面,而是真正的超集。这就像“移动”和“不移动” - 只是因为某些东西是“移动”,不是我不能停下来。
额外 作者 Tikhon Jelvis,
这个也很好。它来自git commiters之一,他解释了许多高级功能,如将大型提交分成较小的提交。 youtube.com/watch?v=j45cs5_nY2k
额外 作者 schoetbi,
Linus的谈话很有趣。他粗暴地破解了Subversion和CVS等集中版本控制系统。然而,兰德尔施瓦茨的 youtube.com/watch?v=8dhZ9BXQgc4 谈话更有建设性,信息量更大,更具说服力。
额外 作者 bendin,

SubVersion令我感到厌烦的一件事是,它将自己的文件夹放在项目的每个目录中,而git只将其放入根目录中。这不是很大的一笔交易,但是这样的小事增加了。

当然,SubVersion有Tortoise,通常非常好。

0
额外
.svn dirs很快就会消失,可能是v1.7
额外 作者 gbjbaanb,

这是一个错误的问题。把注意力集中在git的瑕疵上,并且为什么颠覆表面上更好,至少在某些用例中提出争论是很容易的。 git最初被设计为低级版本控制构造集,并且具有巴洛克式的面向Linux开发人员的界面,这使得圣战更容易获得牵引力和合法性。 Git的支持者在鼓中带来了数百万工作流程的优势,svn家伙宣称没有必要。很快,整个辩论就被形成为集中式和分布式,这符合企业svn工具团体的利益。这些公司通常会提出有关颠覆企业优势的最令人信服的文章,这取决于Git认为的不安全感和svn企业为其产品的长期成功做好准备。

但问题在于: Subversion是一个架构的死胡同

而你可以很轻松地使用git并构建一个集中式的颠覆替代品,尽管它的时间长达两倍以上,svn从未能够在任何地方甚至在git中实现基本的合并跟踪工作。其中一个基本原因是设计决定使分支与目录相同。我不知道他们为什么最初以这种方式出现,它确实使部分结账非常简单。不幸的是,这也使得无法正确追踪历史。现在显然你应该使用Subversion版本库布局约定将分支从常规目录中分离出来,并且svn使用一些启发式方法为日常使用情况提供工作。但是,所有这些只是对一个非常糟糕和极限的低层设计决策进行了论述。能够做一个基于版本库的差异(而不是基于目录的差异)是版本控制系统的基本和关键功能,并且极大地简化了内部,从而可以在其上构建更智能和有用的功能。你可以看到已经投入到扩展颠覆的努力量,但是就像合并分辨率这样的基本操作而言,它与现代VCS的当前作物相比还有多远。

对于任何人仍然认为Subversion在可预见的将来已经足够好的人来说,这里是我的心声和不可知论的建议:

Subversion永远赶不上从RCS和CVS的错误中学到的VCS的新品种;除非他们从头开始重新建立存储库模型,否则这是一种技术上的不可行性,但是这样做实际上并不可行吗?不管你认为自己没有多少现代VCS的能力,你的无知并不能保护你免受Subversion的陷阱,其中许多是在其他系统中不可能或容易解决的情况。

很少有人认为解决方案的技术劣势与svn一样清晰,当然我绝对不会对win-vs-linux或emacs-vs-vi这样的观点发表过看法,但在这种情况下,它是如此clearcut和源代码控制是开发者库中的一个基本工具,我觉得必须明确地说明。无论使用svn出于组织原因,我都恳求所有svn用户不要让他们的逻辑思维构建一个错误的观点,即更现代的VCS只能用于大型的开源项目。不管开发工作的性质如何,如果你是一名程序员,如果你学习如何使用设计良好的VCS,无论是Git,Mercurial,Darcs还是其他许多人,你都将成为更有效的程序员。

0
额外

Git也使得分支和合并非常简单。 Subversion 1.5刚刚添加合并跟踪,但Git仍然更好。与Git分支是非常快速和便宜的。它使得为每个新功能创建分支更加可行。与Subversion相比,哦和Git仓库对存储空间非常有效。

0
额外

有几个答案已经提到这些,但我想明确2点:

1)能够做选择性提交(例如, git add --patch )。如果您的工作目录包含多个不属于同一逻辑更改的更改,则Git可以非常容易地进行仅包含部分更改的提交。有了Subversion,这很困难。

2)在不公开变更的情况下进行承诺的能力。在Subversion中,任何提交都立即公开,因此是不可撤销的。这极大地限制了开发人员“提前提交,经常提交”的能力。

Git不仅仅是一个VCS;它也是开发补丁的工具。 Subversion仅仅是一个VCS。

0
额外
@schoetbi不,仓库的负责人和以前一样。存储库本身现在包含两个提交,而如果它们都不在那里,它会很好。这是额外的混乱,当你通过日志查看时减慢你的速度。当然,这也可能发生在git上,特别是如果一些开发者习惯于在提交后立即推送。但在git中避免更容易。
额外 作者 MatrixFrog,
Re 1)如果你使用的是TortoiseSVN,AnkhSVN等,那么选择哪些文件需要提交更改是很容易的(微不足道)。 2)如果你不想让其他开发者获得你的代码,那么创建一个分支,然后在准备好时合并,这并不难。
额外 作者 si618,
不可撤销的?那么你可以反向合并错误的提交和存储库就像以前一样。但是你说的没错。但这是好还是坏?我想这取决于...
额外 作者 schoetbi,

首先,并发版本控制似乎是一个容易解决的问题。这根本不是。无论如何...

SVN非常不直观。 Git更糟糕。 [讽刺猜测]这可能是因为像并发版本控制这样的难题的开发人员对制作好用户界面没有多大兴趣。 [/讽刺投机]

SVN支持者认为他们不需要分布式版本控制系统。 我也这么认为。但现在我们只使用Git,我是一个信徒。现在版本控制适用于我和团队/项目,而不是仅仅为项目工作。当我需要一个分支时,我分支。有时候它是一个在服务器上有相应分支的分支,有时它不会。更不用说所有其他的优点了,我必须去研究一下(部分归功于现代版本控制系统的神秘而荒谬的UI缺乏)。

0
额外

所有的答案都如预期的那样,程序员是中心的,但是如果你的公司在源代码之外使用修订控制会发生什么?有许多源代码不受版本控制的影响,应该靠近代码而不是在另一个CMS中。大多数程序员不是孤立地工作 - 我们为公司工作,作为团队的一部分。

考虑到这一点,比较Subversion和git之间在客户端工具和培训中的易用性。我看不到任何分布式版本控制系统将更容易使用或解释给非程序员的情景。我喜欢被证明是错误的,因为那样我就能够评估git,并且实际上有希望被需要版本控制但不是程序员的人接受。

即便如此,如果管理层问我们为什么要从集中式版本转向分布式版本控制系统,我很难给出诚实的答案,因为我们不需要它。

免责声明:我早在(v0.29左右)就对Subversion产生了兴趣,所以显然我有偏见,但从那时起我一直在为这些公司工作的公司都从我的热情中受益,因为我鼓励并支持它的使用。我怀疑这是大多数软件公司的情况。有这么多程序员跳上git潮流,我想知道有多少公司会错过在源代码之外使用版本控制的好处?即使您针对不同的团队有单独的系统,您也会错过一些好处,例如(统一)问题跟踪集成,同时增加维护,硬件和培训要求。

0
额外
无论如何,非程序员已经有了颠覆问题。给他们一个具有版本控制的实际文档发布应用程序比使用svn-GUI要好得多。为什么不将修改后的文档写入wiki?甚至还有一些使用git作为数据存储的git powered wikis。程序员应该拥有最好的工具,因为工作流程的自由性,这就是git或Hg。
额外 作者 Keyo,
例如,我的意思是集成到Windows(TortoiseSVN)和Visual Studio(AnkhSVN)中。是否所有开发人员都喜欢使用命令行而不是使用良好的GUI或IDE?我所说的是,我认为你不能断言git / Hg是这个工作的最佳工具,因为如果人们不喜欢VCS客户端,他们就不会使用该工具,否则重要的是它给你的工作流程带来了多少自由。
额外 作者 si618,
@Keyo,是的,这是真的,非程序员需要时间才能获得Subversion,但我认为他们需要花更长时间才能完成git或Hg。 Wiki如果得到维护是很好的,但根据我的经验,如果开发人员接近源代码,他们更有可能维护与源代码相关的文档。我同意inger的观点,并没有那么多适合这个类别的文件,但它们当然存在。有趣的是,你说git / Hg是工作的最佳工具,这是一个全面的声明,可能在所有情况下都不是这样,git和Hg与SVN一样好吗?
额外 作者 si618,
我认为你不能说“这是唯一有效的原因”,AFAIK对Subversion的工具支持远远优于Git,例如, TortoiseSVN以及与Eclipse等Visual Studio和Java IDE的集成。这对你来说可能不是问题,但它对我们肯定是一个问题。我在答复中没有提到它,因为这是一个单独的问题。
额外 作者 si618,
恕我直言,这是支持SVN的唯一有效理由。简而言之,向非程序员解释更容易,也就是说,希望以线性方式使用它并避免复杂的(=真实的)VC场景的人:冲突,3路合并,分支......我的意思是,你会永远不想让VCS合并一个PowerPoint演示文件文件..
额外 作者 inger,
“大多数程序员不是孤立地工作”似乎表明会计师/市场营销人员必须在保存源代码的情况下使用相同的回购协议。我没有看到这样的好处;一些我的前任公司想要在这样的事情上标准化,但它不可避免地失败了。我认为简单的方法对经理来说可能很好,但对于程序员团队来说过于简单化 - 所以统一这些导致了一个不好的妥协。
额外 作者 inger,
对于随软件一起提供的文档,你是对的 - 它们应该一起进行版本管理。我发现那些比人们想象的要少得多的东西(我们最终从源代码回购中剔除了大量的树文件)。此外,如果简化技术编写人员的工作流程等,如果这是一个问题(不应该),您可以做很多事情。
额外 作者 inger,

Easy Git has a nice page comparing actual usage of Git and SVN which will give you an idea of what things Git can do (or do more easily) compared to SVN. (Technically, this is based on Easy Git, which is a lightweight wrapper on top of Git.)

0
额外

Eric Sink from SourceGear wrote series of articles on differences between distributed and nondistributed version controls systems. He compares pros and cons of most popular version control systems. Very interesting reading.
Articles can be found on his blog, www.ericsink.com:

0
额外

有趣的是: 我在Subversion Repos中托管项目,但通过Git Clone命令访问它们。

Please read Develop with Git on a Google Code Project

虽然Google Code本身就是这样说的   Subversion,你可以轻松使用Git   在开发期间。搜索“git   svn“暗示这种做法是   广泛的,我们也鼓励你   尝试它。

在Svn Repository上使用Git使我受益匪浅:

  1. 我可以在几个人的电脑上工作分发 机器,承诺和拉动 和他们
  2. 我有一个中央 backup / public svn存储库供其他人检出
  3. 他们可以自由使用Git
0
额外
这是过时的,谷歌代码mercurial,所以不需要这个黑客了
额外 作者 Sam Saffron,
@Sam除非你碰巧喜欢git和/或不喜欢mercurial。
额外 作者 MatrixFrog,

我最近一直在Git的土地上工作,我喜欢它的个人项目,但我不能从Subversion转换工作项目到它,因为考虑到员工需要的思维变化,没有任何紧迫的好处。此外,我们内部运营的最大项目极其依赖于 svn:externals 从我迄今为止所看到的,这在Git中并不能很好地和无缝地工作。

0
额外

为什么Git比X好”概述了Git与其他SCM的各种优缺点。

简述:

  • Git tracks content rather than files
  • Branches are lightweight 和 merging is easy, 和 I mean really easy.
  • It's distributed, basically every repository is a branch. It's much easier to develop concurrently 和 collaboratively than with Subversion, in my opinion. It also makes offline development possible.
  • It doesn't impose any workflow, as seen on the above linked website, there are many workflows possible with Git. A Subversion-style workflow is easily mimicked.
  • Git repositories are much smaller in file size than Subversion repositories. There's only one ".git" directory, as opposed to dozens of ".svn" repositories (note Subversion 1.7 和 higher now uses a single directory like Git.)
  • The staging area is awesome, it allows you to see the changes you will commit, commit partial changes 和 do various other stuff.
  • Stashing is invaluable when you do "chaotic" development, or simply want to fix a bug while you're still working on something else (on a different branch).
  • You can rewrite history, which is great for preparing patch sets 和 fixing your mistakes (before you publish the commits)
  • ? 和 a lot more.

有一些缺点:

  • There aren't many good GUIs for it yet. It's new 和 Subversion has been around for a lot longer, so this is natural as there are a few interfaces in development. Some good ones include TortoiseGitGitHub for Mac.
  • Partial checkouts/clones of repositories are not possible at the moment (I read that it's in development). However, there is submodule support. Git 1.7+ supports sparse checkouts.
  • It might be harder to learn, even though I did not find this to be the case (about a year ago). Git has recently improved its interface 和 is quite user friendly.

在最简单的用法中,Subversion和Git几乎相同。以下几点没有太大的区别:

svn checkout svn://foo.com/bar bar
cd bar
# edit
svn commit -m "foo"

git clone [email protected]:foo/bar.git
cd bar
# edit
git commit -a -m "foo"
git push

Where Git really shines is branching 和 working with other people.

0
额外
额外 作者 Zaz,
@awe,这就是所谓的文件跟踪。尝试重命名该文件,或手动将它移动到其他地方[相同的内容,新文件(由于新的路径/名称)]:SVN是否知道这是相同的文件,并保留您对之前进行的无数次修改?不,我想不是。
额外 作者 Filip Dupanović,
你说GIT跟踪内容而不是文件。我发现SVN也是这样做的:我只是修改了一个文件并保存了它。 SVN将该文件显示为红色(已更改)。然后我在编辑器中撤消并再次保存。即使文件发生了变化,SVN也会将状态更新为绿色(未更改),但SVN确认内容未从原始更改。
额外 作者 awe,
svn跟踪文件间的变化吗?
额外 作者 Seun Osewa,

为什么我认为Subversion比Git更好(至少对于我工作的项目),主要是因为它的可用性和更简单的工作流程:

http://www.databasesandlife.com/why-subversion-is-优于混帐/

0
额外

I think Subversion is fine.. until you start merging.. or doing anything complicated.. or doing anything Subversion thinks is complicated (like doing queries to find out which branches messed with a particular file, where a change actually comes from, detecting copy&pastes, etc)...

我不同意获胜的答案,说GIT的主要优点是脱机工作 - 这当然是有用的,但它更像是一个额外的用例。 SVK也可以离线工作,对我来说,仍然没有问题可以投入我的学习时间)。

只是它非常强大和快速,而且在习惯这些概念之后 - 非常有用(是的,从这个意义上说:用户友好)。

For more details on a merging story, see this : Using git-svn (or similar) *just* to help out with an svn merge?

0
额外

总的来说,Git和DVCS对开发人员独立于彼此进行大量编码非常有用,因为每个人都有自己的分支。然而,如果你需要从别人那里改变,她必须承诺自己的本地回购,然后她必须将这个改变集推给你,否则你必须从她那里拿走它。

我自己的推理也让我认为,如果您执行集中式发布等操作,DVCS会使QA和发布管理变得更加困难。有人必须负责从其他人的存储库进行推送/解压,解决在最初提交时间之前解决的任何冲突,然后执行构建,然后让所有其他开发人员重新同步其回购。

当然,所有这些都可以通过人类进程来解决。为了提供一些新的便利,DVCS刚刚打破了通过集中版本控制解决的问题。

0
额外
实际上,如果你看起来像Linux内核,或者git项目本身是托管的,你会发现Git对于'单个维护者'(或者维护者+中尉)工作流程非常有用,其中一个核心是合作仓库。而且,作为维护人员可以很容易地将临时切换到其他人。
额外 作者 Jakub Narębski,

我喜欢DVCS的主要观点是:

  1. 你可以犯下破碎的东西。这并不重要,因为其他人在你发布之前不会看到它们。发布时间与提交时间不同。
  2. 正因为如此,您可以更频繁地提交。
  3. 您可以合并完整的功能。这个功能将会有它自己的分支。此分支的所有提交都将与此功能相关。您可以使用CVCS执行此操作,但DVCS默认为
  4. 您可以搜索您的历史记录(查找功能发生变化时)
  5. 如果有人搞砸了主存储库,您可以撤消拉,你不需要修复错误。只需清除合并。
  6. 在任何目录中需要源代码控制时:git init。你可以提交,取消更改等等。
  7. 速度很快(甚至在Windows上)

一个相对较大的项目的主要原因是由点3创造的改善的沟通。其他人是很好的奖金。

0
额外
+1“你可以犯下破碎的东西。”是我考虑从svn切换到git的主要原因。当我在开发一个庞大的代码块时,我总是很讨厌,而且我没有VCS的安全网(仅仅因为我的修改还没有工作,所以我不允许提交)。
额外 作者 András Szepesházi,
谢谢,你是对的。固定。
额外 作者 Emmanuel Caradec,
我认为第一点意图是说“其他人在您发布之前不会看到它们”(或“推送”)。
额外 作者 jackr,

Subversion仍然是一个更加使用的版本控制系统,这意味着它有更好的工具支持。几乎所有的 IDE 都会找到成熟的SVN插件,并且有很好的浏览器扩展可用(像TurtoiseSVN)。除此之外,我必须同意迈克尔:Git并不比Subversion更好或更差, 这不一样。

0
额外
但是现在,在广泛使用git几年之后,我需要不同意自己的看法:Git比Subversion更好。至少一旦你了解Git的不友好的语法。
额外 作者 neu242,

其他答案在解释Git的核心特性方面做得很好(这很好)。但也有很多少许方式让Git表现更好,并有助于让我的生活更加健康。以下是一些小东西:

  1. Git has a 'clean' command. SVN desperately needs this command, considering how frequently it will dump extra files on your disk.
  2. Git has the 'bisect' command. It's nice.
  3. SVN creates .svn directories in every single folder (Git only creates one .git directory). Every script you write, and every grep you do, will need to be written to ignore these .svn directories. You also need an entire command ("svn export") just to get a sane copy of your files.
  4. In SVN, each file & folder can come from a different revision or branch. At first, it sounds nice to have this freedom. But what this actually means is that there is a million different ways for your local checkout to be completely screwed up. (for example, if "svn switch" fails halfway through, or if you enter a command wrong). And the worst part is: if you ever get into a situation where some of your files are coming from one place, and some of them from another, the "svn status" will tell you that everything is normal. You'll need to do "svn info" on each file/directory to discover how weird things are. If "git status" tells you that things are normal, then you can trust that things really are normal.
  5. You have to tell SVN whenever you move or delete something. Git will just figure it out.
  6. Ignore semantics are easier in Git. If you ignore a pattern (such as *.pyc), it will be ignored for all subdirectories. (But if you really want to ignore something for just one directory, you can). With SVN, it seems that there is no easy way to ignore a pattern across all subdirectories.
  7. Another item involving ignore files. Git makes it possible to have "private" ignore settings (using the file .git/info/exclude), which won't affect anyone else.
0
额外
广告。 7.使用现代的git,你也可以通过在〜.gitignore中使用core.excludesFile配置变量(参见man git-config)来让每个用户的“private”忽略设置。
额外 作者 Jakub Narębski,
@Chris:你可以明确地做到这一点: git mvgit rm
额外 作者 R. Martinho Fernandes,
我还希望看到每个工作副本都有一个.svn目录选项,但记录如下:对于#3:大多数工具将(默认情况下)忽略.svn目录。对于#6:您可以递归地设置属性。
额外 作者 si618,
Re#5:虽然这通常是正确的,但有时候Git会把它搞砸。至少在Subversion中,移动或删除引起的问题几乎总是PEBKAC。虽然自动移动/删除跟踪很不错,但我仍然至少感谢能够明确说明我对存储库中的文件做了什么,即使我不需要使用它。
额外 作者 Chris Charabaruk,
3:当WC-NG被实现时,“单个.svn”目录将与SVN 1.7一起在这里。 1:为了获得SVN清理,您可以通过WC的顶部“导出”。 5:它不那么容易,如果你重命名一个文件,git是否可以识别它并保留历史记录,或者将其视为目录中的添加和删除? 6/7:svn具有全局忽略每个用户的客户端设置。
额外 作者 gbjbaanb,
我一个人不关心git被分发。但这正是由于这些小事情,特别是#3和#5,我转而使用git。
额外 作者 CodesInChaos,
有svn-bisect。这是笨拙的,但它是和工作。
额外 作者 sanmai,
回复:#3“你每做一个grep”:你需要“ack”: betterthangrep.com
额外 作者 janmoesen,
我遇到了svn的#4,#6和#7问题。指出他们为w.r.t.饭桶。
额外 作者 Sushant,
我不明白#3和#5是如何都是真的......在我看来,每个文件夹都有一个.svn文件可以无缝地移动内容,而且在一个中心位置跟踪很难运动...
额外 作者 Dan,
我认为#5对于“git比svn更难学”的论点是一个完美的对照。我看到有这么多的源代码控制新手受到这个困扰。他们 svn添加一个文件,做更多的工作,决定删除文件,然后当他们运行 svn ci 时,他们脸上的一切都会显现出来。
额外 作者 Sharpie,

我喜欢Git,因为它实际上可以帮助开发人员在大中型团队中进行沟通。作为一个分布式版本控制系统,通过其推/拉系统,它可以帮助开发人员创建源代码生态系统,帮助管理大量开发单个项目的开发人员。

例如,假设您信任5位开发人员并仅从其存储库中提取代码。每个开发人员都有自己的信任网络,从他们拉代码的地方。因此,开发基于开发人员共享代码责任的开发人员的信任结构。

当然,在这里的其他答案中还提到了其他好处。

0
额外

Subversion非常易于使用。在过去的几年中,我从未发现过问题,或者某种东西不能按预期工作。另外还有许多优秀的GUI工具,SVN集成的支持很大。

借助Git,您可以获得更灵活的VCS。您可以像使用SVN一样使用它,在远程存储库中提交所有更改。但是,您也可以将它主要脱机使用,并且只将更改不时地推送到远程存储库。 但Git更复杂,学习曲线更陡峭。我第一次发现自己犯了错误的分支,间接创建分支或收到错误消息,但没有提供有关错误的信息,以及我必须在哪里搜索Google以获取更好的信息。 一些简单的事情,如标记替换($ Id $)不起作用,但GIT有一个非常灵活的过滤和钩子机制来合并自己的脚本,所以你可以获得所有你需要的东西和更多,但它需要更多的时间和阅读文档;)

如果您在本地存储库中主要脱机工作,那么如果本地计算机上丢失了某些内容,则无法进行备份。使用SVN,您主要使用远程存储库,这也是您在另一台服务器上备份的同时... Git可以以同样的方式工作,但这不是Linus拥有像SVN2这样的主要目标。它专为Linux内核开发人员和分布式版本控制系统的需求而设计。

Git比SVN更好吗?只需要一些版本历史记录和备份机制的开发人员在SVN中生活得非常愉快。经常与分支机构合作的开发人员,同时测试更多版本或主要脱机工作的开发人员可以从Git的功能中受益。有一些非常有用的功能,比如在SVN中找不到可以使生活更轻松的隐藏功能。但另一方面,并​​非所有人都需要所有功能。所以我看不到SVN的死亡。

Git需要一些更好的文档,错误报告必须更有帮助。现有的有用GUI也很少。这次我只发现了1个支持大多数Git功能(git-cola)的Linux GUI。 Eclipse集成工作正常,但未正式发布,并且没有正式的更新站点(只有一些外部更新站点具有定期从主干构建的版本 http://www.jgit.org/updates ) 所以今天最好的使用Git的方式是命令行。

0
额外

我非常喜欢能够在Git中管理我的源代码的本地分支,而不会混淆中央存储库的水。在很多情况下,我会从Subversion服务器检出代码并运行本地Git存储库,以便能够执行此操作。初始化一个Git仓库并不会污染文件系统,这在每个地方都有一堆烦人的.svn文件夹也是很好的。

就Windows工具支持而言,TortoiseGit很好地处理了基础知识,但我仍然更喜欢命令行,除非我想查看日志。我非常喜欢Tortoise {Git | SVN}在阅读提交日志时提供的帮助。

0
额外

David Richards WANdisco博客Subversion / GIT

GIT的出现带来了一批DVCS原教旨主义者? Gitterons? ?认为GIT以外的任何东西都是废话。 Gitterons似乎认为软件工程发生在他们自己的岛屿上,并且经常忘记大多数组织不会专门聘用高级软件工程师。这没关系,但这不是市场其他人的想法,我很乐意证明这一点:GIT在最后一面看不到市场的三分之一,而Subversion在500万用户的区域内约占整个市场的一半。     我们看到的问题是,Gitterons在Subversion发射(廉价)镜头。 Tweets like?Subversion是如此[缓慢/蹩脚/严格/不闻味道好/以一种有趣的方式看着我]现在我拥有GIT,[我的生活中一切都很顺利/我的妻子怀孕了/我找到了一个女朋友之后30年的尝试/我在二十一点桌上赢了六次]。你得到的照片。
0
额外
具有讽刺意味的是,Git是专门创建的,因为软件工程不在岛上发生。这句话是无稽之谈。
额外 作者 Ben Collins,
尽管我使用git,但我也很乐意与Mercurial等任何体面的DVCS一起工作。 DVCS概念需要时间才能获得普及,现在我看到大量的开源项目已经切换到git。
额外 作者 Keyo,
通过将svn诋毁者描绘成原教旨主义者,David正在侧重解决基本问题:颠覆体系是一个死胡同。并不是说git就是VCS的终极一切,它确实有它的瑕疵,但是git,mercurial,darcs和许多其他VCS都拥有更为优雅的存储库模型。 Subversion永远不会合并工作,因为目录==分支模型使真正的进展变得不可能。像大卫这样的公司可以在猪身上涂抹越来越多的口红,但svn将不可避免地落后于现有技术。
额外 作者 gtd,
请注意,David Richards可能没有偏见:他制作的产品是基于Subversion(或Subversion的想法),所以当然他会是pro-Subversion和反Git。
额外 作者 Jakub Narębski,

对于寻找一个好的Git GUI的人来说,可能是一个很好的解决方案。它的专有,但免费用于非商业用途,运行在Windows / Mac / Linux上,甚至支持使用某种git-svn桥接的SVN,我想。

0
额外
看起来不错,如果他们有SmartHg也会很棒!
额外 作者 Regent,