D2409: graft: add no-commit mode (issue5631)
khanchi97 (Sushil khanchi)
phabricator at mercurial-scm.org
Mon Feb 26 15:28:15 EST 2018
khanchi97 updated this revision to Diff 6132.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D2409?vs=6028&id=6132
REVISION DETAIL
https://phab.mercurial-scm.org/D2409
AFFECTED FILES
mercurial/commands.py
tests/test-graft.t
CHANGE DETAILS
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,69 @@
note: graft of 7:d3c3f2b38ecc created no changes to commit
$ cd ..
+
+Graft a change from a branch without making any commit using --no-commit option
+
+ $ hg init dirtochecknocommit
+ $ cd dirtochecknocommit
+ $ echo a > a
+ $ hg ci -qAm0
+ $ echo b > b
+ $ hg ci -qAm1
+ $ hg up -q 0
+ $ echo c > c
+ $ hg ci -qAm2
+ $ hg graft 1 --no-commit
+ grafting 1:925d80f479bb "1"
+
+ $ hg tip -T "rev: {rev}\n"
+ rev: 2
+
+ $ hg diff
+ diff -r db815d6d32e6 b
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/b Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +b
+
+ $ hg ci -qm3
+
+Make a conflict between two heads and check --no-commit is resepected after --continue
+
+ $ echo A>a
+ $ hg ci -qm4
+ $ hg up -q 1
+ $ echo B>a
+ $ hg ci -qm5
+ $ hg graft 4 --no-commit
+ grafting 4:a08bb3910e7c "4"
+ merging a
+ warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
+ abort: unresolved conflicts, can't continue
+ (use 'hg resolve' and 'hg graft --continue')
+ [255]
+
+Edit:
+
+ $ echo A>a
+ $ hg resolve --mark
+ (no more unresolved files)
+ continue: hg graft --continue
+
+Continue:
+
+ $ hg graft --continue
+ grafting 4:a08bb3910e7c "4"
+
+ $ hg tip -T "rev: {rev}\n"
+ rev: 5
+
+ $ hg diff
+ diff -r b1d5b5056844 a
+ --- a/a Thu Jan 01 00:00:00 1970 +0000
+ +++ b/a Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -B
+ +A
+
+ $ cd ..
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2074,6 +2074,8 @@
('c', 'continue', False, _('resume interrupted graft')),
('e', 'edit', False, _('invoke editor on commit messages')),
('', 'log', None, _('append graft info to log message')),
+ ('', 'no-commit', None,
+ _("don't commit, just apply the changes in working directory")),
('f', 'force', False, _('force graft')),
('D', 'currentdate', False,
_('record the current date as commit date')),
@@ -2153,6 +2155,9 @@
revs = list(revs)
revs.extend(opts.get('rev'))
+ if opts.get('no_commit'):
+ # write out flag for --continue
+ repo.vfs.write('nocommitflag','do not commit\n')
if not opts.get('user') and opts.get('currentuser'):
opts['user'] = ui.username()
if not opts.get('date') and opts.get('currentdate'):
@@ -2314,16 +2319,18 @@
cont = False
# commit
- node = repo.commit(text=message, user=user,
- date=date, extra=extra, editor=editor)
- if node is None:
- ui.warn(
- _('note: graft of %d:%s created no changes to commit\n') %
- (ctx.rev(), ctx))
+ if not repo.vfs.exists('nocommitflag'):
+ node = repo.commit(text=message, user=user,
+ date=date, extra=extra, editor=editor)
+ if node is None:
+ ui.warn(
+ _('note: graft of %d:%s created no changes to commit\n') %
+ (ctx.rev(), ctx))
# remove state when we complete successfully
if not opts.get('dry_run'):
repo.vfs.unlinkpath('graftstate', ignoremissing=True)
+ repo.vfs.unlinkpath('nocommitflag', ignoremissing=True)
return 0
To: khanchi97, #hg-reviewers
Cc: pulkit, mercurial-devel
More information about the Mercurial-devel
mailing list