【问题标题】:How do I only commit a subrepo's changes?我如何只提交子仓库的更改?
【发布时间】:2012-06-19 02:16:16
【问题描述】:

我有一个主存储库,其中有一些我不想提交的更改。

我有一个子存储库,其中包含已提交的更改

我想在我的主存储库中提交更改子存储库修订,而不提交对主存储库中文件的更改。

我似乎无法做到这一点。我无法提交 .hgsubstate,并且对要提交的文件进行微不足道的更改,但不会将子存储库更改提交到主存储库。

【问题讨论】:

  • 如果你修改的文件被命名为foobar,你试过hg ci -S -X foo -X bar吗?

标签: mercurial subrepos


【解决方案1】:

将子存储库本身的名称传递给提交,Mercurial 将更新.hgsubstate 并提交它。

ry4an@four:~$ hg init main
ry4an@four:~$ cd main
ry4an@four:~/main$ hg init sub
ry4an@four:~/main$ echo sub = sub > .hgsub
ry4an@four:~/main$ hg add .hgsub
ry4an@four:~/main$ hg commit
ry4an@four:~/main$ cd sub
ry4an@four:~/main/sub$ echo text > afile
ry4an@four:~/main/sub$ hg commit -Am first-in-sub
adding afile
ry4an@four:~/main/sub$ cd ..
ry4an@four:~/main$ hg status
ry4an@four:~/main$ echo text > dont-commit-me
ry4an@four:~/main$ hg add dont-commit-me
ry4an@four:~/main$ hg status
A dont-commit-me
ry4an@four:~/main$ cat .hgsubstate
0000000000000000000000000000000000000000 sub
ry4an@four:~/main$ hg commit -m 'subrepo only' sub
ry4an@four:~/main$ hg status
A dont-commit-me
ry4an@four:~/main$ cat .hgsubstate
dec5eaa9e22cd0a05cbba3ba02fdb0e1f243e07e sub

请注意,主 dont-commit-me 中的文件从未被提交,但 .hgsubstate 已更新。

【讨论】:

  • 成功了。我不敢相信我没想过要尝试!
  • 这有点误导,因为dont-commit-me 无论如何都不会被提交。如果添加了它,那么commit 的参数会有所不同。 (不过,我尊重 Ry4an,因为我知道他是 Mercurial 大师。)
  • 你说得对,@harpo。我应该添加它,因为它是一个更好的例子。
  • 在 Hg 中(没有虚拟文件),我得到“没有任何改变”。当我添加一个虚拟文件时,我收到一个错误“子存储库中未提交的更改”。似乎用例处理失败..
猜你喜欢
  • 2020-06-14
  • 2021-09-03
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多