tests/test-graft.t
branchstable
changeset 15361 c1930992e111
child 15501 2371f4aea665
child 15506 dc9fb7015d7f
equal deleted inserted replaced
15360:73628b32d0c0 15361:c1930992e111
       
     1 Create a repo with some stuff in it:
       
     2 
       
     3   $ hg init a
       
     4   $ cd a
       
     5   $ echo a > a
       
     6   $ echo a > d
       
     7   $ echo a > e
       
     8   $ hg ci -qAm0
       
     9   $ echo b > a
       
    10   $ hg ci -m1 -u bar
       
    11   $ hg mv a b
       
    12   $ hg ci -m2
       
    13   $ hg cp b c
       
    14   $ hg ci -m3 -u baz
       
    15   $ echo b > d
       
    16   $ echo f > e
       
    17   $ hg ci -m4
       
    18   $ hg up -q 3
       
    19   $ echo b > e
       
    20   $ hg branch -q stable
       
    21   $ hg ci -m5
       
    22   $ hg merge -q default --tool internal:local
       
    23   $ hg branch -q default
       
    24   $ hg ci -m6
       
    25 
       
    26 Need to specify a rev:
       
    27 
       
    28   $ hg graft
       
    29   abort: no revisions specified
       
    30   [255]
       
    31 
       
    32 Can't graft ancestor:
       
    33 
       
    34   $ hg graft 1 2
       
    35   skipping ancestor revision 1
       
    36   skipping ancestor revision 2
       
    37   [255]
       
    38 
       
    39 Can't graft with dirty wd:
       
    40 
       
    41   $ hg up -q 0
       
    42   $ echo foo > a
       
    43   $ hg graft 1
       
    44   abort: outstanding uncommitted changes
       
    45   [255]
       
    46   $ hg revert a
       
    47 
       
    48 Graft a rename:
       
    49 
       
    50   $ hg graft 2 -u foo
       
    51   grafting revision 2
       
    52   merging a and b to b
       
    53   $ hg export tip --git
       
    54   # HG changeset patch
       
    55   # User foo
       
    56   # Date 0 0
       
    57   # Node ID d2e44c99fd3f31c176ea4efb9eca9f6306c81756
       
    58   # Parent  68795b066622ca79a25816a662041d8f78f3cd9e
       
    59   2
       
    60   
       
    61   diff --git a/a b/b
       
    62   rename from a
       
    63   rename to b
       
    64   --- a/a
       
    65   +++ b/b
       
    66   @@ -1,1 +1,1 @@
       
    67   -a
       
    68   +b
       
    69 
       
    70 Look for extra:source
       
    71 
       
    72   $ hg log --debug -r tip
       
    73   changeset:   7:d2e44c99fd3f31c176ea4efb9eca9f6306c81756
       
    74   tag:         tip
       
    75   parent:      0:68795b066622ca79a25816a662041d8f78f3cd9e
       
    76   parent:      -1:0000000000000000000000000000000000000000
       
    77   manifest:    7:5d59766436fd8fbcd38e7bebef0f6eaf3eebe637
       
    78   user:        foo
       
    79   date:        Thu Jan 01 00:00:00 1970 +0000
       
    80   files+:      b
       
    81   files-:      a
       
    82   extra:       branch=default
       
    83   extra:       source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4
       
    84   description:
       
    85   2
       
    86   
       
    87   
       
    88 
       
    89 Graft out of order, skipping a merge and a duplicate
       
    90 
       
    91   $ hg graft 1 5 4 3 'merge()' 2 --debug
       
    92   skipping ungraftable merge revision 6
       
    93   scanning for duplicate grafts
       
    94   skipping already grafted revision 2
       
    95   grafting revision 1
       
    96     searching for copies back to rev 1
       
    97     unmatched files in local:
       
    98      a.orig
       
    99      b
       
   100     all copies found (* = to merge, ! = divergent):
       
   101      b -> a *
       
   102     checking for directory renames
       
   103   resolving manifests
       
   104    overwrite False partial False
       
   105    ancestor 68795b066622 local d2e44c99fd3f+ remote 5d205f8b35b6
       
   106    b: local copied/moved to a -> m
       
   107   preserving b for resolve of b
       
   108   updating: b 1/1 files (100.00%)
       
   109     searching for copies back to rev 1
       
   110     unmatched files in local:
       
   111      a
       
   112     unmatched files in other:
       
   113      b
       
   114     all copies found (* = to merge, ! = divergent):
       
   115      b -> a *
       
   116     checking for directory renames
       
   117   b
       
   118    b: searching for copy revision for a
       
   119    b: copy a:b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3
       
   120   grafting revision 5
       
   121     searching for copies back to rev 1
       
   122     unmatched files in local:
       
   123      a.orig
       
   124   resolving manifests
       
   125    overwrite False partial False
       
   126    ancestor 4c60f11aa304 local 6f5ea6ac8b70+ remote 97f8bfe72746
       
   127    e: remote is newer -> g
       
   128   updating: e 1/1 files (100.00%)
       
   129   getting e
       
   130     searching for copies back to rev 1
       
   131     unmatched files in local:
       
   132      c
       
   133     all copies found (* = to merge, ! = divergent):
       
   134      c -> b *
       
   135     checking for directory renames
       
   136   e
       
   137   grafting revision 4
       
   138     searching for copies back to rev 1
       
   139     unmatched files in local:
       
   140      a.orig
       
   141   resolving manifests
       
   142    overwrite False partial False
       
   143    ancestor 4c60f11aa304 local 77eb504366ab+ remote 9c233e8e184d
       
   144    e: versions differ -> m
       
   145    d: remote is newer -> g
       
   146   preserving e for resolve of e
       
   147   updating: d 1/2 files (50.00%)
       
   148   getting d
       
   149   updating: e 2/2 files (100.00%)
       
   150   picked tool 'internal:merge' for e (binary False symlink False)
       
   151   merging e
       
   152   my e@77eb504366ab+ other e@9c233e8e184d ancestor e@68795b066622
       
   153   warning: conflicts during merge.
       
   154   merging e failed!
       
   155     searching for copies back to rev 1
       
   156     unmatched files in local:
       
   157      c
       
   158     all copies found (* = to merge, ! = divergent):
       
   159      c -> b *
       
   160     checking for directory renames
       
   161   abort: unresolved conflicts, can't continue
       
   162   (use hg resolve and hg graft --continue)
       
   163   [255]
       
   164 
       
   165 Continue without resolve should fail:
       
   166 
       
   167   $ hg graft -c
       
   168   grafting revision 4
       
   169   abort: unresolved merge conflicts (see hg help resolve)
       
   170   [255]
       
   171 
       
   172 Fix up:
       
   173 
       
   174   $ echo b > e
       
   175   $ hg resolve -m e
       
   176 
       
   177 Continue with a revision should fail:
       
   178 
       
   179   $ hg graft -c 6
       
   180   abort: can't specify --continue and revisions
       
   181   [255]
       
   182 
       
   183 Continue for real, clobber usernames
       
   184 
       
   185   $ hg graft -c -U
       
   186   grafting revision 4
       
   187   grafting revision 3
       
   188 
       
   189 Compare with original:
       
   190 
       
   191   $ hg diff -r 6
       
   192   $ hg status --rev 0:. -C
       
   193   M d
       
   194   M e
       
   195   A b
       
   196     a
       
   197   A c
       
   198     a
       
   199   R a
       
   200 
       
   201 View graph:
       
   202 
       
   203   $ hg --config extensions.graphlog= log -G --template '{author}@rev: {desc}\n'
       
   204   @  test@rev: 3
       
   205   |
       
   206   o  test@rev: 4
       
   207   |
       
   208   o  test@rev: 5
       
   209   |
       
   210   o  bar@rev: 1
       
   211   |
       
   212   o  foo@rev: 2
       
   213   |
       
   214   | o    test@rev: 6
       
   215   | |\
       
   216   | | o  test@rev: 5
       
   217   | | |
       
   218   | o |  test@rev: 4
       
   219   | |/
       
   220   | o  baz@rev: 3
       
   221   | |
       
   222   | o  test@rev: 2
       
   223   | |
       
   224   | o  bar@rev: 1
       
   225   |/
       
   226   o  test@rev: 0
       
   227