Mercurial思想研读系列文章——3. 改变集 博客分类: VC_Mercurial MercurialHGSVN分布式版本控制
这里不再重复上一节的内容了,直接说明一下改变集包括的内容
Changeset(改变集)是对仓库中文件改变的原子粒度收集。
改变集包括:
the nodeid of its manifest
the list of changed files
information about who made the change (the "committer"), why ("comments") and when (date/time, timezone)
the name of the branch ("default", if omitted or not set)
每个改变包括0-2个父改变集:
0:root
1:普通的修改
2:两个集合merge
改变集是在commit的时候生成的。跟SVN情况相同。
改变集的例子:
1102691ceab8c8f278edecd80f2e3916090082dd <- nodeid
mpm@selenic.com <- 提交的用户
1126146623 25200 <- 时间, in seconds since the epoch, and seconds offset from UTC
mercurial/commands.py <- 修改文件列表,followed by the commit message
通过log命令可以查看改变集,教程中有给出了例子,直接看一段debug的全部信息,说明下重要的改变集相关的属性,具体命令下一节做个总结吧,这里先用。
$ hg log --debug
manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600
changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65
tag: tip
parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9
parent: -1:0000000000000000000000000000000000000000
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
files+: Makefile
description:
Create a makefile
-->changeset 标识了一个 改变集.
冒号前面的数字代表版本号; 它是一种标识改变集的本地缩写.只是在你的本地仓库中这个版本号才有意义.
冒号后面的那个很长的十六进制串是 ChangeSetID; 它是标识改变集的全局唯一标识符, 在所有包含这个改变集的仓库中都相同. 如果你正在和其他人讨论某个改变集,请使用这个 ChangeSetID,而不是上面说的版本号.
-->tag 是一个标签,可以理解成为一个改变集指定的名字.
你可以给任何改变集指定一个或者多个标签. 实际上, 许多改变集都是没有标签的, 所以tag这一行很多时候都不存在.
名叫tip 的特殊标签总是表示,它是仓库中最后一个改变集。 如果你创建另外的改变集(一会我们会看到),那么它将会变成 Tip。
-->
file+ 列出了在此改变集中增加的文件。
file- 列出了在此改变集中删除的文件。
manifest 给这个改变集一个 Manifest 号。(Manifest 描述了仓库中对于一个>changeset ID的内容,它主要包括了文件列表和当前版本,manifest ID用于标识特定改变集的manifest版本,多个改变集可以拥有同一个manifest版本。)