view tests/test-patch-offset.t @ 34883:c858afe9c59b

rebase: add support to output nodechanges This patch adds support to rebase to show the changes in node once the rebase is complete. This will be extremely helpful for automation purposes and editors such as Nuclide. The output is a dictionary of predecessor hash as key and a list of successors' hashes. The successors one is a list as there can be many successors for a single predecessor in case of split and it will good to have a generic output format. This patch adds tests for the same. A new file is created for the patch as existing files related to rebase has their own purpose and there will be more formatter support coming for rebase in next cycle. Thanks to Jun for suggesting to use fm.data(). Differential Revision: https://phab.mercurial-scm.org/D1173
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 18 Oct 2017 04:31:46 +0530
parents 75be14993fda
children bfc9ab6c1bec
line wrap: on
line source


  $ cat > writepatterns.py <<EOF
  > import sys
  > 
  > path = sys.argv[1]
  > patterns = sys.argv[2:]
  > 
  > fp = file(path, 'wb')
  > for pattern in patterns:
  >     count = int(pattern[0:-1])
  >     char = pattern[-1] + '\n'
  >     fp.write(char*count)
  > fp.close()
  > EOF

prepare repo

  $ hg init a
  $ cd a

These initial lines of Xs were not in the original file used to generate
the patch.  So all the patch hunks need to be applied to a constant offset
within this file.  If the offset isn't tracked then the hunks can be
applied to the wrong lines of this file.

  $ $PYTHON ../writepatterns.py a 34X 10A 1B 10A 1C 10A 1B 10A 1D 10A 1B 10A 1E 10A 1B 10A
  $ hg commit -Am adda
  adding a

This is a cleaner patch generated via diff
In this case it reproduces the problem when
the output of hg export does not
import patch

  $ hg import -v -m 'b' -d '2 0' - <<EOF
  > --- a/a	2009-12-08 19:26:17.000000000 -0800
  > +++ b/a	2009-12-08 19:26:17.000000000 -0800
  > @@ -9,7 +9,7 @@
  >  A
  >  A
  >  B
  > -A
  > +a
  >  A
  >  A
  >  A
  > @@ -53,7 +53,7 @@
  >  A
  >  A
  >  B
  > -A
  > +a
  >  A
  >  A
  >  A
  > @@ -75,7 +75,7 @@
  >  A
  >  A
  >  B
  > -A
  > +a
  >  A
  >  A
  >  A
  > EOF
  applying patch from stdin
  patching file a
  Hunk #1 succeeded at 43 (offset 34 lines).
  Hunk #2 succeeded at 87 (offset 34 lines).
  Hunk #3 succeeded at 109 (offset 34 lines).
  committing files:
  a
  committing manifest
  committing changelog
  created 189885cecb41

compare imported changes against reference file

  $ $PYTHON ../writepatterns.py aref 34X 10A 1B 1a 9A 1C 10A 1B 10A 1D 10A 1B 1a 9A 1E 10A 1B 1a 9A
  $ diff aref a

  $ cd ..