在公司碰到一个怪问题,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(Subversion)、HG(Mercurial)、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插件在...
Git和Subversion(SVN)都是版本控制系统,用于跟踪和管理软件开发中的代码变更。它们在代码管理和协作方面发挥着至关重要的作用。本教程将帮助初学者了解这两者的基础知识,以便选择适合自己的工具。 首先,让我们...
使用`git-svn`工具将SVN的历史记录导入Git: ``` git svn clone --stdlayout -s svn://your_svn_url . ``` 这里的`--stdlayout`表示标准的SVN布局(trunk、branches、tags),`-s`表示设置svn.remote.url和svn....
ClearCase采用集中式版本控制模型,需要对服务器进行访问,而SVN和GIT使用分布式版本控制模型,每个客户端都可以独立工作。GIT的分布式版本控制模型使得开发者可以离线工作,并且可以在本地提交更改然后push到服务器...
Git和SVN的比较 Git和SVN是两个最常用的版本控制系统,它们都是为了帮助开发者更好地管理代码、追踪变化、协作开发而设计的。那么,它们之间有什么区别呢?下面,我们将对Git和SVN进行比较,详细介绍它们各自的优...
关于标签“Ruby”,这表示svn2git工具是用Ruby编程语言编写的。Ruby是一种面向对象、动态类型的脚本语言,以其简洁、优雅的语法和强大的库支持而闻名,尤其适合快速开发这样的工具。 在svn2git-master目录中,我们...
提交修改用`git add`和`git commit`,然后使用`git push`推送至远程仓库。 ``` git add . git commit -m "提交信息" git push origin master ``` #### 2.4 创建分支 创建和切换分支用`git branch`和`git checkout`...
从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git
Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较Git与SVN比较
基本的使用方法包括:本地修改代码后使用git commit命令提交更改,使用git svn rebase命令同步远程svn服务器的更改,以及使用git svn dcommit命令推送更改到远程svn服务器。 总之,git-svn是一个将Git的灵活性与SVN...
**SVN(Subversion)与Git是两种广泛使用的版本控制系统,它们在软件开发过程中起着至关重要的作用。本文将深入探讨这两个工具的基本概念、安装、配置以及日常使用方法。** ### SVN(Subversion) **1. SVN简介** ...
描述了如何从SVN迁移到git,比较简短,精炼,文档中提到的users.txt为svn与git的用户对照
使用 `git svn clone` 命令,同时指定 SVN 仓库 URL、用户信息文件和其它选项: ```bash git svn clone https://svn_project_url/ --no-metadata --no-minimize-url --authors-file=userinfo.txt --no-minimize-url...
svn+git实现离线提交并且不需要到处所有svn版本,速度超快非一般的感觉,超越git本身的git2svn功能。 使用本工具需要安装基础工具: 首先安装git msysgit:https://code.google.com/p/msysgit/downloads/list msysgit...
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。也是就是CVS的接班人!
GIT使用了更高效的文件存储和访问机制,而SVN在处理大量文件或者大型文件时可能会变慢。 在功能上,GIT具有强大的合并和重置功能,可以帮助开发者解决复杂的合并冲突,并且能够轻松地回退到之前的版本。SVN虽然也...
公司代码要从svn迁移到git,不想笨笨的重新上传一份新代码,于是研究了下svn代码到git的迁移同时还要保留commit信息,尝试了很久终于成功啦;在保留commit信息的同时,还能继续从svn同步代码到git,这样即使还有人...