Svn 从ClearCase到Mercurial,再到Subversion。我应该担心吗?

Svn 从ClearCase到Mercurial,再到Subversion。我应该担心吗?,svn,version-control,mercurial,Svn,Version Control,Mercurial,当我开始目前的工作时,我在ClearCase地狱里呆了一年。一切都有点像冬天的魔多,只是没有笑声。然后我们开始使用Mercurial。在大约一天半的时间里,云层移开了,太阳照耀着,鸟儿开始歌唱——还是那些天使?我问这是不是天堂,凯文·科斯特纳说:“不,这是爱荷华州的Mercurial。” 现在我要去一家使用Subversion的公司。我应该害怕吗?我听说过关于Subversion的好消息,它比Vault好(我讨厌Vault),比ClearCase好得多。我已经阅读了很多关于这方面的讨论,但我还是

当我开始目前的工作时,我在ClearCase地狱里呆了一年。一切都有点像冬天的魔多,只是没有笑声。然后我们开始使用Mercurial。在大约一天半的时间里,云层移开了,太阳照耀着,鸟儿开始歌唱——还是那些天使?我问这是不是天堂,凯文·科斯特纳说:“不,这是爱荷华州的Mercurial。”


现在我要去一家使用Subversion的公司。我应该害怕吗?我听说过关于Subversion的好消息,它比Vault好(我讨厌Vault),比ClearCase好得多。我已经阅读了很多关于这方面的讨论,但我还是会回到Joel Spolsky的含蓄声明,如果我使用Subversion。我已经准备好应对一点脑损伤,但是有人对如何最大限度地减少脑灰质的震荡和丢失有什么建议吗?

分布式源代码版本控制(DSVC)世界(git/mercurial/et al)和CSVC(Centralized…)对哪一个更好有不同的看法

有些人喜欢经常在本地签入的DSVC方法,但只会将“工作”代码推送到中央/主存储库

有些方法(如CSVC的所有提交方法)对每个人都是立即可见的,但是中央存储库中的代码可能并不总是有效的

最终,选择是个人的,我不会对此感到太激动,尽管我会说,我认为DSVC更适用于更大的团队,并且可能也适用于持续集成设置。但是,正如您总是可以用任何语言编写COBOL一样,使用源代码控制也可以使COBOL以您想要的方式工作,集中或分布式

你更关心的是公司文化是什么?他们是否接受svn回购协议随时可能失效,还是要求svn回购协议始终有效?依我看,这是关于你是否会保持理智的最大的分界点。

向后移动会使Subversion看起来有些原始,但它通常很容易使用和健壮,如果没有功能强大的话。我认为,从Mercurial这样的现代DVC转向Subversion(“CVS完成‘正确’”)的最大区别在于,Subversion将文件系统作为一切的类比:

  • 在Subversion中,您可以通过将所有文件从“主干”目录复制到“分支”中的新目录来进行“分支”
  • 同样,要“标记”一个修订,您可以将所有文件从“trunk”复制到“tags”目录中
这些操作实际上不是标记或分支,但“标记”和“分支”目录按惯例命名

您还必须更加小心,因为提交任何更改都会将其推到主回购协议上,让所有人都能看到。一次意外的犯罪可能会破坏每个人的“树干”,导致不愉快的情况


另外,当你必须在网络上做任何事情时,要准备好缓慢的操作。

在多年使用Subversion和现在使用Mercurial之后,我的主要区别在于分支。我不想回到Subversion,我会想念它的


但毕竟,您可以在本地光盘上使用Mercurial(甚至在Subversion存储库的签出目录中),也许在不久的将来,您可以说服合适的人,然后太阳将再次照耀……

有一个svn hg连接器


我在我目前的公司使用Clearcase,并将我的细粒度承诺保存在hg回购中

与clearcase非常相似-svn的许多乐趣或痛苦不是工具本身,而是实现(或缺乏)。开箱即用的clearcase实际上是无法使用的,由一群聪明的人来管理它,并建立整个过程,它从一文不值变成了疯狂的昂贵和轻微的创伤

你在svn上会没事的。您将错过hg,但应该能够以最小的麻烦完成您的工作。如果你不是,那就怪那些主持节目的人,而不是工具

一些svn管理员使用一个钩子来阻止来自不支持svn:mergeinfo属性的客户端的提交,git和hg连接器在这些实现中不起作用。 并不是说mergeinfo有用。。。如果你不能指望它的存在,那么它就毫无价值。

作为一个客户尝试一下,这至少可以让你自己做实验性的分支、本地提交、搁置和其他一些不错的Hg特性

然而,有时我在导入大型存储库时遇到困难,在这种情况下,我会切换到subversion工作副本并使用“hg importsvn--local only”。它需要一个svn客户端。我推荐

这两种工具都允许您退回svn回购,但它们在操作方式上有所不同


我必须承认,我更经常使用hgsvn,尽管我更喜欢hgsubversion的概念。导入过程还不够可靠。

有一个用于subversion(以及许多其他)的eclips插件。这只是另一个源代码控制系统。没什么大不了的。如果你搬到GIT,他们会震撼你的世界,但不会;必要的是,用一种不好的方式。+1只是用来比较ClearCase和Mordor,没有笑声。标签在subversion中是轻量级的。没有复制。虽然分支是重量级的。@Mikezx6r是一个显著的细节,但除了打破假设之外,没有什么能阻止您将标记目录重命名为其他目录。DVCS中的标记表示提交,而SVN中的标记是一种文件操作。嗯,每天学习一些新的东西。我一直认为SVN只会保留标记的“变更集”的记录。Mercurial的标记也有点奇怪,因为它们至少在标记后的变更集之前是不存在的。我真的不喜欢。。。