[obsolete] issue a warning when parent of current directory is obsolete.
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Wed, 14 Sep 2011 19:20:38 +0200
changeset 79 9906560f585e
parent 78 ddcc4bb6c4d4
child 80 5d029a358252
[obsolete] issue a warning when parent of current directory is obsolete.
hgext/obsolete.py
tests/test-obsolete.t
--- a/hgext/obsolete.py	Wed Sep 14 17:55:17 2011 +0200
+++ b/hgext/obsolete.py	Wed Sep 14 19:20:38 2011 +0200
@@ -86,6 +86,7 @@
 from mercurial import pushkey
 from mercurial import discovery
 from mercurial import error
+from mercurial import commands
 from mercurial.node import hex, bin, short
 from mercurial.lock import release
 
@@ -228,6 +229,19 @@
 
 cmdtable = {'debugobsolete': (cmddebugobsolete, [], '<subject> <object>')}
 
+### Altering existing command
+#############################
+
+def wrapmayobsoletewc(origfn, ui, repo, *args, **opts):
+    res = origfn(ui, repo, *args, **opts)
+    if repo['.'].obsolete():
+        ui.warn(_('Working directory parent is obsolete\n'))
+    return res
+
+def uisetup(ui):
+    extensions.wrapcommand(commands.table, "update", wrapmayobsoletewc)
+    extensions.wrapcommand(commands.table, "pull", wrapmayobsoletewc)
+
 ### serialisation
 #############################
 
--- a/tests/test-obsolete.t	Wed Sep 14 17:55:17 2011 +0200
+++ b/tests/test-obsolete.t	Wed Sep 14 19:20:38 2011 +0200
@@ -67,6 +67,7 @@
   3
   - 0d3f46688ccc
   $ hg up 3 -q
+  Working directory parent is obsolete
   $ mkcommit d # 5 (on 3)
   $ qlog -r 'obsolete()'
   3
@@ -98,6 +99,7 @@
   0
   - 1f0dee641bb7
   $ hg up 3 -q
+  Working directory parent is obsolete
   $ mkcommit obsol_d # 6
   created new head
   $ hg debugobsolete 6 5
@@ -136,7 +138,8 @@
   $ qlog -R ../other-new -r 'obsolete()'
   2
   - 0d3f46688ccc
-  $ hg up -q .^
+  $ hg up -q .^ # 3
+  Working directory parent is obsolete
   $ mkcommit "obsol_d'" # 7
   created new head
   $ hg debugobsolete 7 6
@@ -218,7 +221,8 @@
 
 Test rollback support
 
-  $ hg up .^ -q
+  $ hg up .^ -q # 3
+  Working directory parent is obsolete
   $ mkcommit "obsol_d''"
   created new head
   $ hg debugobsolete 8 7