在公司碰到一个怪问题,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 的客户端工具。 集成右键菜单
版本管理系统如svn和git,对于团队协作和项目维护至关重要。理解并熟练掌握它们的操作,能极大提高开发效率,确保代码的质量和稳定性。无论是svn的简单分支模型还是git的分布式特性,都为开发者提供了灵活的工作流程...
总结来说,"git、svn 代码版本管理工具所有合集.7z" 包含了当前最主流的版本控制工具,无论是 Git 还是 SVN,都有相应的图形化客户端支持。Sourcetree 适用于 Git 用户,而 TortoiseSVN 和 TortoiseGit 则为 SVN 和 ...
svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...
Git和Subversion(SVN)都是版本控制系统,用于跟踪和管理软件开发中的代码变更。它们在代码管理和协作方面发挥着至关重要的作用。本教程将帮助初学者了解这两者的基础知识,以便选择适合自己的工具。 首先,让我们...
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
### Svn Git Maven版本管理教程知识点详解 #### 一、版本控制系统概述 版本控制系统(Version Control System, VCS)是一种记录一个或若干个文件内容变化的系统,以便将来查阅特定版本修订情况。版本控制系统在软件...
常见的版本控制工具包括ClearCase、SVN(Subversion)和GIT。每种工具都有其特点和优势,本文将对这三种工具进行比较,帮助开发者和管理员更好地选择和使用这些工具。 多站点支持 ClearCase支持多站点复制和同步,...
SVN(Subversion)、HG(Mercurial)、GIT是三种广泛使用的版本控制系统,它们各自有不同的设计理念和命令集,尽管它们在执行相同或相似功能时具有一定的相似性,但直接命令对应关系并不严格存在。下面将详细介绍...
Git和SVN是两个最常用的版本控制系统,它们都是为了帮助开发者更好地管理代码、追踪变化、协作开发而设计的。那么,它们之间有什么区别呢?下面,我们将对Git和SVN进行比较,详细介绍它们各自的优缺点。 Git是什么...
在安装方面,Mac用户可以通过安装Xcode获得git-svn支持,而Linux用户可以使用包管理工具如apt-get进行安装。对于Windows用户,推荐使用msysgit工具,它提供了Git在Windows平台上的完整实现。此外,Cygwin提供了更为...
具体到描述中提到的"svn版本控制工具",这可能是指像`git-svn`这样的工具,它是一个Git子命令,允许用户在本地使用Git的同时与远程的SVN服务器进行通信。通过`git-svn`,开发者可以将Git的分支管理和本地版本控制...
在Android Studio中,开发者可能已经习惯了使用Subversion(SVN),但随着Git的普及,越来越多的团队倾向于采用Git作为首选的版本控制工具。这篇内容将详细阐述如何在Android Studio中将已有的SVN库转换为Git库,...
Git-2.11.1-64-bit 和 TortoiseGit-2.4.0.0-64bit,适用于使用Git有服务器仓库,把写好代码放入Git仓库,使用SVNGit上传更新等,使用Git仓库的好处就在于,你在家里也是可以上传更新的,只要账号密码正确就可以了,...
在Jenkins中,svn-git插件是一个非常实用的组件,它实现了Subversion(SVN)与Git版本控制系统之间的集成,使得项目可以同时使用两种不同的版本控制工具,从而满足不同团队的需求。本文将深入探讨svn-git插件在...
SVN(Subversion)是一种广泛使用的版本控制系统,它允许团队成员协同工作,跟踪文件和目录的更改,便于回溯历史版本,解决冲突,并实现代码库的高效管理。TortoiseSVN是SVN的一个图形化客户端,特别适用于Windows...
标题“svn2git.zip”指的是一个包含用于迁移Subversion(SVN)项目到Git的工具的压缩文件。...通过使用这个工具,开发团队可以充分利用Git的分布式特性和强大的分支管理功能,而不会丢失原有的版本控制信息。
**SVN(Subversion)与Git是两种广泛使用的版本控制系统,它们在软件开发过程中起着至关重要的作用。本文将深入探讨这两个工具的基本概念、安装、配置以及日常使用方法。** ### SVN(Subversion) **1. SVN简介** ...
使用`git-svn`工具将SVN的历史记录导入Git: ``` git svn clone --stdlayout -s svn://your_svn_url . ``` 这里的`--stdlayout`表示标准的SVN布局(trunk、branches、tags),`-s`表示设置svn.remote.url和svn....
Git仓库管理工具是一款全球广泛使用的分布式版本控制系统,它在软件开发和协作中起着至关重要的作用。Git由Linus Torvalds为Linux内核开发创建,后来被广泛应用到各种项目中,无论大小。其核心特性包括高效的数据...