Diff between old revisions of file now in subrepo directory fails
Created originally on Bitbucket by James Oldfield
I am running TortoiseHg 5.0.2 on Windows 10 64-bit.
Steps:
- Create a file within a subdirectory of a repo, e.g. in MyRepo create MyRepo/Foo/bar/baz.cpp, and commit. Call this revision 1.
- Change that file and commit again. Call this revision 2.
- Delete that subdirectory, and replace with a subrepository. (In my case, the subrepo contains all the same files that were there before, but I don't think that's relevant.) Call this revision 3.
- In TortoiseHG Workbench, browse back to revision 2. Click on the file and you will see the diff successfully shown in the bottom right pane. But double click (or right click -> Diff to Parent) and you will get an error:
path 'MyRepo\Foo\bar\baz.cpp' is inside nested repo 'MyRepo\Foo'.
Here is the detail:
#!python
** Mercurial version (5.0.2). TortoiseHg version (5.0.2)
** Command:
** CWD: C:\Program Files\TortoiseHg
** Encoding: cp1252
** Extensions loaded: hggit, mercurial_keyring, shelve, strip, rebase, mq, tortoisehg.util.configitems
** Python version: 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)]
** Windows version: sys.getwindowsversion(major=6, minor=2, build=9200, platform=2, service_pack='')
** Processor architecture: x64
** Qt-5.9.2 PyQt-5.9.1 QScintilla-2.10.2.dev1711012104
Traceback (most recent call last):
File "tortoisehg\hgqt\revdetails.pyo", line 383, in onDoubleClick
File "tortoisehg\hgqt\filectxactions.pyo", line 115, in wrapped
File "tortoisehg\hgqt\filectxactions.pyo", line 289, in visualDiffFile
File "tortoisehg\hgqt\filectxactions.pyo", line 299, in _visualDiffToBase
File "tortoisehg\hgqt\filectxactions.pyo", line 308, in _visualDiff
File "tortoisehg\hgqt\visdiff.pyo", line 239, in visualdiff
File "mercurial\match.pyo", line 219, in match
File "mercurial\match.pyo", line 265, in _donormalize
File "mercurial\pathutil.pyo", line 192, in canonpath
File "mercurial\pathutil.pyo", line 101, in __call__
File "mercurial\pathutil.pyo", line 129, in _checkfs
Abort: path 'MyRepo\Foo\bar\baz.cpp' is inside nested repo 'MyRepo\\Foo'