Patchwork D2597: graft: add test for reading old format state files with new mechanism

login
register
mail settings
Submitter phabricator
Date March 3, 2018, 7:19 p.m.
Message ID <differential-rev-PHID-DREV-otnfhxyfb56l77ixgze3-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/28803/
State New
Headers show

Comments

phabricator - March 3, 2018, 7:19 p.m.
pulkit created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2597

AFFECTED FILES
  tests/test-graft.t

CHANGE DETAILS




To: pulkit, #hg-reviewers
Cc: mercurial-devel
phabricator - March 4, 2018, 4:13 p.m.
durin42 added a comment.


  Overall I think I like where this is headed.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D2597

To: pulkit, #hg-reviewers
Cc: durin42, mercurial-devel

Patch

diff --git a/tests/test-graft.t b/tests/test-graft.t
--- a/tests/test-graft.t
+++ b/tests/test-graft.t
@@ -1373,3 +1373,56 @@ 
   note: graft of 7:d3c3f2b38ecc created no changes to commit
 
   $ cd ..
+
+Testing the reading of old format graftstate file with newer mercurial
+
+  $ cat >> $TESTTMP/oldgraft.py <<EOF
+  > from __future__ import absolute_import
+  > from mercurial import merge, registrar, error
+  > cmdtable = {}
+  > command = registrar.command(cmdtable)
+  > @command('oldgraft', [('r', 'rev', [], 'revisions to graft')], ())
+  > def oldgraft(ui, repo, *args, **opts):
+  >     revs = opts[r'rev']
+  >     for pos, ctx in enumerate(repo.set("%ld", revs)):
+  >         stats = merge.graft(repo, ctx, ctx.p1(), ['local', 'graft'])
+  >         if stats and stats[3] > 0:
+  >             nodelines = [repo[rev].hex() + "\n" for rev in revs[pos:]]
+  >             with repo.wlock(), repo.vfs('graftstate', 'wb') as fp:
+  >                 fp.write(''.join(nodelines))
+  >             raise error.Abort("unresolved conflicts")
+  >         else:
+  >             raise error.Abort("this command is only to write an old state"
+  >                               "file for graft by creating conflicts. Doing graft without"
+  >                               "conflicts should not be done by this")
+  > EOF
+
+  $ hg init oldgraft
+  $ cd oldgraft
+  $ for ch in a b c; do echo foo > $ch; hg add $ch; hg ci -Aqm "added "$ch; done;
+  $ hg log -GT "{rev}:{node|short} {desc}\n"
+  @  2:8be98ac1a569 added c
+  |
+  o  1:80e6d2c47cfe added b
+  |
+  o  0:f7ad41964313 added a
+  
+  $ hg up 0
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo bar > b
+  $ hg add b
+  $ hg ci -m "bar to b"
+  created new head
+  $ hg oldgraft -r 1 -r 2 --config extensions.oldgraft=$TESTTMP/oldgraft.py
+  merging b
+  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
+  abort: unresolved conflicts
+  [255]
+
+  $ echo foo > b
+  $ hg resolve -m
+  (no more unresolved files)
+  continue: hg graft --continue
+  $ hg graft --continue
+  grafting 1:80e6d2c47cfe "added b"
+  grafting 2:8be98ac1a569 "added c"