commit .hgsubstate after remove from .hgsub

Yuya Nishihara yuya at tcha.org
Sun Feb 19 03:07:07 UTC 2017


On Sat, 18 Feb 2017 08:37:34 -0800, Ludovic Chabant wrote:
> I'm not sure I totally understand your problem but I know that I had a 
> lot less problems with subrepos the day I understood that Mercurial 
> wants a "global commit" to update and manage the .hgsubstate file and 
> the other subrepo-related stuff. By "global commit" I mean a commit that 
> does not specify files to commit, or use any exclude patterns. Basically 
> a straight up "hg commit".
> 
> So maybe you have problems because you're trying to run something like 
> "hg commit .hgsub", or some other filtered-down commit?
> 
> > Jérôme Godbout <mailto:jerome at bodycad.com>
> > February 18, 2017 at 6:42 AM
> > The problem is that hg doesn't let me commit the file telling me that 
> > there is no local change event if .hgsubstate have modification where 
> > I remove the removed subrepos revision entry. When updating to 
> > revision Tortoisehg complain about it that something need to be 
> > commit. but I can't commit that file change even by command line.

Short answer: Don't use TortoiseHg to remove subrepos, run "hg ci" instead.

Long answer: This appears to be a bug of TortoiseHg and Mercurial. When adding
a subrepo, THg runs:

  % hg ci .hgsub subrepodir

If the subrepodir is excluded, Mercurial would complain about that:

  % hg ci .hgsub
  abort: commit with new subrepo subrepodir excluded

But when removing, THg doesn't include the removed subrepodir:

  % hg ci .hgsub

and it passes without an error. Also, the subrepodir can't be specified
explicitly:

  % hg ci .hgsub subrepodir
  abort: subrepodir: no match under directory!



More information about the Mercurial mailing list