- 论坛徽章:
- 2
|
svn不是版本控制工具
嗯,svn根本不配称作版本控制工具,不开玩笑。
这要从版本控制工具的历史说起,集中式版本控制工具(svn,cvs)在一方面是进步,而在另一方面(恰好就是版本控制功能方面)是退步。
- 最开始最开始是:手工版本控制
工具
都用过的吧。。。 没有自动化工具,纯手工添加日期、版本号作为后缀什么的。。。
- 本地(或个人,术语什么的不要计较啦,我也不知道准确的叫什么)版本控制工具
在集中式版本控制工具之前,还有这一个阶段。
相当于是游戏终于有存档功能了,可以随时save,并且在需要时load。
- 集中式版本控制工具
再后来,就有人脑袋一拍:何不把游戏存档集中管理,大家一起协力推boss?
可惜的是,这种思路下的版本控制工具在增加分享功能的同时,削弱了版本控制功能。
版本控制工具的主要功能被削了,智商被完爆啊。。。
再进一步解释为什么削弱了版本控制功能之前,有必要进一步精确刻画术语。
集中式版本控制工具不一定会削弱版本控制功能,削弱版本控制功能的关键点是:记录与分享不可分割。
某软件是否记录一个历史状态的同时就必须将该状态与其他人分享?是否有办法只记录而不分享给他人?
如果该软件存在“记录与分享不可分割”耦合 —— 我们都知道耦合是不好的 —— 那势必会影响它的版本控制功能。
因为在记录时得多考虑一件事:将该状态同时分享给他人的话,会不会破坏他人的工作环境? 比如代码编译不能什么的。不能随心所欲地记录。
- 分布式版本控制工具
为什么上面没有把所有集中式版本控制工具全部一棒子打死?
那是因为有一些辅助工具,让集中式版本控制工具变成一个不伦不类的分布式版本控制工具。
原本svn从一开始就是一个错误(by linus),这些辅助工具只是在错误的路上越走越远而已。
分布式版本控制工具从一开始就没有这样的耦合。记录就仅仅是记录,分享就仅仅是分享。
可以在本地尽情地save, 当比较满意时再将工作进度分享给他人, 在这之间不会破坏他人的工作环境。
并且最终分享给他人的不一定就是最开始的那些记录点, 分享之前有机会修改的, 只需要分享那些有价值的状态点。
这会进一步刺激记录的欲望, 不用担心记录了一个糟糕的历史状态, 因为这个历史状态在后面可以随时清除, 只要在分享给他人之前(之后也可以,不过就会破坏他人的环境了)考虑好便是。
这是带有"记录即分享"这种耦合的版本控制工具最恶心的地方。
能随心所欲地记录,这才配称之为版本控制工具。 记录时因为各种原因需要瞻前顾后的叫什么版本控制工具?
除此之外,还有很多缺陷。
查看历史记录居然需要连接代码服务器? 提交历史一团乱麻。。。 等等。。。
总之,如果版本控制对你很重要,建议尝试一下git之类的软件。 之后绝对会产生这样的感觉: svn简直就是渣渣!
如果版本控制对你不重要, 那就随便玩了。 |
|