`
ictch
  • 浏览: 131216 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用svn、git、hg等版本管理工具有感

    博客分类:
  • Java
阅读更多

      在公司碰到一个怪问题,TortoiseSVN 1.4.6 update 和 checkout 都失败,直接用命令行 svn 也一样,错误信息完全没有提示性,折腾了近两个小时,才明白是服务器上在某个目录下有两个同名但大小写不同的文件,这在 Windows 下是不允许的。发封邮件到 Subversion 和 TortoiseSVN 的邮件列表,得到的回复时大意是说你看能否提供个补丁,以前看过一点点 Subversion 源码,非常反感其冗长繁琐的代码,这次硬着头皮再看了看,checkout subversion 和 tortoisesvn 的代码花了一天多,发现在 Windows 上编译非常麻烦,还需要 VS 2008,作罢,在 Debian 上用 apt-get source 下载了源码编译了个调试版,gdb 了三四个钟头想理清执行路线,还是没搞定,里头的代码架构太奇妙以致难以理解,可能什么地方有文档描述吧,没找到。 

     昨天开始编写 cfgtool,用 git 或者 hg 管理 /etc 以及 HOME 目录下的配置文件,然后发现二者的很多细微差别,因为是 shell 脚本,对命令返回值非常依赖,但是 git status 在没有脏文件时返回 1,git commit -a 和 git commit 在没有脏文件时也返回 1,完全与 Perl 的“尽量执行下去”的风格相反,然后发现 git ls-files --modified 果然只显示修改了的文件,不包含新增加的文件,还没弄明白如何确保  git commit 不报错。hg add 一个已经 add 过的文件会报错,而且似乎绝大部分情况下 hg 的返回值都是零。 

越来越深刻的体会到 git 的风格独特,add 是 add 数据而非记录文件名,这样将 commit 的开销分散在长时间不断的 add 过程里,带来了 commit 效率的提升,但是 add 的繁琐,还有 git commit -a  后面不能接文件参数,而 git commit 提交的是 index 里记录的内容,因此不能简单的 *完全* 提交一些文件,果然是为了 integrator 着想的工具。 

郁闷,all VCSes sucks,these suck more! 

美的程序:
简明:代码少,逻辑质朴,算法精炼,一个程序只做一件事情,只有必要功能——好像是 impossible mission。
一致:提示信息的一致,UI 的一致。
容错:程序很稳健,适应各种恶劣情况,以 C 这种语言只有靠长时间补丁才能达到虚假的稳健。
高效:尽可能高效。 

简评一下几种版本管理工具:
CVS, VSS:没有变更集概念,仅此一点就可以安息了。
GIT: 复杂的 UI,超前的理念
SVN: 慢,代码库膨胀剧快,客户端常有小问题,错误信息稀里糊涂
Mercurial: 也趋向于复杂了
Bazaar:UI 古怪
Darcs: 慢

分享到:
评论

相关推荐

    ubuntu下RabbitVCS安装方法(SVN、GIT、Hg 工具)

    ubuntu下RabbitVCS安装方法。 适用于SVN、GIT、Hg 的客户端工具。 集成右键菜单

    git 、svn 代码版本管理工具所有合集.7z

    sourcetree 版本管理 小乌龟svn 小乌龟svngit 都有

    git svn转换工具

    svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...

    SVN git github-版本控制服务器部署与实践

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!

    版本管理_svn和git常用操作

    介绍版本管理实践。 主干发布,分支开发模式下,svn和git的常用操作。

    Git2.11.1+SVNGit2.4.0.zip

    Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...

    git和svn学习入门教程

    现在使用git的比svn多了,但是git操作比svn复杂,上传git和svn的简单教程

    svn类型的git工具64位

    svn版本控制工具,配合git工具一起使用,git工具64位管理工具

    svn版本管理工具

    TortoiseSVN-1.9.3.27038-x64-svn-1.9.3 版本管理工具

    Git版本管理用法详解

    本文由TinyLab.org原创,作者是官方Linux华人贡献者中排名前三十的大陆开源爱好者。...文章最后给出了项目管理相关的一些开源工具,结合Git这个版本管理工具,大家就可以很方便地搭建开源软件开发与协作平台。

    SVN,HG,GIT命令对照.pdf

    SVN,HG,GIT是三种常见的版本控制系统,本文简单列出一些相似的操作命令。当然,三种系统各有特点,严格的对应关系是没有的。

    Svn Git Maven版本管理教程

    几种常见的版本管理系列教程,包含软件,示例代码,视频教程,适合初学者入门使用

    软件管理工具SVN和Git的安装使用

    SVN:集中式版本控制中心,svn就像是一对多的关系,一个仓库供多个人使用,而且必须联网才能工作。 Git:分布式版本控制中心,而Git就像是多对多的关系,每一个终端都是一个仓库,客户端可以拉取最新版本的代码,每...

    SVN版本管理规范

    对svn日常使用、代码管理、版本管理、命名规范等做了说明。

    SVN版本管理工具

    SVN版本管理工具,文档,代码,软件工具,随时记录相应的版本

    SVN迁移到Git

    从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git

    Git与SVN比较

    Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较

    Java进阶版本管理工具Git全套视频教程

    1.版本管理工具概念 2. 版本管理工具介绍 2.1版本管理发展简史(维基百科) 2.1.1 SVN(SubVersion) 2.1.2 Git 3. Git 发展简史 4. Git 的安装 4.1 git 的下载 4.2 安装 5. Git 工作流程 5.1 Git 初始化 5.2 git 流程 ...

    svn2git.zip

    svn2git ,svn2git是一个微型工具用来将 Subversion上的项目迁移到Git上,并保留 trunk,...

    SVN版本控制工具使用详解

    这是我自己总结的SVN版本控制工具使用的一些具体操作,希望能给大家带来帮助

Global site tag (gtag.js) - Google Analytics