+ -
当前位置:首页 → 问答吧 → 有没有人这样用版本管理工具的?

有没有人这样用版本管理工具的?

时间:2010-07-06

来源:互联网

项目组用cvs/svn
自己在本地有改动又不好上传
先commit到git中

作者: yecheng_110   发布时间: 2010-07-06

有。

正因为如此, 尽量把svn这种古董给换了。

作者: OwnWaterloo   发布时间: 2010-07-06

git 出来之前,有个叫做 svk 的东西很好地解决了这个问题。

现在我用 darcs

作者: flw   发布时间: 2010-07-06

darcs 这个貌似比较n

作者: zimang   发布时间: 2010-07-06

现在一个人搞,啥都不用了,哎

作者: ecjtubaowp   发布时间: 2010-07-06

svn怎么就成古董了?

作者: ytcheng   发布时间: 2010-07-06

SVN都成古董了,我还在用CVS ~

作者: evaspring   发布时间: 2010-07-06

版本控制系统, "版本控制"是功能之一吧。
但是, 当svn用于多人开发时, svn的版本控制就很尴尬:
更注重多人合作, 对个人提供的版本控制功能更弱化。

场景就是lz提到的: 自己有一些小改动, 想记录一下, 但暂时不想给其他人看见这些改动。
svn就尴尬了。

如果team对提交有一些标准 —— 例如要求每个人的提交不能影响到其他人的正常工作 —— 这是很合理的要求。
至少要编译通过; 甚至更严格的, 要通过测试。
这样, 就会出现这种场景。

svn能够提供帮助的, 是"符合team标准的提交"。
在2次"符合team标准的提交"之间, svn是得不到版本控制服务的。



当然, svn也可以有一些奇怪的用法。
就好象菜刀也可以削铅笔。
但如果可以用卷笔刀, 菜刀削铅笔就很别扭, 很奇怪了。

作者: OwnWaterloo   发布时间: 2010-07-06

你可以拉一个开发专用的分支出来,如果团队大了的话这样也比较别扭

作者: koolcoy   发布时间: 2010-07-06

本帖最后由 OwnWaterloo 于 2010-07-06 22:30 编辑

回复 koolcoy

svn拉了分支, 分支就留在repo里了, 不管最后是否会采用该分支。

而git, 在push之前, 随便怎么搞。
branch experimental 成功, 可以merge或rebase。
如果失败, 可以直接删掉该分支。

对艺高人胆大的, 还可以把public branch给rebase, 甚至直接删了。

--------------------------------------------

总之, git可以很轻易地将history改成希望的样子。
一段时间后, 打算看到哪些信息, 就可以留在history中。
不想看到某些无用信息, 可以从history中完全删除。

btw, 在向其他人说明svn的尴尬的时候, 我经常用这个提交历史:
http://code.google.com/p/wontontoyos/source/list

svn会把一些尴尬的"save", "mess", "no log message"留在history中。
当然, svn也是有一些办法可以修改history, 但始终不如git那么容易。

而git做这个事情要自然得多。


如果是git, 可以随意的commit —— 在开发的时候, 不需要考虑"如何保持易读的历史"。
在push的之前, 如果有这方面的要求, 可以rebase。

而svn, 开发的时候如果还要考虑"保持易读的历史"是很头痛的。
随意提交也可能会破坏其他人的开发。
提交之后再整理历史? 有dumpfilter的权限吗?  即使有, 敢随便乱用吗?


------------------------------------


这么比喻吧, svn就是一个游戏, 可以save。
但限制是每save一次, 就增加一个存档, 而且必须从最后一个存档中load。
如果想要从任意存档load, 需要自己hack。

而git就是最常见的save/load模式。
可以save到任意位置(可覆盖), 也可以从任意位置load。

--------------------- 分割线 -----------------

编辑了半天, 终于发现……
原来s/l"大 法"是敏感字。

作者: OwnWaterloo   发布时间: 2010-07-06