tests/test-convert-svn-sink.out
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sun, 23 Mar 2008 21:03:24 -0300
changeset 6370 6440e25a1ba3
parent 6336 4b0c9c674707
child 6518 92ccccb55ba3
permissions -rw-r--r--
localrepo.commit: grab locks before getting the list of files to commit Somebody may change the dirstate after we've determined the parents of the working dir and run repo.status, but before we called wlock(). This should also fix issue997, where backout would change a file without changing its size and then call repo.commit without passing the list of files. If this happened in less than one second, we wouldn't detect any file changes - the in-memory dirstate still has the cached stat data for that file. Grabbing the wlock early causes the dirstate to be invalidated and we end up reading the dirstate file again, which has that file marked for lookup (size == -1). A better fix would be for backout to give repo.commit the exact list of files, but that'll require some changes to the revert operation. A significant user-visible change is that the precommit hook is always run with both locks grabbed - previously, hg commit would run it before grabbing any locks, but hg import would run it after grabbing locks.

% add
adding a
adding d1/d2/b
% modify
1:e0e2b8a9156b
assuming destination a-hg
initializing svn repo 'a-hg'
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
1 add a file
0 modify a file
At revision 2.
                2        2 test         .
                2        2 test         a
                2        1 test         d1
                2        1 test         d1/d2
                2        1 test         d1/d2/b
<?xml version="1.0"?>
<log>
<logentry
   revision="2">
<author>test</author>
<date/>
<paths>
<path
   action="M">/a</path>
</paths>
<msg>modify a file</msg>
</logentry>
<logentry
   revision="1">
<author>test</author>
<date/>
<paths>
<path
   action="A">/a</path>
<path
   action="A">/d1</path>
<path
   action="A">/d1/d2</path>
<path
   action="A">/d1/d2/b</path>
</paths>
<msg>add a file</msg>
</logentry>
</log>
a:
a
d1

a-hg-wc:
a
d1
same
% rename
2:7009fc4efb34
assuming destination a-hg
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 rename a file
At revision 3.
                3        3 test         .
                3        3 test         b
                3        1 test         d1
                3        1 test         d1/d2
                3        1 test         d1/d2/b
<?xml version="1.0"?>
<log>
<logentry
   revision="3">
<author>test</author>
<date/>
<paths>
<path
   action="D">/a</path>
<path
   copyfrom-path="/a"
   copyfrom-rev="2"
   action="A">/b</path>
</paths>
<msg>rename a file</msg>
</logentry>
</log>
a:
b
d1

a-hg-wc:
b
d1
% copy
3:56c519973ce6
assuming destination a-hg
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 copy a file
At revision 4.
                4        4 test         .
                4        3 test         b
                4        4 test         c
                4        1 test         d1
                4        1 test         d1/d2
                4        1 test         d1/d2/b
<?xml version="1.0"?>
<log>
<logentry
   revision="4">
<author>test</author>
<date/>
<paths>
<path
   copyfrom-path="/b"
   copyfrom-rev="3"
   action="A">/c</path>
</paths>
<msg>copy a file</msg>
</logentry>
</log>
a:
b
c
d1

a-hg-wc:
b
c
d1
% remove
4:ed4dc9a6f585
assuming destination a-hg
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 remove a file
At revision 5.
                5        5 test         .
                5        4 test         c
                5        1 test         d1
                5        1 test         d1/d2
                5        1 test         d1/d2/b
<?xml version="1.0"?>
<log>
<logentry
   revision="5">
<author>test</author>
<date/>
<paths>
<path
   action="D">/b</path>
</paths>
<msg>remove a file</msg>
</logentry>
</log>
a:
c
d1

a-hg-wc:
c
d1
% executable
5:f205b3636d77
assuming destination a-hg
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 make a file executable
At revision 6.
                6        6 test         .
                6        6 test         c
                6        1 test         d1
                6        1 test         d1/d2
                6        1 test         d1/d2/b
<?xml version="1.0"?>
<log>
<logentry
   revision="6">
<author>test</author>
<date/>
<paths>
<path
   action="M">/c</path>
</paths>
<msg>make a file executable</msg>
</logentry>
</log>
executable
% executable in new directory
adding d1/a
assuming destination a-hg
initializing svn repo 'a-hg'
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 add executable file in new directory
At revision 1.
                1        1 test         .
                1        1 test         d1
                1        1 test         d1/a
<?xml version="1.0"?>
<log>
<logentry
   revision="1">
<author>test</author>
<date/>
<paths>
<path
   action="A">/d1</path>
<path
   action="A">/d1/a</path>
</paths>
<msg>add executable file in new directory</msg>
</logentry>
</log>
executable
% copy to new directory
assuming destination a-hg
initializing svn wc 'a-hg-wc'
scanning source...
sorting...
converting...
0 copy file to new directory
At revision 2.
                2        2 test         .
                2        1 test         d1
                2        1 test         d1/a
                2        2 test         d2
                2        2 test         d2/a
<?xml version="1.0"?>
<log>
<logentry
   revision="2">
<author>test</author>
<date/>
<paths>
<path
   action="A">/d2</path>
<path
   copyfrom-path="/d1/a"
   copyfrom-rev="1"
   action="A">/d2/a</path>
</paths>
<msg>copy file to new directory</msg>
</logentry>
</log>
% branchy history
adding b
adding left-1
adding left-2
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding right-1
created new head
adding right-2
3 files updated, 0 files merged, 2 files removed, 0 files unresolved
merging b
warning: conflicts during merge.
merging b failed!
2 files updated, 0 files merged, 0 files removed, 1 files unresolved
There are unresolved merges, you can redo the full merge using:
  hg update -C 2
  hg merge 4
assuming destination b-hg
initializing svn repo 'b-hg'
initializing svn wc 'b-hg-wc'
scanning source...
sorting...
converting...
5 base
4 left-1
3 left-2
2 right-1
1 right-2
0 merge
% expect 4 changes
At revision 4.
                4        4 test         .
                4        3 test         b
                4        2 test         left-1
                4        3 test         left-2
                4        4 test         right-1
                4        4 test         right-2
<?xml version="1.0"?>
<log>
<logentry
   revision="4">
<author>test</author>
<date/>
<paths>
<path
   action="A">/right-1</path>
<path
   action="A">/right-2</path>
</paths>
<msg>merge</msg>
</logentry>
<logentry
   revision="3">
<author>test</author>
<date/>
<paths>
<path
   action="M">/b</path>
<path
   action="A">/left-2</path>
</paths>
<msg>left-2</msg>
</logentry>
<logentry
   revision="2">
<author>test</author>
<date/>
<paths>
<path
   action="M">/b</path>
<path
   action="A">/left-1</path>
</paths>
<msg>left-1</msg>
</logentry>
<logentry
   revision="1">
<author>test</author>
<date/>
<paths>
<path
   action="A">/b</path>
</paths>
<msg>base</msg>
</logentry>
</log>