[obsolete] issue a warning when parent of current directory is obsolete.
diff --git a/hgext/obsolete.py b/hgext/obsolete.py
--- a/hgext/obsolete.py
+++ b/hgext/obsolete.py
@@ -86,6 +86,7 @@ from mercurial import extensions
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 @@ def cmddebugobsolete(ui, repo, subject,
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
#############################
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -67,6 +67,7 @@ test obsolete changeset with no-obsolete
3
- 0d3f46688ccc
$ hg up 3 -q
+ Working directory parent is obsolete
$ mkcommit d # 5 (on 3)
$ qlog -r 'obsolete()'
3
@@ -98,6 +99,7 @@ Test communication of obsolete relation
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 @@ Test communication of obsolete relation
$ 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 @@ clone support
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