Mercurial > hg
view tests/test-pull-permission.t @ 29765:19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Before this patch, we don't have a safe way to undo a wrapfunction because
other extensions may wrap the same function and calling setattr will undo
them accidentally.
This patch adds an "unwrapfunction" to address the issue. It removes the
wrapper from the wrapper chain, and re-wraps everything, which is not the
most efficient but short and easy to understand. We can revisit the code
if we have perf issues with long chains.
The "undo" feature is useful in cases like wrapping a function just in a
scope. Like, having a "select" command to interactively (using arrow keys)
select content from some output (ex. smartlog). It could wrap "ui.label" to
extract interesting texts just in the "select" command.
author | Jun Wu <quark@fb.com> |
---|---|
date | Wed, 10 Aug 2016 16:27:33 +0100 |
parents | 8fb6844a4ff1 |
children | eb586ed5d8ce |
line wrap: on
line source
#require unix-permissions no-root $ hg init a $ cd a $ echo foo > b $ hg add b $ hg ci -m "b" $ chmod -w .hg/store $ cd .. $ hg clone a b requesting all changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files updating to branch default 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ chmod +w a/.hg/store # let test clean up $ cd b $ hg verify checking changesets checking manifests crosschecking files in changesets and manifests checking files 1 files, 1 changesets, 1 total revisions $ cd ..