view tests/test-issue1802.t @ 38280:2ec44160165d

graft: add a new `--stop` flag to stop interrupted graft This patch adds a new flag `--stop` to `hg graft` command which stops the interrupted graft. The `--stop` flag takes back you to the last successful step i.e. it will keep your grafted commits, it will just clear the mergestate and interrupted graft state. The `--stop` is different from `--abort` flag as the latter also undoes all the work done till now which is sometimes not what the user wants. Suppose you grafted a lot of changesets, you encountered conflicts, you resolved them, did `hg graft --continue`, again encountered conflicts, continue, again encountered conflicts. Now you are tired of solving merge conflicts and want to resume this sometimes later. If you use the `--abort` functionality, it will strip your already grafted changesets, making you loose the work you have done resolving merge conflicts. A general goal related to this flag is to add this flag to `rebase` and `histedit` too. The evolve command already has this --stop flag. Tests are added for the new flag. .. feature:: `hg graft` now has a `--stop` flag to stop interrupted graft. Differential Revision: https://phab.mercurial-scm.org/D3668
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 28 May 2018 21:13:32 +0530
parents eb586ed5d8ce
children 91a0bc50b288
line wrap: on
line source

#require execbit

Create extension that can disable exec checks:

  $ cat > noexec.py <<EOF
  > from mercurial import extensions, util
  > def setflags(orig, f, l, x):
  >     pass
  > def checkexec(orig, path):
  >     return False
  > def extsetup(ui):
  >     extensions.wrapfunction(util, 'setflags', setflags)
  >     extensions.wrapfunction(util, 'checkexec', checkexec)
  > EOF

  $ hg init unix-repo
  $ cd unix-repo
  $ touch a
  $ hg add a
  $ hg commit -m 'unix: add a'
  $ hg clone . ../win-repo
  updating to branch default
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ chmod +x a
  $ hg commit -m 'unix: chmod a'
  $ hg manifest -v
  755 * a

  $ cd ../win-repo

  $ touch b
  $ hg add b
  $ hg commit -m 'win: add b'

  $ hg manifest -v
  644   a
  644   b

  $ hg pull
  pulling from $TESTTMP/unix-repo
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files (+1 heads)
  new changesets 2d8bcf2dda39
  (run 'hg heads' to see heads, 'hg merge' to merge)

  $ hg manifest -v -r tip
  755 * a

Simulate a Windows merge:

  $ hg --config extensions.n=$TESTTMP/noexec.py merge --debug
    searching for copies back to rev 1
    unmatched files in local:
     b
  resolving manifests
   branchmerge: True, force: False, partial: False
   ancestor: a03b0deabf2b, local: d6fa54f68ae1+, remote: 2d8bcf2dda39
   a: update permissions -> e
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)

Simulate a Windows commit:

  $ hg --config extensions.n=$TESTTMP/noexec.py commit -m 'win: merge'

  $ hg manifest -v
  755 * a
  644   b

  $ cd ..