免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux

[其他] 版本控制之道---Git时代已经来到?(获奖名单已公布-2012-10-30) [复制链接]

论坛徽章:
0
发表于 2012-10-11 14:11 |显示全部楼层
1、你的团队是通过什么方式来做版块控制的?您的选择是什么?
最早的时候,刚离开校园投入工作的时候,想过代码版本控制的事,那时候先尝试了一下VSS,因为考虑到工作上开发使用的是微软的VS,但是实施过程不太顺利
后来使用了SVN,也有相应的VS插件,挺方便,就继续用了下来。。
再后来,逐步接触开源世界的时候,遇到github,也知道了有git,尝试了一下,因为对于命令行操作不熟,工作上又是以win系统为主的,也只是浅尝辄止,不过git的代码版本管理的设计真的很优秀,别的不说,仅一项可以支持本地版本控制(并不强制要求和依赖代码管理服务器及网络环境的实时性),当然这是分布式的优势。
目前还是使用SVN多。
2、您能简单谈谈您的选择愿意,以及为何做出这样的选择?
个人倾向于进一步学习并掌握git,不过受限于工作环境,还是svn用的多。。【毕竟版本管理的另一目的是方便团队协作,工具选择不是一个人说了算】
3、您在使用这些工具或者方法的时候,分享一些非常有用的小技巧:)
虽然当初对git的命令行操作方式不熟,但是后来却庆幸SVN也支持命令行执行,有试过利用SVN的命令处理WEB服务器网站文件同步等问题。
具体使用上的技巧倒不多,但对于新手,如果经常使用VS的SVN插件,就尽量不要在VS之外,比如直接在文件夹内进行SVN操作,容易遇到问题。

另外,使用SVN的有多少人是有那个强迫症的啊——看到红色叹号就不爽,非要整理成绿色钩钩的。。。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
发表于 2012-10-11 14:38 |显示全部楼层
来晚啦~~抢书~~呼呼~~


1、你的团队是通过什么方式来做版块控制的?您的选择是什么?
我们的团队都用的是SVN,我自己用的是git。SVN比较适合快速的反应,而git各方面都很不错。

SVN的优势就是就是学习简单,使用简单。有乌龟在,共享代码变得很简单。但是也就是个类似网盘的作用了。在版本控制方面,除了不分好坏保存历史,也没有其他的功能了。感觉很弱。

而git的问题就是目前似乎没有一个比较好的桌面集成的工具。tortoisegit还是不成熟。而且git的优势就在于丰富的命令行操作和组合。失去了这个集成环境反而比SVN的要麻烦。所以目前只有命令行才能够充分得到git的好处。在团队开发之中很难推广。

我也试过在团队里面推荐git,但是不知道是学习的原因还是什么的。遇到了一些困难,特别是新手。对VCS概念本身不熟悉,又突然使用复杂的git,概念太多导致有畏难情绪。所以git我目前也只是个人配合github使用。团队就再没用过了。

2、您能简单谈谈您的选择愿意,以及为何做出这样的选择?

git的功能强大,充分利用了命令行的灵活性。它将版本控制的各个阶段分的很开,这样就允许你做很灵活的改变。git的分布式设计也是很舒服的。虽然在团队开发里面,我们通常直接架设内网SVN服务器,根本不会出现断网的情况。但是git的分布式还有别的优势——首先,每个人可以有一次仓库,仓库可以有多个分支,可以几个人在一个独立的公共分支工作,工作完成以后再合并。SVN的分支代价很高,分支切换也很慢。基本上用SVN我们的工作就是直接拷贝整个项目来进行的了。偶尔还得用内网工具直接传递项目目录,很不方便。而且据老大说SVN的分支合并有Bug,我自己就从来没有用过,项目也不允许在SVN上做分支合并。导致我们在SVN的基础上也得用一些手动的原始版本管理方法(比如拷贝项目)。

如果git能够克服命令行的问题——比如说团队里所有人都熟悉git——那么它无疑使最好的版本控制工具了。在性能、功能、灵活性上都有巨大的优势。如果熟悉命令行,git的使用也是很简单的。git应该是未来的一个趋势。相信有越来越多的团队会注意到吧~~

3、您在使用这些工具或者方法的时候,分享一些非常有用的小技巧:)

恩,SVN就不说了,操作简单是一个好处,但是也造成了工作的单一。我在很长时间通过svn和git同时管理一个项目repo。是这样的,首先update SVN的项目,然后git init建立git项目,然后忽略.svn文件,并提交整个代码。最后把git仓库提交到局域网公共服务器上。那么SVN和git就完全独立了。SVN用于最终代码搞定的时候提交,平时用git进行合作、分支等等。要注意的是SVN也需要ignore掉.git目录。通常我们不管git和SVN的同步问题。需要小组范围合作,就git建立新的分支,提交(不管之前是什么版本),然后合作,做完了以后找个人(通常是我自己)用SVN将结果提交进SVN服务器。问题就是message得重写了。然后git分支合并入主分支。完成。这样基本上SVN版本和git版本就是一对多的关系。老大要版本,我们给SVN的,但是我们自己小范围用git。老大还笑称我们用git的是”无政府小组织“,嘿嘿。

这也许也是缓解SVN易学易用和git功能强大的一个折衷方案吧。

git还有很多小技巧,比如修改历史等等,可以参看progit.org,这本书很不错。git的原理简单,很容易就能理解,这给使用git的人一种很可靠的感觉。因为即使git挂了,也可以用手动的方式从仓库恢复所有数据,当然git挂了是完全不可能的。而且这样嘚设计也可以让写git工具变得简单。比如libgit2就提供了一个良好的操作git仓库的库,而且提供了很多语言的绑定,特别是Python和Ruby。可惜Lua绑定很久没有维护,现在已经挂了(libgit2还没有出beta,接口特性还没有稳定下来,经常会改动API,所以会这样)。

总的来说,推荐新团队和新项目直接用git,老团队可以用上面我说的办法过渡,SVN仅仅记录最终开发的阶段性成果,git实际做项目管理。因为git的快速高效,每个阶段实际上是很短的,所以SVN实际上也是和以前一样用。

基本上,我们的SVN已经是一个功能一次提交了,只有git才会保存这个功能的完整开发记录。

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
发表于 2012-10-11 14:41 |显示全部楼层
starwing83 发表于 2012-10-11 14:38
来晚啦~~抢书~~呼呼~~


小声的问一下,一个字一个字,敲出来的么?

论坛徽章:
0
发表于 2012-10-11 14:42 |显示全部楼层
personball 发表于 2012-10-11 14:11
另外,使用SVN的有多少人是有那个强迫症的啊——看到红色叹号就不爽,非要整理成绿色钩钩的。。。


最后那句,我估计有相当大一部分人是这样子的。

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
发表于 2012-10-11 14:46 |显示全部楼层
从来不用这玩意,事实上,觉大多说的公司,根本无法做到有效的版本控制。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2012-10-11 14:46 |显示全部楼层

svn不是版本控制工具

嗯,svn根本不配称作版本控制工具,不开玩笑。
这要从版本控制工具的历史说起,集中式版本控制工具(svn,cvs)在一方面是进步,而在另一方面(恰好就是版本控制功能方面)是退步


  • 最开始最开始是:手工版本控制工具

    都用过的吧。。。  没有自动化工具,纯手工添加日期、版本号作为后缀什么的。。。

  • 本地(或个人,术语什么的不要计较啦,我也不知道准确的叫什么)版本控制工具

    在集中式版本控制工具之前,还有这一个阶段。
    相当于是游戏终于有存档功能了,可以随时save,并且在需要时load。

  • 集中式版本控制工具

    再后来,就有人脑袋一拍:何不把游戏存档集中管理,大家一起协力推boss?
    可惜的是,这种思路下的版本控制工具在增加分享功能的同时,削弱了版本控制功能
    版本控制工具的主要功能被削了,智商被完爆啊。。。

    再进一步解释为什么削弱了版本控制功能之前,有必要进一步精确刻画术语。
    集中式版本控制工具不一定会削弱版本控制功能,削弱版本控制功能的关键点是:记录与分享不可分割

    某软件是否记录一个历史状态的同时就必须将该状态与其他人分享?是否有办法只记录而不分享给他人?
    如果该软件存在“记录与分享不可分割”耦合 —— 我们都知道耦合是不好的 —— 那势必会影响它的版本控制功能。
    因为在记录时得多考虑一件事:将该状态同时分享给他人的话,会不会破坏他人的工作环境? 比如代码编译不能什么的。不能随心所欲地记录

  • 分布式版本控制工具

    为什么上面没有把所有集中式版本控制工具全部一棒子打死?
    那是因为有一些辅助工具,让集中式版本控制工具变成一个不伦不类的分布式版本控制工具。
    原本svn从一开始就是一个错误(by linus),这些辅助工具只是在错误的路上越走越远而已。

    分布式版本控制工具从一开始就没有这样的耦合。记录就仅仅是记录,分享就仅仅是分享。
    可以在本地尽情地save, 当比较满意时再将工作进度分享给他人, 在这之间不会破坏他人的工作环境。

    并且最终分享给他人的不一定就是最开始的那些记录点, 分享之前有机会修改的, 只需要分享那些有价值的状态点。
    这会进一步刺激记录的欲望, 不用担心记录了一个糟糕的历史状态, 因为这个历史状态在后面可以随时清除, 只要在分享给他人之前(之后也可以,不过就会破坏他人的环境了)考虑好便是。




这是带有"记录即分享"这种耦合的版本控制工具最恶心的地方。
随心所欲地记录,这才配称之为版本控制工具。 记录时因为各种原因需要瞻前顾后的叫什么版本控制工具?

除此之外,还有很多缺陷。
查看历史记录居然需要连接代码服务器? 提交历史一团乱麻。。。 等等。。。

总之,如果版本控制对你很重要,建议尝试一下git之类的软件。 之后绝对会产生这样的感觉: svn简直就是渣渣
如果版本控制对你不重要, 那就随便玩了。

论坛徽章:
0
发表于 2012-10-11 14:49 |显示全部楼层
starwing83 发表于 2012-10-11 14:38
来晚啦~~抢书~~呼呼~~


学习了!谢谢分享。敲了这么多,真心不容易。赞!

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
发表于 2012-10-11 14:49 |显示全部楼层
回复 23# send_linux


    是啊……敲了半小时啊………………

对了,send_linux,为嘛现在只有管理员能评分了??

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
发表于 2012-10-11 14:51 |显示全部楼层
回复 24# xiaopan3322


    我也是…………

刚开始用git,木有小钩钩很不习惯呢……后来习惯一开终端就git st了……

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
发表于 2012-10-11 14:52 |显示全部楼层
回复 25# zhaopingzi


    的确是这样。大多数公司,版本控制最多就是个书记官加网盘的作用,没了。这也是被SVN带的。真心希望新的项目能大规模采用git用作版本控制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP