Background and Our Needs
I first heard about distributed version control systems from Allan Odgaard on the TextMate blog. We’ve been working for about a year on Unison, which is a web application to develop online training. Our development has been so fast-paced at times we’ve been forced to push out releases more quickly than we could test them thoroughly. More than once we’ve needed to push out a less-than-stable feature for a high-profile client. We would later realize something wrong with the feature, but there was no way to go back.Branching and reverting changes in version control software is supposed to allow you to do these things, but both are so annoying in SVN that we never actually used either. We only kept a branch around when we wanted to make a release and continue development in the trunk. We would never have dared roll back any commits
Enter Distributed Version Control
Distributed Version Control promised to solve these problems for us. We would be able to branch as often as we liked, which would then allow us to keep branches around for longer without worrying about merging them later.
I first looked at git, then tried mercurial (hg) for awhile, then finally decided on git. I’m going to try to provide an unbiased review of some of their strengths and weaknesses.
Realize that both tools are good at merging, both have strong user communities, and they are very similar choices. I found good comparisons hard to come by.
Mercurial
Mercurial has several advantages over git.
Excellent Documentation: The hgbook helped me to understand the concepts
Cleaner Commands: The interface requires fewer options and flags
Intuitive Commands: The names they picked for reverting changes make more sense
Windows Support: They have a full windows client, although using it to make lots of branches would get crazy fast
It also has some disadvantages
“Named
Branches” suck: They added this feature as an afterthought. The way
everyone branches is by “cloning” a repository. So, if you want to work
in a new branch, you have to make a brand new copy of everything. The
implementation of named branches simply isn’t workable
Rewriting History is difficult: hg doesn’t have the features git does here
Git
Git has its own strengths
Branching is Supreme: This is a big
one. Git lets you make new branches at any time, and lets you switch
back and forth between them in one working copy.
Remote Branches:
Git can send and receive changes from several different public
repositories. This is useful if you need to publish more than one
branch so others can download your changes.
Merging and Rewriting
History: You can squash several commits together into one big commit
when you merge, getting rid of the useless messages. You can easily
pull a new version of the code you’re working on into your experimental
branches.
Disadvantages
Slightly more confusing: There are more commands by default, and the reverting commands are hard to keep straight at first
The Wrapup
The interface to Mercurial is easier, and I like their mainstream approach, but git is simply far better with anything advanced. I don’t feel that Mercurial can handle making branches for each feature you are developing, and doesn’t do a good job of pushing/pulling changes from public repositories.
In the end, we picked Git. I’m going to revisit mercurial in another year and see if they’ve finished adding a few more necessary features. I wanted a DVCS in the first place so I could branch like crazy, and Mercurial really doesn’t support it well enough.
相关推荐
转换脚本 博文链接:https://qianjigui.iteye.com/blog/1561197
安装vscode后没有git bash here怎么办?安装git,来源git官网https://git-scm.com/download/win,但是下载需要进入github,无法访问。可以这届下载我这个
Smart GIT绿色免安装(需JAVA环境),内置GIT,Mercurial环境(无须再安装GIT,Mercurial),带注册机。是GIT的可视化好工具,再不用记那么多的命令了:)真心好用。
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
共享和管理Git,Mercurial和Subversion存储库的最简单方法。 非常容易安装 无需修改配置文件,SCM-Manager完全可以从其Web接口进行配置 无需Apache,无需安装数据库 中央用户,组和权限管理 对Git,Mercurial和...
最省事的最方便的破解包,带git、Mercurial以及license,保证只需要下载一次,不需要其他安装包
详细解释分布式系统git的使用与管理。内容详尽、全面。
SCM Manager 是一款同时支持Git、Subversion、Mercurial的源代码管理服务器,基于Java构建。 中文版由木鱼制作,除了进行全面的中文化以外,还提供了配置脚本、预置了插件并进行了插件的中文化,以及安装说明。 SCM...
Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维 护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用...
PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel ...
分布式版本管理工具当中,Git和Mercurial(意思为水银的,于是经常缩写为Hg)是最为流行的工具。大名鼎鼎的Linux就用Git作源码管理,而Python和Firefox则采用Hg(你可以在这找到一堆使用Hg的项目 )。
capl实现crc校验码计算知识领域: 软件开发 技术关键词: Git版本控制 内容关键词: 分布式版本追踪与团队协作 用途: 用于多开发者协作的代码管理与版本控制,确保代码变更的可追溯性和团队工作的同步性。 对资源的...
Git是⺫⽬目前世界上最先进的分布式版本控制系统(没有之⼀一)。 Git有什么特点?简单来说就是:⾼高端⼤大⽓气上档次! 那什么是版本控制系统? 如果你⽤用Microsoft Word写过⻓长篇⼤大论,那你⼀一定有这样的...
分布式版本控制系统Git分布式版本控制系统Git分布式版本控制系统Git
git分布式系统管理git分布式系统管理
Gitblit搭建及Git协作开发流程参考
Git是一个强大的分布式的源代码管理工具。Git是用c语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状态可以是不同的文件,也可以...
GIT分布式版本控制
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。 这里默认下载的是64位的软件 双击下载的安装文件来安装Git。 一直下一步直到安装完成...