[Bug 4622] New: .hgsubstate is corrupted after merging and resolving subrepos

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Fri Apr 24 20:16:12 UTC 2015


http://bz.selenic.com/show_bug.cgi?id=4622

          Priority: normal
            Bug ID: 4622
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: .hgsubstate is corrupted after merging and resolving
                    subrepos
          Severity: bug
    Classification: Unclassified
                OS: Windows
          Reporter: swpalmer at gmail.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 3.3.3
         Component: Mercurial
           Product: Mercurial

The following Windows batch file will reproduce the problem. The hash will go
missing from .hgsubstate for a particular subrepo.



@echo off
REM Steps to reproduce in this exact chronological order:
REM System A and System B both have an identical clone of repo XXX which only
subrepo YY
REM System A
REM Change something in YY; don't commit
REM Clone in a new subrepo ZZ; update .hgsub; can't commit .hgsub because of
the uncommitted changes in YY
REM System B:
REM Implement a change in YY and commit + push
REM System A:
REM While the changes are still all uncommitted, 'hg pull' to grab the changes
in YY
REM Notice how the root level .hgsubstate is corrupted as it relates to subrepo
ZZ

hg init XXX
cd XXX
hg init YY
echo YY=YY>.hgsub
hg add .hgsub
cd YY
echo Hi >>yy.txt
hg addremove
cd ..
hg init ZZ
cd ZZ
echo zzz>zz.txt
hg addremove
hg ci -m "initial ZZ"
REM ZZ not a subrepo yet
cd ..
hg ci -S -m  "Initial XXX repo with subrepo"

cd ..
hg clone XXX A
hg clone XXX B

cd B
echo whatever >>YY\yy.txt
hg ci -S -m "Tweaked subrepo"
hg push

cd ..\A
echo Mom >>YY\yy.txt
hg clone ..\XXX\ZZ
echo ZZ=ZZ>>.hgsub
cd ZZ
echo whatever >>zz.txt
cd ..
REM "Added a new subrepo"

echo.
echo.
echo Pick (M)erge for diverged subrepo, then pick (r)remote for subrepository
sources (manually resolve conflict)
echo.
echo.
hg pull -u

echo Now .hgsubstate is corrupted
hg st
type .hgsubstate

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list