tests/test-filebranch.t
changeset 12192 968e9057ab8a
parent 12156 4c94b6d0fb1c
child 12316 4134686b83e1
equal deleted inserted replaced
12191:56c74b2df53d 12192:968e9057ab8a
       
     1 This test makes sure that we don't mark a file as merged with its ancestor
       
     2 when we do a merge.
       
     3 
       
     4   $ cat <<EOF > merge
       
     5   > import sys, os
       
     6   > print "merging for", os.path.basename(sys.argv[1])
       
     7   > EOF
       
     8   $ HGMERGE="python ../merge"; export HGMERGE
       
     9 
       
    10 Creating base:
       
    11 
       
    12   $ hg init a
       
    13   $ cd a
       
    14   $ echo 1 > foo
       
    15   $ echo 1 > bar
       
    16   $ echo 1 > baz
       
    17   $ echo 1 > quux
       
    18   $ hg add foo bar baz quux
       
    19   $ hg commit -m "base"
       
    20 
       
    21   $ cd ..
       
    22   $ hg clone a b
       
    23   updating to branch default
       
    24   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    25 
       
    26 Creating branch a:
       
    27 
       
    28   $ cd a
       
    29   $ echo 2a > foo
       
    30   $ echo 2a > bar
       
    31   $ hg commit -m "branch a"
       
    32 
       
    33 Creating branch b:
       
    34 
       
    35   $ cd ..
       
    36   $ cd b
       
    37   $ echo 2b > foo
       
    38   $ echo 2b > baz
       
    39   $ hg commit -m "branch b"
       
    40 
       
    41 We shouldn't have anything but n state here:
       
    42 
       
    43   $ hg debugstate --nodates | grep -v "^n"
       
    44 
       
    45 Merging:
       
    46 
       
    47   $ hg pull ../a
       
    48   pulling from ../a
       
    49   searching for changes
       
    50   adding changesets
       
    51   adding manifests
       
    52   adding file changes
       
    53   added 1 changesets with 2 changes to 2 files (+1 heads)
       
    54   (run 'hg heads' to see heads, 'hg merge' to merge)
       
    55 
       
    56   $ hg merge -v
       
    57   merging for foo
       
    58   resolving manifests
       
    59   getting bar
       
    60   merging foo
       
    61   1 files updated, 1 files merged, 0 files removed, 0 files unresolved
       
    62   (branch merge, don't forget to commit)
       
    63 
       
    64   $ echo 2m > foo
       
    65   $ echo 2b > baz
       
    66   $ echo new > quux
       
    67 
       
    68 We shouldn't have anything but foo in merge state here:
       
    69 
       
    70   $ hg debugstate --nodates | grep "^m"
       
    71   m 644          3 foo
       
    72 
       
    73   $ hg ci -m "merge"
       
    74 
       
    75 main: we should have a merge here:
       
    76 
       
    77   $ hg debugindex .hg/store/00changelog.i
       
    78      rev    offset  length   base linkrev nodeid       p1           p2
       
    79        0         0      73      0       0 cdca01651b96 000000000000 000000000000
       
    80        1        73      68      1       1 f6718a9cb7f3 cdca01651b96 000000000000
       
    81        2       141      68      2       2 bdd988058d16 cdca01651b96 000000000000
       
    82        3       209      66      3       3 d8a521142a3c f6718a9cb7f3 bdd988058d16
       
    83 
       
    84 log should show foo and quux changed:
       
    85 
       
    86   $ hg log -v -r tip
       
    87   changeset:   3:d8a521142a3c
       
    88   tag:         tip
       
    89   parent:      1:f6718a9cb7f3
       
    90   parent:      2:bdd988058d16
       
    91   user:        test
       
    92   date:        Thu Jan 01 00:00:00 1970 +0000
       
    93   files:       foo quux
       
    94   description:
       
    95   merge
       
    96   
       
    97   
       
    98 
       
    99 foo: we should have a merge here:
       
   100 
       
   101   $ hg debugindex .hg/store/data/foo.i
       
   102      rev    offset  length   base linkrev nodeid       p1           p2
       
   103        0         0       3      0       0 b8e02f643373 000000000000 000000000000
       
   104        1         3       4      1       1 2ffeddde1b65 b8e02f643373 000000000000
       
   105        2         7       4      2       2 33d1fb69067a b8e02f643373 000000000000
       
   106        3        11       4      3       3 aa27919ee430 2ffeddde1b65 33d1fb69067a
       
   107 
       
   108 bar: we should not have a merge here:
       
   109 
       
   110   $ hg debugindex .hg/store/data/bar.i
       
   111      rev    offset  length   base linkrev nodeid       p1           p2
       
   112        0         0       3      0       0 b8e02f643373 000000000000 000000000000
       
   113        1         3       4      1       2 33d1fb69067a b8e02f643373 000000000000
       
   114 
       
   115 baz: we should not have a merge here:
       
   116 
       
   117   $ hg debugindex .hg/store/data/baz.i
       
   118      rev    offset  length   base linkrev nodeid       p1           p2
       
   119        0         0       3      0       0 b8e02f643373 000000000000 000000000000
       
   120        1         3       4      1       1 2ffeddde1b65 b8e02f643373 000000000000
       
   121 
       
   122 quux: we should not have a merge here:
       
   123 
       
   124   $ hg debugindex .hg/store/data/quux.i
       
   125      rev    offset  length   base linkrev nodeid       p1           p2
       
   126        0         0       3      0       0 b8e02f643373 000000000000 000000000000
       
   127        1         3       5      1       3 6128c0f33108 b8e02f643373 000000000000
       
   128 
       
   129 Manifest entries should match tips of all files:
       
   130 
       
   131   $ hg manifest --debug
       
   132   33d1fb69067a0139622a3fa3b7ba1cdb1367972e 644   bar
       
   133   2ffeddde1b65b4827f6746174a145474129fa2ce 644   baz
       
   134   aa27919ee4303cfd575e1fb932dd64d75aa08be4 644   foo
       
   135   6128c0f33108e8cfbb4e0824d13ae48b466d7280 644   quux
       
   136 
       
   137 Everything should be clean now:
       
   138 
       
   139   $ hg status
       
   140 
       
   141   $ hg verify
       
   142   checking changesets
       
   143   checking manifests
       
   144   crosschecking files in changesets and manifests
       
   145   checking files
       
   146   4 files, 4 changesets, 10 total revisions
       
   147