[issue2456] Update fails if subrepo path conflicts with older file path

Tim Henigan bugs at mercurial.selenic.com
Wed Oct 27 20:21:45 UTC 2010


New submission from Tim Henigan <tim.henigan at gmail.com>:

If I have a repo like this:

  parent/
    lib/
      file.py

and later commit a series of changes to:
  1) Remove all files under 'lib' folder
  2) Create a new subrepo at 'lib'

then I can no longer update to a changeset prior to the existence of the
subrepo.  If I try, the update fails with the following error:

  "abort: path 'lib/test.txt' is inside repo 'lib'"

This also corrupts the repo.  Before the operation is aborted both the
.hgsub and .hgsubstate files are removed from the filesystem.  When I
attempt an "hg update" to restore them, that operation also fails with this
error:

  "/path/to/repo/.hgsub: The system cannot find the file specified"

Performing:
  'hg cat -r tip .hgsub > .hgsub'
  'hg cat -r tip .hgsubstate > .hgsubstate'

gets the repo back into a working state, but was not immediately obvious.

I attached a very simple example repo which demonstrates the problem. 
Simply try to 'hg update -r 1' from the tip.

I am running Mercurial version 1.6.3 on Windows XP.

----------
files: subrepo_test.bundle
messages: 14174
nosy: thenigan
priority: bug
status: unread
title: Update fails if subrepo path conflicts with older file path
topic: subrepo, subrepositories

____________________________________________________
Mercurial issue tracker <bugs at mercurial.selenic.com>
<http://mercurial.selenic.com/bts/issue2456>
____________________________________________________
-------------- next part --------------
A non-text attachment was scrubbed...
Name: subrepo_test.bundle
Type: application/octet-stream
Size: 1287 bytes
Desc: not available
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20101027/2b1df2b5/attachment.obj>


More information about the Mercurial-devel mailing list