Mercurial简明教程(在工作流程中学习Mercurial)
来源:互联网 发布:淘宝店主的故事 编辑:程序博客网 时间:2024/05/21 16:07
原文地址:http://mercurial.selenic.com/guide/
转载请注明出处http://blog.csdn.net/rightgenius/archive/2011/02/26/6209306.aspx
Mercurial简明教程(在工作流程中学习Mercurial)
Learning Mercurial in Workflows
基本工作流程(Basic Workflows)
1. 日志记录
用例
第一个工作流程是最简单的:你希望Mercurial能够帮你回顾之前的更改。
这只需要安装Mercurial并拥有对某个存储介质的写访问权限。这是复杂工作流程的基础。
工作流程
l 准备Mercurial
第一步,要让Mercurial认识你。打开安装目录,编辑.hgrc文件(在Windows中是.ini文件),在ui章节中(userinteraction用户交互)添加你的用户名
[ui]
username = Mr.Johnson <Johnson@smith.com>
l 初始化项目
现在添加一个你想工作的项目文件夹:
$ hg init project
l 添加文件并追踪修改
$ cd project
$ (add files)
$ hg add
$ hg commit
----------------------------------------------------
注意:
你也可以进入一个已经有文件的文件夹,在那里初始化项目
$ cd project
$ hg init
你可以选择特定的文件add到版本中,而其他的文件将不被mercurial识别。下面的命令告诉mercurial记录所有以“file0”打头的文件和另外3个独立文件“file10”、“file11”、“file12”。
$ hg add file0* file10 file11 file12
----------------------------------------------------
l 保存修改
$ (do some changes)
查看哪些文件被修改,哪些被添加或删除到版本中,以及还有哪些没有被版本记录
$ hg status
查看确切的改动
$ hg diff
向mercurial提交更改
$ hg commit
执行这个命令时会有一个编辑器弹出,让你提交版本更新信息,保存并关闭编辑器之后,你的更改将被保存到Mercurial
----------------------------------------------------
注意:
你也可以直接用hg commit –m ‘MESSAGE’ 提交版本信息
----------------------------------------------------
l 移动和复制文件
当你移动或复制文件时,你一定要使用Mercurial来做这件事,从而能够记录这些文件之间的关系。
记住在移动和复制之后要commit。在基本命令中,只有commit可以产生新的版本。
$ hg cporiginal copy
$ hg commit
(enter thecommit message)
$ hg mvoriginal target
$ hg commit
(enter thecommit message)
现在你有两个文件,”copy”和”target”,Mercurial知道他们之间是如何联系起来的。
----------------------------------------------------
注意:
如果你忘记了用显式的copy和move,你仍然能够告诉Mercurial去检查这些变更:hgaddremove –similarity 100。去hg help查看addremove的使用细节。
l 查看历史记录
$ hg log
这个将打印出所有的版本变化和他们的提交日期,提交者和版本信息。
你可以使用-r开关(--revision)来查看特定的版本。查看显示的版本间的差异,可以使用-p开关(--patch)
$ hg log –p –r 3
2. 单个开发者和非线性开发历史
用例
第二个工作流程仍然很简单:你是一个独立的开发者,你打算用Mercurial记录你自己的版本变化。
这和日志记录流程有些类似,不同之处在于你有时会回到一个早期版本。
同样的建立新项目,初始化repository,添加文件并提交。
你也要不时的检查的历史记录,看看你是怎么一步步开发到现在的。
工作流程
l 和日志记录一样的基础命令
初始化,添加、查看更改、提交
$ hg init project
$ cd project
$ (add files)
$ hg add # tell Mercurial to track all files
$ (do some changes)
$ hg diff # see changes
$ hg commit # save changes
$ hg cp # copy files or folders
$ hg mv # move files or folders
$ hg log # see history
l 查看一个早期版本
和日志记录不同,你希望回到某一个早期版本并且直接在那个版本中修改。例如因为一个早期的修改引入了一个bug,你希望修正它。
你可以使用update来查看早期版本的代码。我们假设你要看版本3
$ hg update 3
现在你的代码就返回了版本3的状态了,即第四次提交(从0开始计算)。用idfentify–n确认你所在的版本。
$ hg identify –n
----------------------------------------------------
注意:
不加参数的identity命令将给你一个简写的版本ID,这是Mercurial内部使用的ID。如果你希望告诉其他人你update到的版本,需要使用这个ID,因为本地的计数版本号对于每个人来说是不同的。如果你想弄清楚这么做的原因,请阅读Mercurials [basicconcepts]。当你在最新的版本时,hg identify –n 将会返回”-1”。
----------------------------------------------------
你可以使用”tip”作为版本名来update到最新的版本。
$ hg update tip
----------------------------------------------------
注意:
如果某个命令提示错误或警告,你最好按照它的提示进行。
----------------------------------------------------
----------------------------------------------------
注意:
你也可以用缩写hg up 来代替hg update
类似的使用hgci 来代替hg commit
----------------------------------------------------
----------------------------------------------------
注意:
如果要得到没有文件的版本,直接通过updatenull命令升级到“null”。这是什么文件都没有被添加之前的版本。
----------------------------------------------------
l 修正早期版本中的错误
当你发现一个从一个早期版本开始的bug,你有两种选择:直接在当前版本中修改,也可以回到历史版本修改,从而让历史记录更加清晰。
为了让历史记录更清晰,首先要update到过去的版本,修正bug并提交。之后你将整个版本merge到新版本中并提交。别担心,在Mercurial中Merging快速而轻松,你马上会看到。
首先我们假设bug在版本3中被引入。
$ hg update 3
$ (fix the bug)
$ hg commit
现在修正已经保存在了历史版本中。我们只需要将它和最新版本merge
$ hg merge
如果版本间有冲突,用hgresolve,当然这同样也是merge命令在出现冲突时会提示你的。
首先列出冲突的文件:
$ hg resolve–list
然后解决他们,用resolve尝试再次merge
$ hg resolveconflicting_file
(fix it byhand, if necessary)
标记修正的文件已经resolved
$ hg resolve–mark conflicting_file
一旦你解决了所有的冲突,提交merge。即使是没有冲突,这一步也是必要的!
$ hg commit
这样使用时,你的修正会被应用到所有你其他的工作中,然后你就可以继续coding啦。另外,历史记录将清晰的显示你在哪里修复了bug,所以你可以一直核对是哪里的bug。
----------------------------------------------------
注意:
大部分merge会直接起作用。当merge出现问题时,你只需要resolve。
----------------------------------------------------
因此你现在可以初始化repositories,保存修改,update到之前版本,提交早期的修正并与最新版本merge,从而在一个非线性的历史记录中开发。
----------------------------------------------------
注意:
如果你修复了早期版本中的bug,而后来的版本复制或移动了那个文件,这个修正将修改所有的目标文件。这是你使用hgcp和hgmv的主要原因。
----------------------------------------------------
- Mercurial简明教程(在工作流程中学习Mercurial)
- Mercurial
- Mercurial
- Mercurial
- 学习Mercurial
- (Mercurial 教程) Mercurial Tutorials on-line resource
- 在RedHat/CentOS中安装Mercurial(HG)
- Mercurial 学习笔记(hg 命令)
- Mercurial 学习笔记
- 在CentOS下安装Mercurial
- 在Windows2012下配置Mercurial
- 学习hg(mercurial)版本控制
- 分布式版本控制系统Mercurial(一):Mercurial基本功能介绍
- 突击Mercurial SCM(HG)
- 分布式版本控制工具 Mercurial 使用教程
- Mercurial 从零开始
- Mercurial(hg)
- Mercurial简介
- 我编写的C语言教材已由电子工业出版社出版
- 《软件随想录》总体感受
- Android下编译自己的库文件jar并在应用中调用
- Ext 2.0使用:对分页Ext.PagingToolbar的扩展
- 如何在AltiumDesigner中实现两片DDR等长走线
- Mercurial简明教程(在工作流程中学习Mercurial)
- 《喜欢昨天》
- 使用WTP套件构建Web开发环境
- 《软件随想录》——人员管理(一)软件公司的管理
- ubuntu关于网络的修改
- ubuntu关于源的修改
- 《软件随想录》——人员管理(二)怎么去寻找优秀的程序员
- 如何使用DataTable.Select选出来的Rows生成新的DataTable?
- WINCE USB Serial 通信