2

在 kiln stack exchange 网站上对这个问题的回答中,有一条评论提到“如果您从图书馆的一个使用者提交,其他图书馆使用者不会立即看到这些变更集。您必须显式地在其他消费者的图书馆回购。”

我已将一些文件添加到项目 .hgsub 和 .hgsubstate 文件中引用的存储库中,但它们没有显示在项目子存储库中(因为该项目非常正确地使用了之前分配的先前更改集)

我想知道如何编辑子仓库使用的变更集。我只是编辑 .hgsubstate 文件(似乎有点“hackish”)还是我可以使用命令/窑网站选项?

4

1 回答 1

5

在子存储库中,hg update指向您希望主存储库使用的变更集。然后,在主存储库中,发出hg ci提交子存储库更改的问题。Mercurial 将使用子存储库的当前父变更集 ID 自动更新.hgsubstate文件。

示例(Windows .bat 文件):

REM Create main repository
hg init Example
cd Example
echo >file1
hg ci -Am file1
cd ..

REM Create another repository
hg init Library
cd Library
echo >file2
hg ci -Am file2
cd ..

REM Clone the Library into the main repository
cd Example
hg clone ..\Library

REM and configure it as a subrepository.
echo Library=Library >.hgsub

REM Commit it.
hg ci -Am "Added Library sub repository."

REM Note .hgsubstate is updated with the current subrepo changeset.
type .hgsubstate
cd ..

REM Someone updates the original Library.
cd Library
echo >file3
hg ci -Am file3
cd ..

REM Main repo isn't affected.  It has a clone of Library.
cd Example
hg status -S

REM Update to the latest library
cd Library
hg pull -u
cd ..

REM View the changes to the library in the main repo.
hg status -S

REM Commit the library update in the main repo.
hg ci -m "Updated library."

REM Note .hgsubstate is updated.
type .hgsubstate
于 2012-01-16T02:22:47.673 回答