sapling/eden/scm/tests/test-log-wireproto-requests.t
Jun Wu 8bd55436a4 pull: automatically pull selective bookmarks unless it's a no-argument pull
Summary:
This enforces certain selective pull logic in core. Namely, rewrite `pull -r X`
to `pull -r X -B master`.

Unlike selectivepull in remotenames, `pull` (pulls everything) won't be
rewritten to `pull -B master` (which pulls less commits and names).

Therefore this change always adds more commits to pull, and therefore should not
break existing users. Eventually we want the "not pulling everything" behavior,
but right now this just fixes `pull -r X` to also update important remote names.

Reviewed By: markbt

Differential Revision: D20531121

fbshipit-source-id: af457b5ddb1265b61956eb2ee6afb7b7208293e0
2020-03-26 10:54:09 -07:00

76 lines
5.5 KiB
Perl

#require py2
$ . "$TESTDIR/helpers-wireprotologging.sh"
$ disable treemanifest
$ CACHEDIR="$TESTTMP/hgcache"
$ configure dummyssh
$ enable remotefilelog
$ setconfig remotefilelog.cachepath="$CACHEDIR"
$ hg init repo
$ capturewireprotologs
$ cd repo
$ setconfig remotefilelog.server=true
$ cd ..
$ hg clone ssh://user@dummy/repo --shallow repo-clone -q
$ cd repo
$ setconfig wireproto.logrequests=batch,branchmap,getbundle,hello,listkeys,lookup,between,unbundle
$ setconfig wireproto.loggetfiles=true
$ echo a > a && hg add a && hg ci -m a
$ cd ../repo-clone
$ hg pull 2>&1 | grep wireproto_requests
remote: wireproto_requests: (args=[], command=hello, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['0000000000000000000000000000000000000000-0000000000000000000000000000000000000000'], command=between, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=[], command=batch, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=[('bookmarks', '1'), ('bundlecaps', 'HG20,$USUAL_BUNDLE2_CAPS$%0Aremotefilelog%3DTrue,remotefilelog'), ('cg', '1'), ('common', '0000000000000000000000000000000000000000'), ('heads', 'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b'), ('listkeys', 'bookmarks'), ('phases', '1')], command=getbundle, duration=*, reponame=unknown, responselen=*) (glob)
$ cd ../repo
$ echo b > b && hg add b && hg ci -m b
$ echo c > c && hg add c && hg ci -m c
$ cd ../repo-clone
$ hg pull 2>&1 | grep wireproto_requests
remote: wireproto_requests: (args=[], command=hello, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['0000000000000000000000000000000000000000-0000000000000000000000000000000000000000'], command=between, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=[], command=batch, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=[('bookmarks', '1'), ('bundlecaps', 'HG20,$USUAL_BUNDLE2_CAPS$%0Aremotefilelog%3DTrue,remotefilelog'), ('cg', '1'), ('common', 'cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b'), ('heads', '177f92b773850b59254aa5e923436f921b55483b'), ('listkeys', 'bookmarks'), ('phases', '1')], command=getbundle, duration=*, reponame=unknown, responselen=*) (glob)
$ hg up tip -q
Looks like `ui.warn()` after getfiles might not make it's way to client hg. Let's read from file
$ grep 'getpack' $TESTTMP/loggedrequests
wireproto_requests: (args=[*], command=getpack*, duration=*, reponame=unknown, responselen=*) (glob)
$ echo cc > c && hg ci -m c
$ hg push --force 2>&1 | grep wireproto_requests
remote: wireproto_requests: (args=[], command=hello, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['0000000000000000000000000000000000000000-0000000000000000000000000000000000000000'], command=between, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=[], command=batch, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['phases'], command=listkeys, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['bookmarks'], command=listkeys, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['666f726365'], command=unbundle, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['phases'], command=listkeys, duration=*, reponame=unknown, responselen=*) (glob)
$ hg pull -r ololo 2>&1 | grep wireproto_requests
remote: wireproto_requests: (args=[], command=hello, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['0000000000000000000000000000000000000000-0000000000000000000000000000000000000000'], command=between, duration=*, reponame=unknown, responselen=*) (glob)
remote: wireproto_requests: (args=['bookmarks'], command=listkeys, duration=*, reponame=unknown, responselen=0) (glob)
remote: wireproto_requests: (args=['ololo'], command=lookup, duration=*, reponame=unknown, responselen=*) (glob)
Enable clienttelemetry and change reponame
$ cat >> $HGRCPATH <<EOF
> [extensions]
> clienttelemetry=
> [common]
> reponame=repo
> EOF
$ hg pull 2>&1 | grep wireproto_requests
remote: wireproto_requests: (args=[], command=hello, duration=*, reponame=repo, responselen=*) (glob)
remote: wireproto_requests: (args=['0000000000000000000000000000000000000000-0000000000000000000000000000000000000000'], command=between, duration=*, reponame=repo, responselen=*) (glob)
remote: wireproto_requests: (args=[], client_fullcommand=pull, client_hostname=*, command=batch, duration=*, reponame=repo, responselen=*) (glob)
remote: wireproto_requests: (args=[('bookmarks', '1'), ('bundlecaps', 'HG20,$USUAL_BUNDLE2_CAPS$%0Aremotefilelog%3DTrue,remotefilelog'), ('cg', '0'), ('common', 'cc27a19b3db0a292460298a71c413840f27f6a37'), ('heads', 'cc27a19b3db0a292460298a71c413840f27f6a37'), ('listkeys', 'bookmarks'), ('phases', '1')], client_fullcommand=pull, client_hostname=*, command=getbundle, duration=*, reponame=repo, responselen=*) (glob)
$ cd ../repo
$ echo xxx > xxx && hg add xxx && hg ci -m xxx
$ cd -
$TESTTMP/repo-clone
$ hg pull -q
$ hg up tip -q
$ grep 'getpack' $TESTTMP/loggedrequests
wireproto_requests: (args=[*], command=getpack*, duration=*, reponame=unknown, responselen=*) (glob)
wireproto_requests: (args=[*], client_fullcommand=up tip -q, client_hostname=*, command=getpack*, duration=*, reponame=repo, responselen=*) (glob)