我有这样一个变化莫测的回购,在另一个子回购里面有个子回购:
Root
.hg
.hgsub
.hgsubstate
Nested
.hg
.hgsub
.hgsubstate
foo.txt
FurtherNested
.hg
bar.txt如果我更改了foo.txt和bar.txt,并从根内部提交,那么一切都很好,所有嵌套的子目录都提交了。但是,如果我只更改bar.txt并从根提交,那么Hg认为什么都不会改变。我必须从内部嵌套提交,以便在只有FurtherNested更改的情况下才能提交。看来,为了使嵌套子表工作,每个嵌套级别都必须包含更改才能使递归工作。
我在关于subrepos的Mercurial文档中所读到的任何内容似乎都意味着,subrepo提交只有在发生更改时才会传播。事实上,它说的正好相反:
当我们提交时,Mercurial将尝试在所有定义的子defined中递归提交.
因此,我的问题是,这是预期的,还是什么东西坏了,或只是还没有做(在Windows上的1.5.4变化无常)?
发布于 2010-07-27 18:46:42
在我看来这只是个坏东西。相关的源代码(在subrepo.py中)似乎没有恢复到子级,即:
def dirty(self):
r = self._state[1]
if r == '':
return True
w = self._repo[None]
if w.p1() != self._repo[r]: # version checked out change
return True
return w.dirty() # working directory changed虽然我对代码的了解还不够深入,但修复起来可能不会太困难。这可能是值得在汞邮寄名单上张贴和/或归档一个错误。我怀疑马特和贝努伊特正在读这篇文章,但他们确实读了所有张贴在那里的东西。
https://stackoverflow.com/questions/3073149
复制相似问题