D6237: absorb: aborting if another operation is in progress
rdamazio (Rodrigo Damazio Bovendorp)
phabricator at mercurial-scm.org
Tue Apr 16 08:44:42 EDT 2019
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG537a8aeb9977: absorb: aborting if another operation is in progress (authored by rdamazio, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6237?vs=14755&id=14760
REVISION DETAIL
https://phab.mercurial-scm.org/D6237
AFFECTED FILES
hgext/absorb.py
tests/test-absorb-unfinished.t
CHANGE DETAILS
diff --git a/tests/test-absorb-unfinished.t b/tests/test-absorb-unfinished.t
new file mode 100644
--- /dev/null
+++ b/tests/test-absorb-unfinished.t
@@ -0,0 +1,30 @@
+ $ cat >> $HGRCPATH << EOF
+ > [extensions]
+ > absorb=
+ > EOF
+
+Abort absorb if there is an unfinished operation.
+
+ $ hg init abortunresolved
+ $ cd abortunresolved
+
+ $ echo "foo1" > foo.whole
+ $ hg commit -Aqm "foo 1"
+
+ $ hg update null
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo "foo2" > foo.whole
+ $ hg commit -Aqm "foo 2"
+
+ $ hg --config extensions.rebase= rebase -r 1 -d 0
+ rebasing 1:c3b6dc0e177a "foo 2" (tip)
+ merging foo.whole
+ warning: conflicts while merging foo.whole! (edit, then use 'hg resolve --mark')
+ unresolved conflicts (see hg resolve, then hg rebase --continue)
+ [1]
+
+ $ hg --config extensions.rebase= absorb
+ abort: rebase in progress
+ (use 'hg rebase --continue' or 'hg rebase --abort')
+ [255]
+
diff --git a/hgext/absorb.py b/hgext/absorb.py
--- a/hgext/absorb.py
+++ b/hgext/absorb.py
@@ -682,13 +682,12 @@
def commit(self):
"""commit changes. update self.finalnode, self.replacemap"""
- with self.repo.wlock(), self.repo.lock():
- with self.repo.transaction('absorb') as tr:
- self._commitstack()
- self._movebookmarks(tr)
- if self.repo['.'].node() in self.replacemap:
- self._moveworkingdirectoryparent()
- self._cleanupoldcommits()
+ with self.repo.transaction('absorb') as tr:
+ self._commitstack()
+ self._movebookmarks(tr)
+ if self.repo['.'].node() in self.replacemap:
+ self._moveworkingdirectoryparent()
+ self._cleanupoldcommits()
return self.finalnode
def printchunkstats(self):
@@ -1006,6 +1005,11 @@
Returns 0 on success, 1 if all chunks were ignored and nothing amended.
"""
opts = pycompat.byteskwargs(opts)
- state = absorb(ui, repo, pats=pats, opts=opts)
- if sum(s[0] for s in state.chunkstats.values()) == 0:
- return 1
+
+ with repo.wlock(), repo.lock():
+ if not opts['dry_run']:
+ cmdutil.checkunfinished(repo)
+
+ state = absorb(ui, repo, pats=pats, opts=opts)
+ if sum(s[0] for s in state.chunkstats.values()) == 0:
+ return 1
To: rdamazio, #hg-reviewers, pulkit
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list