Mercurial思想研读系列文章——3. 改变集

这里不再重复上一节的内容了,直接说明一下改变集包括的内容

 

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

[email protected] <- 提交的用户

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:        [email protected]

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版本。)

 

 

 

你可能感兴趣的:(SVN,分布式,mercurial,hg,版本控制)