Mercurial > evolve
diff hgext/inhibit.py @ 1233:63ee05dd557a
inhibit: ensure no visible changesets are obsolete after an update
When updating to a commit we want to inhibit any obsolete commit affecting
the changeset we are updating to. In other words we don't want any
visible commit to be obsolete.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Mon, 30 Mar 2015 11:45:17 -0700 |
parents | 37c00aeb4762 |
children | c15d4677f2ba |
line wrap: on
line diff
--- a/hgext/inhibit.py Fri Mar 27 10:58:04 2015 -0700 +++ b/hgext/inhibit.py Mon Mar 30 11:45:17 2015 -0700 @@ -28,6 +28,7 @@ from mercurial import repoview from mercurial import revset from mercurial import error +from mercurial import commands cmdtable = {} command = cmdutil.command(cmdtable) @@ -48,6 +49,19 @@ repo.__class__ = obsinhibitedrepo repo._explicitaccess = set() + +def _update(orig, ui, repo, *args, **kwargs): + """ + When moving to a commit we want to inhibit any obsolete commit affecting + the changeset we are updating to. In other words we don't want any visible + commit to be obsolete. + """ + res = orig(ui, repo, *args, **kwargs) + newhead = repo['.'].node() + _inhibitmarkers(repo, [newhead]) + return res + + # obsolescence inhibitor ######################## @@ -137,6 +151,9 @@ extensions.wrapfunction(obsolete, 'createmarkers', _createmarkers) extensions.wrapfunction(repoview, '_getdynamicblockers', _accessvisible) extensions.wrapfunction(revset, 'posttreebuilthook', _posttreebuilthook) + # wrap update to make sure that no obsolete commit is visible after an + # update + extensions.wrapcommand(commands.table, 'update', _update) def gethashsymbols(tree): # Returns the list of symbols of the tree that look like hashes