一、changesets
changeset是Mercurial分布式版本控制系统中用于管理代码变更历史记录的一种机制。每次提交代码变更,都会生成一个新的changeset,包含变更的作者、时间、变更描述等信息。通过对changeset的管理和查询,可以了解代码的变更历史记录,方便团队协作和代码维护。
HG提供了丰富的命令行和图形化工具来处理changeset,包括hg log、hg annotate、hg bisect、hg graft等。下面是一个创建新changeset的例子:
$ echo "hello world" > test.txt $ hg add test.txt $ hg commit -m "add test.txt"
二、changesettings
对于一个主题,可能需要设置一些控制变更的设置。在Mercurial中,这些设置被称为changesettings。比如,可以设置不允许在某个分支上进行强制推送、禁止在变更描述中使用特定的关键词等。
可以通过在repo的.hg文件夹下的hgrc文件中添加配置项,来设置changesettings。比如:
[hooks] pretxnchangegroup.forbidden_branches = branches = test_branch *other_branch pretxncommit.check_desc = ! grep -qi secret || ! grep -qi password
三、changesettle
changesettle是一个第三方插件,可以通过Jira中的提交信息来过滤和归类代码变更历史记录。它提供了一个Web界面,用于展示变更历史记录的统计信息。
可以通过以下命令安装和启用changesettle插件:
$ hg clone https://bitbucket.org/atlassianlabs/changesettle $ echo "[extensions]\nchangesettle = /path/to/changesettle" >> ~/.hgrc
四、changesettings推特
changesettings推特是一个使用Twitter通知代码变更历史记录的工具。它可以将每一个变更历史记录以及变更的详细信息发布到指定的Twitter账号上。
可以通过以下命令安装和启用changesettings推特:
$ hg clone https://bitbucket.org/astanin/hgchangesetweets $ echo "[extensions]\nchangesetweets = /path/to/hgchangesetweets" >> ~/.hgrc $ echo "[social]\ntwitter = consumer_key = ..., consumer_secret = ..., access_token_key = ..., access_token_secret = ..." >> ~/.hgrc
其中,consumer_key、consumer_secret、access_token_key和access_token_secret需要在Twitter开发者平台上获取。启用之后,在每个变更记录中添加以下字段,即可发布到Twitter:
[tweet] enabled = True
五、changesetupoptionpress
changesetupoptionpress是一个Sublime Text插件,可以通过快捷键来快速提交代码变更。它提供了一些选项,比如是否自动添加所有变更文件、设置变更描述等。
可以通过以下命令安装和启用changesetupoptionpress插件:
$ git clone https://github.com/bitswarming/changesetupoptionpress.git $ cd ~/Library/Application Support/Sublime Text 3/Packages $ ln -s /path/to/changesetupoptionpress
之后,在Sublime Text中按下快捷键ctrl+alt+c,即可提交代码变更。
六、changesettings怎么设置
设置changesettings需要在Mercurial配置文件中修改。可以在全局配置文件~/.hgrc中设置全局的changesettings,也可以在repo的配置文件.hgrc中设置单独的changesettings。以下是例子:
[aliases] log-with-desc = log -v -r "desc('re: {}')" [extensions] mq = [defaults] qnew = -f -m "" qgoto = -q qdiff = -p qrefresh = -e -S [diff] git = True context = 3 showfunc = True [ui] username = Your Name <your.email@example.com> ignore = ~/.hgignore verbose = True graph = True [hooks] changegroup.push = ./push.sh "$HG_SOURCE $HG_DEST" [ui] editor = subl [grep] all = True [bookmarks] track.current = False [web] push_ssl = False style = ../webstyle.css [webserver] allow_push = True
七、changesetupoptionpressf2key
默认情况下,Sublime Text中没有为代码提交提供快捷方式。可以通过自定义快捷键,将提交代码变更的操作绑定到特定的按键上。比如,可以将changesetupoptionpress插件绑定到F2键上:
{ "keys": ["f2"], "command": "changesetupoptionpress" }
八、changesetthings翻译
changesetthings是一款用于Mercurial代码变更历史记录可视化的插件。它提供了一个直观的图形界面,展示代码变更的拓扑结构和关系。通过changesetthings,可以更容易地阅读和理解代码变更的历史记录。
可以通过以下命令安装和启用changesetthings:
$ hg clone http://hg.intevation.org/mercurial/crew/
$ cd crew
$ hg checkout stable
$ python setup.py install
$ echo "[extensions]\ngraphlog = " >> ~/.hgrc
之后,在Mercurial工具中输入以下命令,即可打开changesetthings的图形化界面:
$ hg graphlog