[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