我目前正在尝试评估Mercurial,以了解系统试图推广的理念 - 但令我困惑的一件事是捆绑的"扩展"的存在以及它们如何适应混合.
在核心包中,Mercurial附带了许多功能,这些功能作为扩展实现,但默认情况下是禁用的.(参见:https://www.mercurial-scm.org/wiki/UsingExtensions#Extensions_Bundled_with_Mercurial)
这是我很困惑的事情:
这些扩展是否被Mercurial开发团队视为一等公民,因此是整体Mercurial方法的一部分?
为什么它们在默认功能之外实现并默认禁用?
我不需要关于如何激活扩展的信息,这是非常直接的 - 这是我很好奇的分离背后的逻辑.
我试图理解这个问题的原因是因为如果它与项目的整体理念不同,我真的不想尝试通过扩展来反对Mercurial.
我没有运气使用Mercurial中的Bookmarks for Git就像分支一样.
从文章:https://www.mercurial-scm.org/wiki/BookmarksExtension,我在我的.hgrc文件中将"track.current"设置为true.
摘录如下:
默认情况下,当多个书签指向同一个变更集时,它们将一起向前移动.通过向.hgrc添加以下配置选项,可以获得更类似Git的体验
Run Code Online (Sandbox Code Playgroud)[bookmarks] track.current = True
但是,一旦我开始尝试在多个书签上进行并行/独立开发,然后在书签之间来回切换,我会遇到以下情况:
abort: crosses branches (use 'hg merge' or 'hg update -C')
Run Code Online (Sandbox Code Playgroud)
重现示例:
# Make a new directory and Mercurial repository
$ mkdir bookmark
$ cd bookmark
$ hg init
# Create two bookmarks
$ hg bookmark bk1
$ hg bookmark bk2
# Checkout bk1
$ hg update bk1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
# Create and commit a file to bk1 …Run Code Online (Sandbox Code Playgroud)