Mercurial > hg
view tests/test-remotefilelog-pull-noshallow.t @ 45565:c1d0f83d62c4
log: introduce struct that carries log traversal options
I tried to refactor logcmdutil.getrevs() without using an options struct,
but none of these attempts didn't work out. Since every stage of getrevs()
needs various log command options (e.g. both matcher and revset query need
file patterns), it isn't possible to cleanly split getrevs() into a command
layer and a core logic.
So, this patch introduces a named struct to carry command options in slightly
abstracted way, which will be later used by "hg grep" and "hg churn". More
fields will be added to the walkopt struct.
Type hints aren't verified. I couldn't figure out how to teach pytype to
load its own attr type stubs in place of our .thirdparty.attr. Conditional
import didn't work. s/^from \.thirdparty // is the only way I found pytype
could parse the @attr.ib decorator.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 12 Sep 2020 21:06:16 +0900 |
parents | 52fbf8a9907c |
children |
line wrap: on
line source
#require no-windows $ . "$TESTDIR/remotefilelog-library.sh" Set up an extension to make sure remotefilelog clientsetup() runs unconditionally even if we have never used a local shallow repo. This mimics behavior when using remotefilelog with chg. clientsetup() can be triggered due to a shallow repo, and then the code can later interact with non-shallow repositories. $ cat > setupremotefilelog.py << EOF > from mercurial import extensions > def extsetup(ui): > remotefilelog = extensions.find(b'remotefilelog') > remotefilelog.onetimeclientsetup(ui) > EOF Set up the master repository to pull from. $ hg init master $ cd master $ cat >> .hg/hgrc <<EOF > [remotefilelog] > server=True > EOF $ echo x > x $ hg commit -qAm x $ cd .. $ hg clone ssh://user@dummy/master child -q We should see the remotefilelog capability here, which advertises that the server supports our custom getfiles method. $ cd master $ echo 'hello' | hg -R . serve --stdio | grep capa | identifyrflcaps exp-remotefilelog-ssh-getfiles-1 x_rfl_getfile x_rfl_getflogheads $ echo 'capabilities' | hg -R . serve --stdio | identifyrflcaps ; echo exp-remotefilelog-ssh-getfiles-1 x_rfl_getfile x_rfl_getflogheads Pull to the child repository. Use our custom setupremotefilelog extension to ensure that remotefilelog.onetimeclientsetup() gets triggered. (Without using chg it normally would not be run in this case since the local repository is not shallow.) $ echo y > y $ hg commit -qAm y $ cd ../child $ hg pull --config extensions.setuprfl=$TESTTMP/setupremotefilelog.py pulling from ssh://user@dummy/master searching for changes adding changesets adding manifests adding file changes added 1 changesets with 1 changes to 1 files new changesets d34c38483be9 (run 'hg update' to get a working copy) $ hg up 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cat y y Test that bundle works in a non-remotefilelog repo w/ remotefilelog loaded $ echo y >> y $ hg commit -qAm "modify y" $ hg bundle --base ".^" --rev . mybundle.hg --config extensions.setuprfl=$TESTTMP/setupremotefilelog.py 1 changesets found $ cd ..