Linus 在 Google 做了他对于版本控制软件的演讲。他似乎非常偏爱分布式版本控制软件,否则宁愿用 tarball+patch (其时 tarball+patch 确确实实是一种分布式的方法呢!)。以至于在 Linux 内核不能试用 BitKeeper 以后,他自己动手写了 git 。他对版本控制软件有许多要求,比如:
- 取出来的东西要和放进去的东西一样。如果连数据的完整性都无法保证的话,谁还敢用这样的版本控制软件?不过确实有这样的软件存在呢。
- 分布式。我在后面会解释分布式的好处。
- 高效率。Linux 内核也算是一个很大的软件了,如果版本控制系统运行起来慢吞吞的,确实是非常让人恼火的呢。
- ……
Linus 当时(Linux 2.6.12 的那阵)说现有的版本控制系统都不行,他两个周就能写出一个更好的。结果他 4 月 7 日开始写 git ,在 4 月 20 日的时候内核已经开始使用 git 进行源代码管理了。参见这里的原文:
Linus began writing “git” on April 7′th [story], a rapidly evolving userland filesystem upon which various SCM implementations are being built or adapted. The 2.6 kernel source is already managed in a git repository, with the first succesful git release being 2.6.12-rc3 on April 20′th
当然可用离好用还是有很远的距离的,不过 Linus 确实很厉害了!后来 git 由其他人维护,并且在用户界面上进行了改进,现在已经相当好用了。另外一个有名的开源的分布式版本控制系统是 mercurial ,这个是由 Python 写成的,不知道在效率一条上满不满足 Linus 的要求,呵呵!其时各种分布式版本控制软件在开源社区是很流行的,有时候下载一些软件的时候就看到如果要获取最新代码,就要用作者使用的版本控制系统来进行抓取,像 Arch 、bazaar 、monotone 、darcs 一类的,都是使用得比较多的分布式版本控制系统。
为什么分布式版本控制系统会流行起来呢? sishen 在他的 Blog DistributedSCM or not? 里面提到了传统的版本控制和分布式版本控制模型之间的差别。下面说一下我自己的看法:
然而,不管怎么说,现在传统的版本控制系统仍然是主流。许多源码 Host 站点如 SourceForge 和 Google Code 等都是使用主流的 subversion 作为源代码版本控制的工具。
事实上,有时候我把 subversion 和 git 混合起来用。因为二者都有忽略某些文件的功能,只要在 subversion 的目录属性里面忽略掉 .git
一类的文件,再在 .gitignore
里面忽略 .svn
等文件,两者基本上也能很和谐地合作。通常在本地工作,使用 git 控制,并在适当的时候用 subversion 提交一次。
事实上它们配合得相当不错。即使是像 rm
一类的命令。比如,先用 svn rm foo<code> 把 <code>foo
删掉了。当前目录下已经不存在 foo
了,不过 git rm foo
仍然是能正常工作的。不过这和更改文件内容不一样了,不能自动跟踪,只能每次都在两个版本控制系统下都执行一遍。虽然可以用一些简单的脚本来减少这种重复劳动,但是有时候混用两个东西确实有种提心吊胆的感觉。
分享到:
相关推荐
Built-in Version Control support for Git and Subversion For these file control operations PL/SQL Developer relies on a 3rd party shell extension that must be installed on your system. In the ...
Built-in Version Control support for Git and Subversion For these file control operations PL/SQL Developer relies on a 3rd party shell extension that must be installed on your system. In the ...
- **Documentation and Education**: Maintain documentation for new users and continuously educate team members about Git features and best practices. These key knowledge points cover the essential ...
■ Software developer with advanced Subversion knowledge (able to branch, merge, and set/get Subversion metadata variables) who wishes to learn how to use Git ■ Software developer who wishes to learn...
use Git more and more where I work, I’ve found myself trying to teach people what it is and why we use it over and over again, and the reality is that Git generally has a pretty steep learning ...
Git是一个免费的、开源的版本控制软件,功能上类似于Subversion(SVN)。本文将详细介绍Git的安装过程、配置环境变量、生成ssh公钥等过程。 安装Git 首先需要获取Git软件,可以从官网下载或点击链接下载。需要注意...
This book is aimed at the developer who does not particularly like Subversion, Perforce or whatever SCM system they are currently using, has heard good things about Git, but doesn’t know where to ...
此外,这一章还简述了版本控制系统的演变历程,特别提到了Git是如何从早期的集中式系统(如CVS和Subversion)中脱颖而出的。 "About Version Control"部分深入讨论了版本控制的基本概念,包括分支、合并、提交、回...
4. **分支与合并(Branching and Merging)**:Subversion支持分支管理,允许开发者创建并独立开发分支,然后再合并回主分支,这在协作开发中尤为重要。 **二、Subversion 1.9.5的关键特性** 1. **性能优化**:...
Windows 64位Git工具最新版,官网下载太... It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
- 在“选择额外选项”界面,建议选择“Use Git and optional Unix tools from the Windows command prompt”以方便使用Git命令。 3. **验证安装**: - 安装完成后,在开始菜单中找到“Git Bash”,运行后输入`git -...
Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, ...
Git的设计哲学与其他版本控制系统如CVS、Subversion和Perforce等不同,它注重速度、数据完整性和对非线性开发的支持。 本书首先在“Understanding Git”章节中介绍了Git的基本概念。这里涵盖了版本库(repository)...
Subversion与Git等现代分布式版本控制系统相比,虽然没有本地分支和并行提交的概念,但在集中式版本控制领域仍具有广泛的应用。对于大型团队和项目,Subversion提供了稳定的管理方案,而Git则更适合快速迭代和高度...
来自于官网,未作任何修改。... It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
SUBCLIPSE还提供了与Eclipse的其他视图和功能的深度集成,如与构建工具(如Maven或Gradle)的集成,以及与其他版本控制系统(如Git)的兼容性。 总之,SUBCLIPSE是Eclipse用户不可或缺的Subversion插件,它使得...
Jenkins supports multiple Software Configuration Management tools such as Git, Subversion, and Mercurial. This book explores and explains the many extension points and customizations that Jenkins ...
Git is a free and open source ... It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
Other major features include full-featured source control interface supporting Git, Subversion, Perforce, and Microsoft Team Foundation Server code repositories. Graphical Database Modeling and ...