有了GIT,SVN纯粹一垃圾

vietor 2009-06-10 05:21:46
Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的,但我认为他是反指。

Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看 http://www.kernel.org/git

作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis。原本 Git的使用范围只适用于 Linux / Unix 平台,但逐步并成熟了在 Windows 平台下的使用,主要归功于Cygwin与msysgit环境与TortoiseGit这样易用的 GUI 工具。其实 Git 的源代码中已经加入了对 Cygwin 与 MingGW 编译环境的支持并被逐步完善,对于 Windows 使用者是个福音。

题外:
GIT专门用于源代码管理。
我的建议是:对于开发文档、二进制程序的版本管理请选用VSS,让CVS、SVN都去死吧。
...全文
27305 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
dj0379 2012-08-13
  • 打赏
  • 举报
回复 6
世事无绝对,LZ只看见了事物的一个方面罢了,在不同的项目管理需求中git和svn还是各有所长的。svn不完美是事实,不过git也不是完美的,不要厚此薄彼。你的出这样的结论说明你还没碰到svn适合但git不适合的管理场景而已。
Vincent2013SH 2012-07-13
  • 打赏
  • 举报
回复
git能阻止有人提交不可编译的代码?
dzl84394 2012-05-04
  • 打赏
  • 举报
回复
svn 的缺点git都克服了,但是对大量的windows下开发人员不友好,这是ror的通病,无法克服,小作坊一样的开发,除了找个大牛以外,我等p民还是远离吧
diamondshadow 2012-03-27
  • 打赏
  • 举报
回复
我想问问,关于权限控制,比如只读,git有吗?
wxjsj 2012-03-20
  • 打赏
  • 举报
回复 1
先让git把它的命令行写好吧,超级难用的东西!
virusswb 2012-02-03
  • 打赏
  • 举报
回复
有点文不对题,感觉思路略显混乱!
lichujing 2011-12-14
  • 打赏
  • 举报
回复
用得好都好,用得不好都是垃圾
wenhaisong117 2011-11-08
  • 打赏
  • 举报
回复
git适合分布式开发,svn适合集中式开发。
puppyli 2011-10-30
  • 打赏
  • 举报
回复 4
我看楼主才是纯粹一垃圾
Tiger_张虎 2011-09-26
  • 打赏
  • 举报
回复 1
GIT 比 SVN 强大主要还是对 branch 的管理能力上。

SVN 的 branch 可以认为是没有管理,建立 branch 只是简单的复制一个新目录,branch 的合并几乎是不能用,只能手动合并,至少我用了几年的 SVN,从来没敢用过 SVN 的 branch merge 功能。

而 GIT 对分支的管理能力可以跟 SVN 比可以说是另一个层次,采用的方法也是完全不一样,一个 branch 更像是一个 tag,并不是文件系统上一个单独的目录,branch merge 我用过一段时间,非常方便,一天做几次 merge 都没有太多额外的负担,以前用 SVN 几乎merge 一次至少半天时间。

另外,GIT commit/push 方式可以在代码合并后保留所有人的 commit log 对代码回溯非常有价值,这不是 SVN 能比的。

个人看东西以实用为导向,有了 GIT,SVN 可以进入历史了。
tonyevehello 2011-09-01
  • 打赏
  • 举报
回复
总体来说这个技术应该是在演进阶段,但是其概念确适用于不同的项目管控方式。
集中式管理和发布式管理应该说各有千秋,看站在什么样的角色去看。
vietor 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dongfa_dg 的回复:]
楼主:
您好,我正想建立一个版本管理服务器,想在SVN和GIT之间选一种,
看了楼主的发言,感觉您是用JAVA做开发的,
而我这边用的是VC,windows系统的,用GIT合适吗?
昨天发了个帖子,问了下,有几个人都建议我用SVN.
楼主可否详细解说一下GIT的构件过程?
谢谢!
[/Quote]

Git的构建与SVN很大的不同,如果对SVN的使用不是根深蒂固的话,就比较好理解了。
Git是以整库的进行管理的,不能随意的提取某一目录的内容进行单独管理;对我们来说整库管理是足够的,只是需要控制库的大小。对于一个项目来说,服务器、客户端、管理工具可以分别的独立成库,即避免了所有代码的权限集中,也适合一定的权限管理。

Git的使用方式及分支管理,网上的内容非常多,可以随意查找;国内许多的公司都在使用Git并且越来越多,推广中有些阻力,主要原因就是一些人使用不熟,不愿意对已经熟悉的流程进行变化,尽管是有意义的尝试他们也不放心,因为——你懂得原因。
vietor 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 dongfa_dg 的回复:]
楼主:
您好,我正想建立一个版本管理服务器,想在SVN和GIT之间选一种,
看了楼主的发言,感觉您是用JAVA做开发的,
而我这边用的是VC,windows系统的,用GIT合适吗?
昨天发了个帖子,问了下,有几个人都建议我用SVN.
楼主可否详细解说一下GIT的构件过程?
谢谢!
[/Quote]

都可以,msysgit可以满足使用需求,比较麻烦的是没有VC的插件,但用他的bash环境也是非常好用的。
vietor 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 trustmeok 的回复:]
楼主:
github需要收费吗? 有没好用又免费的?
[/Quote]

unfuddle.com
trustmeok 2011-05-12
  • 打赏
  • 举报
回复
楼主:
github需要收费吗? 有没好用又免费的?
williamsong997 2011-04-18
  • 打赏
  • 举报
回复
楼主:
您好,我正想建立一个版本管理服务器,想在SVN和GIT之间选一种,
看了楼主的发言,感觉您是用JAVA做开发的,
而我这边用的是VC,windows系统的,用GIT合适吗?
昨天发了个帖子,问了下,有几个人都建议我用SVN.
楼主可否详细解说一下GIT的构件过程?
谢谢!
Ghoststears 2011-03-11
  • 打赏
  • 举报
回复 8
[Quote=引用 6 楼 vietor 的回复:]

to ckc & xqhrs232
必须承认,命令行的工具使用的是msys的sh不支持中文的输入和窗口粘贴功能;但是可以命令行下运行start,而使用windows的cmd来支持这些功能。

to All:
TortoiseGit解决了中文的问题:查看中文日志是很好用的,菜单中封装了开发中常用的功能。为什么SVN是垃圾?如下:

用SVN这种集中式源代码最大的问题就是自己始终……
[/Quote]

任何事情,归根结底都是人的问题,工具只是工具。

SVN 是集中式的,会出现你说的耦合。但从另外一个方面来说,这也要求开发人员代码的规范:不要一个函数干很多事情,不要一个文件写很多个类。

另外,将不可运行的代码提交到任何版本控制系统中都是没有意义的。这也就是版本控制的核心思想之一。也就是提交的粒度:原子性。所谓的原子性,也就是完成一件任务,这个任务可以是一个函数声明,也可以是一个函数的实现,亦或是一个子系统。但这个任务的完成的标志就是代码可以运行,不能运行的代码,最多也就是完成了半个任务。这个是不符合版本控制思想的。试想,你 update 到某一个 version 的时候,代码竟然是不能运行的,是何心情???

将不能运行的代码提交,完全是开发人员素质或者公司管理流程、机制的问题。

另外,很多人都强调:我晚上下班了要在家里干活,不能提交!!!来抨击集中式版本控制工具。且不说对待工作和生活态度。先看看国内的企业,防员工如防贼的多的去了。有多少人能带着笔记本,把公司的源代码签出来呢???

版本控制系统中,工具只是其中一环。要结合公司的策略来选用合适的工具。版本控制 != 版本控制工具 !!!= 源代码管理。

最后,人各有喜好。上纲上线的,完全没有必要。
long2015 2010-10-15
  • 打赏
  • 举报
回复
好像我还只会用svn最基本的功能
vietor 2010-10-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 long2015 的回复:]

好像我还只会用svn最基本的功能
[/Quote]

咳,那还不如用VSS呢。
vietor 2010-08-25
  • 打赏
  • 举报
回复 2
[Quote=引用 17 楼 qinglangee 的回复:]

喜欢一个不用刻意去贬低另一个,我就不喜欢这种全部log都在本地的方式
[/Quote]
log在本地,就可以实现分布式开发了,而且每个人的log是独立显示的,谁的问题比较容易分清楚;此外能够以“小力度”进行提交。SVN的log问题就是线性blog,分布式方式使用的话,就需要大力度提交,基本上每次提交都是“合并”后的结果。
加载更多回复(17)

1,279

社区成员

发帖
与我相关
我的任务
社区描述
软件工程 CVS/SVN
社区管理员
  • 版本控制社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧