一、介绍
Mercurial HG是基于python的开源分布式版本管理工具。与SVN不同的是,每个本地仓库都保存着完整的历史记录,即使远程仓库暂时离线,也可以进行本地版本管理,待远程仓库在线后再一起推送多次的修改记录。官网:https://www.mercurial-scm.org
二、常用命令介绍
1. 克隆到本地
hg clone http://server:8000/xxx # 会自动创建xxx目录
也可以先建文夹,再克隆到当前目录
mkdir xxx
cd xxx
hg clone http:/server:8000/xxx . # 克隆到当前文件夹,不会创建xxx目录
Tips
hg clone http://server:8000/xxx xxx
cd xxx
hg branches #查看有哪些分支
hg update branch_name #切换到指定分支
hg branch #查看当前分支, 确认是否切换成功
分支相关的命令请参考后面的介绍!
2. 建立本地仓库
hg init
3. 添加、删除、重命名文件
hg add xxx.v
hg remove xxx.v
hg rename xxx.v yyy.v
4. 本地提交
hg commit -m "add/remove xxx function"
Tips:
5. 与远程仓库同步
hg pull # 远程->本地
hg push # 本地->远程
Tips:
6. 查看状态
hg status # 查看状态
hg st # 可简写
hg st -q . # 查看状态时忽略untracked文件,其中-q是--quiet的简写
7. 分支
hg branch new_branch_name # 新建分支,commit后分支才真正创建
hg branch # 查看当前分支
hg branches # 查看所有分支
hg push --new-branch # 分支传到远端
hg update branch_name2 # 切换到分支branch_name2
hg update default # 切换回主干
8. 切换到指定的版本号
hg update -r # 版本号
9. 查看与远端服务器的差别
hg incoming # 只是看差别,不真正pull
hg outgoing # 只是看差别,不真正push
Tips:
10. 查看更新记录
hg tip # 查看最新一次的提交
hg log -r # 版本号
hg log -l 2 # 只看最新的两个版本
hg log -v # 查看更新了哪些文件 (verbose)
hg log -p # 查看具体文件内容的差异 (patch)
Tips:
changeset: 69:35e07e070136
branch: a1n
tag: tip
user: Feng.Chen
date: Thu Feb 27 12:52:32 2020 +0800
files: .hgignore sim/rsim/report sim/script/run sim/script/run_regression.pl sim/script
/run_sim.pl sim/tc/seq/reg_wr_pri_seq.svh sim/tc/seq/reg_wr_pul_seq.svh sim/tc/seq/rgb_seq.sv
h sim/tc/w/tc_000_000.svh
description:
update 2020-02-27, change run_regression, run_sim, rgb_seq, testcase, etc
可以用
hg log -v | sim/script/get_update_list.py
(get_update_list.py是自己写的脚本,在项目script里)来美化文件列表,效果如下:
changeset: 69:35e07e070136
branch: a1n
tag: tip
user: Feng.Chen
date: Thu Feb 27 12:52:32 2020 +0800
files:
.hgignore
sim/rsim/report
/script/run
/run_regression.pl
/run_sim.pl
sim/tc/seq/reg_wr_pri_seq.svh
/reg_wr_pul_seq.svh
/rgb_seq.svh
/w/tc_000_000.svh
description:
update 2020-02-27, change run_regression, run_sim, rgb_seq, testcase, etc
11. 合并
hg merge -r REV # 把本地的最新版本与刚pull的最新版本进行merge,REV是pull的最新版本
Tips:
12. 放弃本地修改、撤销提交
hg revert xxx.v # 放弃本地修改,回到上次提交的状态
hg rollback # 回到上一个版本,最新修改过的文件仍然保留
13. 误删除文件的恢复(已经加入版本库的文件)
也是用hg revert:
hg revert xxx.v
14. 不再跟踪某文件
hg forget xxx.v # 从版本管理里面把某文件去掉,文件还保留在本地,不会删除。
与hg remove的区别是,remove会删除本地的文件,而forget不会。
三、.hgignore的写法
有glob和regexp两种:
syntax: glob
*.mr
INCA_libs
syntax: regexp # 即python的正则语法
^.*\.mr$
四、与svn、git命令对照表
总结如下图:
五、一些配置小技巧
hg的配置:分页看log、色彩、log带分支图
[extensions]
pager =
color =
graphlog =
[pager]
pager = more