I used the have the following line in my .hgsub
for years:
setup/help = https://my.repo.com/manuals
It would place the repository named "manuals" into a folder help
inside another folder setup
. So my parent repository structure looks like this:
.hg
setup
|__help
| |__.hg
|
.hgsub
This was no problem until I updated to Mercurial 4.9 today, it now says: "subrepo path contains illegal component: setup/help", and I can't even commit to the main repo. Does Mercurial forbid this now? Is there a valid .hgsub
syntax to make this work? I don't want to move help
to be a direct child of the main project folder. My previous Mercurial version was 4.5, it's not like I was using ancient tools...
Error traceback as per the request:
Traceback (most recent call last):
File "mercurial\scmutil.pyo", line 165, in callcatch
File "mercurial\dispatch.pyo", line 367, in _runcatchfunc
File "mercurial\dispatch.pyo", line 1021, in _dispatch
File "mercurial\dispatch.pyo", line 756, in runcommand
File "mercurial\dispatch.pyo", line 1030, in _runcommand
File "mercurial\dispatch.pyo", line 1018, in <lambda>
File "mercurial\util.pyo", line 1670, in check
File "mercurial\commands.pyo", line 4621, in push
File "mercurial\context.pyo", line 277, in sub
File "mercurial\subrepo.pyo", line 164, in subrepo
File "mercurial\subrepo.pyo", line 414, in __init__
Abort: subrepo path contains illegal component: setup/help
abort: subrepo path contains illegal component: setup/help
I had the same error, so I cloned the mercurial repository...
The error was introduced in tagged version 4.9, subrepo.py.
It was corrected about a month later, revision 41583 (87a6e3c953e045d92147925fc71aad7c327fdbfd). I tested it on the actual default branch, works again!
So, no need for a bug entry, we just have to wait for the next release.
How confident are you with a Python debugger? You can launch the command with the --debugger
this time.
You might see an output like this:
entering debugger - type c to continue starting hg or h for help
--Call--
> /usr/lib64/python2.7/contextlib.py(21)__exit__()
-> def __exit__(self, type, value, traceback):
(Pdb)
Enter c
and enter
until you see the same traceback as the one you pasted.
When you are at the right traceback, you can print the local variables using pp root
, pp util.expandpath(root)
and os.path.realpath(util.expandpath(root))
. We should be able to get to the root of the issue with the values of those variables.
To exit the debugger, enter q
and enter
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With