mq: disable qrecord during histedit (issue5981)
authorNavaneeth Suresh <navaneeths1998@gmail.com>
Fri, 22 Feb 2019 00:54:06 +0530
changeset 41790 4d21ebc4cb47
parent 41789 2ba96fca8528
child 41791 a62ad1be1671
mq: disable qrecord during histedit (issue5981) qrecord during histedit may lead to deadlock-like situations. qpop will throw an error on called during histedit even after qrecord-ing those changes. This patch makes qrecord to abort on histedit. Differential Revision: https://phab.mercurial-scm.org/D5997
hgext/record.py
tests/test-qrecord.t
--- a/hgext/record.py	Wed Feb 20 21:57:39 2019 -0800
+++ b/hgext/record.py	Fri Feb 22 00:54:06 2019 +0530
@@ -119,6 +119,7 @@
 
     overrides = {('experimental', 'crecord'): False}
     with ui.configoverride(overrides, 'record'):
+        cmdutil.checkunfinished(repo)
         cmdutil.dorecord(ui, repo, committomq, cmdsuggest, False,
                          cmdutil.recordfilter, *pats, **opts)
 
--- a/tests/test-qrecord.t	Wed Feb 20 21:57:39 2019 -0800
+++ b/tests/test-qrecord.t	Fri Feb 22 00:54:06 2019 +0530
@@ -422,3 +422,43 @@
   $ hg diff --nodates
 
   $ cd ..
+
+qrecord should throw an error when histedit in process
+
+  $ hg init issue5981
+  $ cd issue5981
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > histedit=
+  > mq=
+  > EOF
+  $ echo > a
+  $ hg ci -Am 'foo bar'
+  adding a
+  $ hg log
+  changeset:   0:ea55e2ae468f
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     foo bar
+  
+  $ hg histedit tip --commands - 2>&1 <<EOF
+  > edit ea55e2ae468f foo bar
+  > EOF
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  adding a
+  Editing (ea55e2ae468f), you may commit or record as needed now.
+  (hg histedit --continue to resume)
+  [1]
+  $ echo 'foo bar' > a
+  $ hg qrecord -d '0 0' -m aaa a.patch <<EOF
+  > y
+  > y
+  > n
+  > y
+  > y
+  > n
+  > EOF
+  abort: histedit in progress
+  (use 'hg histedit --continue' or 'hg histedit --abort')
+  [255]