发布于 2016-02-03 00:26:18 | 75 次阅读 | 评论: 0 | 来源: 网友投递
Mercurial 分布式版本控制系统
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。相对于传统的版本控制
Mercurial 3.7 发布,更新如下:
特性
Generaldelta: the original Mercurial compression format had an inefficient way of storing history in very branchy repositories. Generaldelta addresses this weakness. As a result, depending on the repository, this can improve the size of the history up to a factor of 10. Mercurial 1.9 was the first release to support generaldelta (behind a feature flag), but Mercurial 3.7 also allows pulling a mixture of non-generaldelta and generaldelta history without having to recompute everything, which avoids overloading servers. As a result, generaldelta is now enabled by default. You can convert a repository to generaldelta using:
hg clone -U --config format.generaldelta=1 --pull originalrepo generaldeltarepo
Clonebundles: this is an server-side extension. It allows using a pre-generated bundle for an initial Mercurial clone. Clients will automatically use clonebundles if a server advertises them. Clonebundles allows much faster initial clones and reduces the load on a central server significantly. Mercurial 3.6 was the first version to include experimental clonebundles support, it's now been marked non-experimental. You can find out more using: hg help clonebundles.
Filesets now support 'missing()', to specify all files missing according to hg status.
Interactive committing (hg commit -i) and amending (hg commit --amend) can now be used together.
Merging can now handle collisions between untracked and tracked files, configurable according to the config option merge.checkunknown.
Default 'histedit' destination: it's now possible to run hg histedit without specifying a base revision. Mercurial will try to determine an appropriate base automatically. The revset used for this is "reverse(only(.) and not public() and not ::merge())", which specifies the first ancestor of the current changeset that is not public and does not have any descendants that are merges.
The '*.orig' files created by revert can now be stored in a different location, specified by the config option ui.origbackuppath.
hg shelve now supports storing untracked files.
hg unshelve now supports using a custom merge tool.
hg backout now commits by default if no conflicts were encountered.
hgweb now supports rendering sub-topics.
Server operators can now limit interaction with legacy clients speaking an outdated wire protocol. This is useful for preventing excessive CPU use when the server is using generaldelta repositories. See the various bundle1 options in hg help config.server.
Python wheel packages are now available for Windows on PyPI
[paths] entries can now define a separate URL for pushes. See hg help config.paths for more.
改进
This release includes many improvements, including (but not limited to):
performance improvements (speedup for 'hg log <file/folder>')
many documentation improvements (clarification, additional examples (see hg help <command> --verbose), ...)
improved PyPy support
hg clone --uncompressed is now 3-4x faster on Windows. See the backgroundclose* options in hg help config.worker for more.
完整更新请看: WhatsNew.
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。相对于传统的版本控制,具有如下优点:
更轻松的管理。
传统的版本控制系统使用集中式的 repository,一些和 repository相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,Mercurial 中就没有这样的困扰,每个用户管理自己的 repository,管理员只需协调同步这些repository。
更健壮的系统。
分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。
对网络的依赖性更低。
由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。