|
|
1
13
可靠性如果你的硬盘开始悄无声息地破坏数据,你很想知道它。Git对你所做的每件事都进行了一次哈希运算。你有一个SVN的中央回购协议,如果它的位被一个有故障的硬盘控制器悄悄地修改,你不会知道,直到它太晚了。 既然你有一个中央回购, 你把你唯一的生命线给炸了 . 用Git, 每个人 有一个相同的回购协议,完整的变更历史,其内容可以完全信任,因为sha1的完整形象。因此,如果你备份你的头的20字节sha1,你可以肯定,当你从某个不受信任的镜像克隆,你有完全一样的回购你失去了! 分支(和命名空间污染)当你使用集中回购时,所有的分行都在那里供全世界看到。你不能开私人分行。你必须建立一个分支,而不是与其他全局名称冲突。
每个人都必须看到这些有愚蠢名字的分支。你必须服从公司的政策,这可能会遵循“除非你 真正地 “需要”,这阻止了git带来的许多自由。 和承诺一样。当你承诺的时候,你最好是 真正地 当然你的代码是有效的。否则你会破坏建筑。没有中间承诺。”因为他们都去中央回购。 跟吉特在一起你一点也不胡说。分支并在本地提交所有您想要的内容。当你准备向世界其他地方公开你的更改时,你会要求他们从你身上撤走,或者把它推到某个“主要”的git回购协议上。 性能
因为你的回购协议是本地的,所有的风险投资操作
快速的
而且不需要往返和从中央服务器转移!
手表 Linus' talk 与SVN相比,这些和其他好处。 |
|
|
2
14
我一直在你现在的位置,对分布式版本控制的使用持怀疑态度。我读过所有的文章,知道理论上的论点,但我不相信。
直到有一天,我打字
我建议你也这么做——试试看。从一个小的爱好项目开始,只是为了掌握它的窍门。然后决定它是否值得用于更大的东西。 |
|
|
3
10
我是 Mercurial 开发人员,曾担任过多变的顾问。所以我觉得你的问题很有趣,希望我能回答:
现在IDE可以跟踪本地更改,而不仅仅是简单的撤消/重做,这是正确的。但是,这些文件快照与完整版本控制系统之间的功能仍有差距。 本地提交使您可以选择在提交供审阅之前在本地准备“故事”。我经常做一些涉及2-5次提交的更改。在我执行commit 4之后,我可能会返回并稍微修改commit 2(也许在我执行commit4之后,我在commit2中看到了一个错误)。这样,我不仅要处理最新的代码,还要处理最后两个提交。当所有内容都是本地的时,这是很可能的,但是如果需要与中心服务器同步,则会变得更加棘手。
一点也不酷!-) 然而,即使是中央回购,你仍然需要担心 未提交的数据 在工作副本中。因此,我认为你无论如何都应该有一个备份解决方案。 根据我的经验,人们通常在工作副本中有更大的未精简数据块,这些数据块是由一个集中的系统提供的。客户告诉我他们是如何说服开发人员至少承诺 一周一次 . 由于以下原因,这些更改通常不进行斜接:
你是 绝对正确 如果您认为以上并不是集中版本控制和分布式版本控制的问题。使用cvcs,人们可以在不同的分支中工作,因此可以轻松地避免上面的2和3。有了一个单独的丢弃分支,我也可以提交任意数量的内容,因为我可以创建另一个分支,在其中提交更完善的更改(解决方案1)。但是提交仍然很慢,所以4仍然可以应用。 使用dvcs的人通常会将他们的“本地”承诺作为穷人的备份解决方案推送到远程服务器上。他们不会推到团队其他成员工作的主服务器,而是推到另一个(可能是私有)服务器。这样,他们就可以独立工作,并且仍然保留非现场备份。
是啊,我也不喜欢这种说法。我99%的时间都有很好的互联网连接,但飞得不够快,这就成了一个问题:-) 然而,真正的论点不是你离线了,而是你可以 假装 离线。更准确地说,您可以独立工作,而不必立即将更改发送到中央存储库。 dvcs工具的设计理念是人们可以离线工作。这有许多重要的后果:
|
|
|
4
6
DVCS对我来说非常有趣,因为它:
这意味着您不依赖于其他人将其工作交付给中央回购,而是可以与不同的参与者及其回购建立更直接的关系。 |
|
|
5
2
你关于ide为你跟踪的中心论点是错误的。事实上,除了无限的撤销级别之外,大多数ide都没有这样的功能。想想分支、合并、还原、提交消息(日志)等等,我敢打赌,就连你提到的ide也不够。尤其是我怀疑它是否跟踪了您的提交(很可能是在您工作的几个不同分支上),并在您联机后将它们正确地推送到存储库中。 如果你的ide真的这么做了,我实际上会称它为一个分布式版本控制系统。 最后,如果中央存储库由于任何原因而死亡(您的服务提供商破产、发生火灾、黑客破坏了它,…),那么您在最近取出存储库的每台计算机上都有一个完整的备份。 编辑:您可以像使用集中存储库一样使用dvcs,我甚至建议至少在中小型项目中这样做。拥有一个始终在线的中央“权威”存储库可以简化很多事情。当那台机器崩溃时,你可以暂时切换到另一台机器,直到服务器得到修复。 |
|
|
6
1
如果你看不到本地历史或本地构建的价值,那么我不确定回答任何问题都会改变你的想法。 ide的历史特性是有限的和笨拙的。它们完全不同于功能。 一个很好的例子说明了这些东西是如何在各种apache项目中使用的。我可以将git repo同步到apache svn repo。那我就可以自己在一家私人分行工作一周了。我可以从回购协议中删除更改。我可以报告我的变化,零售或批发。完成后,我可以将它们打包为一个提交。 |
|
|
7
1
有趣的问题。 我不是一个经验丰富的dvcs用户,但我有限的接触已感到非常积极。 我喜欢两步到位。这对我很合适。 想到了一些好处:
请注意,我的dvcs体验更多的是mercurial而不是git。来自cvs/svn的背景,我发现mercurial(hg)的学习曲线要容易得多。最近增加的google代码对mercurial的支持也是一个福音。 …我甚至会说,我对git的最初反应是否定的,但更多的是从可用性的角度考虑,而不是从dvcs的角度考虑。 |
|
|
8
1
注意到subversion可能会得到 offline commits 未来。当然,我们无法将这些功能与目前可用的功能进行真正的比较,但这可能是“以集中方式使用dvcs”的一个非常好的方法,如这里的其他答案所述。 另一 recent post 声明Subversion不想成为DVCS 这些事情可能意味着存储库仍然是集中的,这意味着您不能执行断开连接的分支,旧版本的扩散,但是您可以将提交排队。 |
|
|
9
1
我不会在这里卖东西的。
唯一真正的优势是不需要连接到主中央存储库。有人可以说,git的好处在于,开发人员可以在本地提交补丁,准备一个很好的补丁组合,然后将它们拉到受祝福的中央回购协议中,但在我看来,这是相当无趣的。开发人员可以使用subversion存储库中的一个私有shelve或一个分支来完成他的任务,然后将其与一条主线(例如/trunk)或另一个分支合并。 对我来说,这里的主要缺点是我必须下载并将整个git存储库存储在我的机器上。一个有着悠久历史的大型项目会让人痛苦,占用太多空间。 中央集权的另一个缺点是 Git technically can't track renames or copy operations . 它只是 tries to guess whether a file was renamed or copied based on the file's content . 这就导致了这样一个有趣的案例: svn to git migration keeping history of copied file (盖伊问为什么在svn>git迁移之后文件的历史记录丢失了,)。
有了git,如果您崩溃了本地存储设备(hdd、ssd等等),并且它的更改没有被拉入或推送到受祝福的git的repo中,那么您就失去了运气。你刚刚失去了你的时间和代码。除此之外,本地Git回购的硬盘驱动器崩溃可能会在一段时间内停止开发过程: Linus Torvald's SSD breaks, halts Linux kernel development . 使用集中的源代码管理(如svn),您只能丢失最后一次提交,因为您的所有工作都已提交到中央存储库的分支、专用搁置区甚至主干。显然,您应该确保为中心repo实施了灾难恢复和备份。
对于过去使用bitkeeper的linux内核这样的项目,git是最好的源代码管理系统!但我认为git并不适合所有人。 明智地选择! |
|
|
10
-1
很可能,这里没人会卖给你任何东西。如果你需要git的特性,只要
如果您还不知道git的特性,请键入
在需要netbeans特性之前,我更喜欢记事本而不是ide。看来这里也是这样。 你知道,很多成功的项目根本没有风投。 销售git违反了它的许可证!;) |
|
|
Eric · pip安装-e svn+ssh不接受用户 8 年前 |
|
|
Anu699 · 在git中管理多个项目的最佳方式是什么?[已关闭] 8 年前 |
|
|
Dipu H · Viewvc未扩展关键字 8 年前 |
|
|
NealWalters · SVNLook-存储库格式-语法不正确 8 年前 |
|
|
m-mas · 尝试与svn重新同步trac时出错 8 年前 |
|
|
Wombattle · 通过命令行在SVN中保留时间戳 8 年前 |