mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
e5b00fae7a
Summary: phases calculation could be expensive on the server and it should be a perf win to disable it if not needed It shouldn't be needed if narrow heads are enabled Reviewed By: quark-zju Differential Revision: D27908691 fbshipit-source-id: 7000fb23f9332d58c2c488ffbef14d73af4ac532
259 lines
7.5 KiB
Perl
259 lines
7.5 KiB
Perl
$ disable treemanifest
|
|
|
|
$ . "$TESTDIR/library.sh"
|
|
$ setconfig devel.print-metrics=1
|
|
$ setconfig remotefilelog.write-hgcache-to-indexedlog=False remotefilelog.write-local-to-indexedlog=False
|
|
|
|
$ hginit master
|
|
$ cd master
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [remotefilelog]
|
|
> server=True
|
|
> EOF
|
|
$ echo x > x
|
|
$ hg commit -qAm x
|
|
|
|
$ cd ..
|
|
|
|
$ hgcloneshallow ssh://user@dummy/master shallow -q
|
|
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) (?)
|
|
{ metrics : { ssh : { connections : 2,
|
|
getpack : { calls : 1, revs : 1},
|
|
read : { bytes : 1484},
|
|
write : { bytes : 778}}}}
|
|
$ hgcloneshallow ssh://user@dummy/master shallow2 -q
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 859},
|
|
write : { bytes : 631}}}}
|
|
|
|
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
|
|
* (glob)
|
|
capabilities: lookup * remotefilelog getflogheads getfile (glob)
|
|
$ echo 'capabilities' | hg -R . serve --stdio ; echo
|
|
* (glob)
|
|
* remotefilelog getflogheads getfile (glob)
|
|
|
|
# pull to shallow from full
|
|
|
|
$ echo y > y
|
|
$ hg commit -qAm y
|
|
|
|
$ cd ../shallow
|
|
$ hg pull
|
|
pulling from ssh://user@dummy/master
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 0 changes to 0 files
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 975},
|
|
write : { bytes : 608}}}}
|
|
|
|
$ hg up
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) (?)
|
|
{ metrics : { ssh : { connections : 1,
|
|
getpack : { calls : 1, revs : 1},
|
|
read : { bytes : 625},
|
|
write : { bytes : 147}}}}
|
|
|
|
$ cat y
|
|
y
|
|
|
|
$ cd ..
|
|
|
|
# pull from shallow to shallow (local)
|
|
|
|
$ cd shallow
|
|
$ echo z > z
|
|
$ hg commit -qAm z
|
|
$ echo x >> x
|
|
$ echo y >> y
|
|
$ hg commit -qAm xxyy
|
|
$ cd ../shallow2
|
|
$ clearcache
|
|
$ hg pull ../shallow
|
|
pulling from ../shallow
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
4 files fetched over 2 fetches - (4 misses, 0.00% hit ratio) over 0.00s (?)
|
|
added 3 changesets with 4 changes to 3 files
|
|
{ metrics : { ssh : { connections : 2,
|
|
getpack : { calls : 3, revs : 3},
|
|
read : { bytes : 1403},
|
|
write : { bytes : 337}}}}
|
|
|
|
# pull from shallow to shallow (ssh)
|
|
|
|
$ hg debugstrip -r d34c38483be9d08f205eaae60c380a29b48e0189
|
|
$ hg pull ssh://user@dummy/$TESTTMP/shallow --config remotefilelog.cachepath=${CACHEDIR}2
|
|
pulling from ssh://user@dummy/$TESTTMP/shallow
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) (?)
|
|
added 3 changesets with 4 changes to 3 files
|
|
remote: { metrics : { ssh : { connections : 1,
|
|
remote: getpack : { calls : 1, revs : 1},
|
|
remote: read : { bytes : 625},
|
|
remote: write : { bytes : 147}}}}
|
|
{ metrics : { ssh : { connections : 2,
|
|
getpack : { calls : 1, revs : 1},
|
|
read : { bytes : 2848},
|
|
write : { bytes : 755}}}}
|
|
|
|
$ hg up
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cat z
|
|
z
|
|
|
|
|
|
$ hg -R ../shallow debugstrip -qr 'desc(xxyy)'
|
|
$ hg debugstrip -qr 'desc(xxyy)'
|
|
$ cd ..
|
|
|
|
# push from shallow to shallow
|
|
|
|
$ cd shallow
|
|
$ echo a > a
|
|
$ hg commit -qAm a
|
|
$ hg push ssh://user@dummy/$TESTTMP/shallow2
|
|
pushing to ssh://user@dummy/$TESTTMP/shallow2
|
|
searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 1 changesets with 1 changes to 1 files
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 612},
|
|
write : { bytes : 991}}}}
|
|
|
|
$ cd ../shallow2
|
|
$ hg up
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cat a
|
|
a
|
|
|
|
# verify files are read-only
|
|
|
|
$ ls_l .hg/store/packs
|
|
-r--r--r-- 1295 5feb6151e62f92e71ce2df45c52b1ee4de891c40.histidx
|
|
-r--r--r-- 350 5feb6151e62f92e71ce2df45c52b1ee4de891c40.histpack
|
|
-r--r--r-- 1117 81951d0ada20768783a3ca0ba3b2042b29cf4fd3.histidx
|
|
-r--r--r-- 90 81951d0ada20768783a3ca0ba3b2042b29cf4fd3.histpack
|
|
-r--r--r-- 1194 9b9360a408e070d43cd6a598139f56a6a358cd7c.dataidx
|
|
-r--r--r-- 253 9b9360a408e070d43cd6a598139f56a6a358cd7c.datapack
|
|
-r--r--r-- 1074 fea0528e5e8268df06cd40c39230727aff9901eb.dataidx
|
|
-r--r--r-- 63 fea0528e5e8268df06cd40c39230727aff9901eb.datapack
|
|
$ cd ..
|
|
|
|
# push from shallow to full
|
|
|
|
$ cd shallow
|
|
$ hg push
|
|
pushing to ssh://user@dummy/master
|
|
searching for changes
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 2 changesets with 2 changes to 2 files
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 589},
|
|
write : { bytes : 1454}}}}
|
|
|
|
$ cd ../master
|
|
$ hg log -l 1 -r 'desc(a)' --style compact
|
|
1489bbbc46f0 1970-01-01 00:00 +0000 test
|
|
a
|
|
|
|
$ hg up 'desc(a)'
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cat a
|
|
a
|
|
|
|
# push public commits
|
|
|
|
$ cd ../shallow
|
|
$ echo p > p
|
|
$ hg commit -qAm p
|
|
$ hg debugmakepublic .
|
|
$ echo d > d
|
|
$ hg commit -qAm d
|
|
|
|
$ cd ../shallow2
|
|
$ hg pull ../shallow
|
|
pulling from ../shallow
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 1 changes to 1 files
|
|
|
|
$ cd ..
|
|
|
|
# Test pushing from shallow to shallow with multiple manifests introducing the
|
|
# same filenode. Test this by constructing two separate histories of file 'c'
|
|
# that share a file node and verifying that the history works after pushing.
|
|
|
|
$ hginit multimf-master
|
|
$ hgcloneshallow ssh://user@dummy/multimf-master multimf-shallow -q
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 502},
|
|
write : { bytes : 511}}}}
|
|
$ hgcloneshallow ssh://user@dummy/multimf-master multimf-shallow2 -q
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 543},
|
|
write : { bytes : 511}}}}
|
|
$ cd multimf-shallow
|
|
$ echo a > a
|
|
$ hg commit -qAm a
|
|
$ echo b > b
|
|
$ hg commit -qAm b
|
|
$ echo c > c
|
|
$ hg commit -qAm c1
|
|
$ hg up -q 'desc(a)'
|
|
$ echo c > c
|
|
$ hg commit -qAm c2
|
|
$ echo cc > c
|
|
$ hg commit -qAm c22
|
|
$ hg log -G -T '{desc}\n'
|
|
@ c22
|
|
│
|
|
o c2
|
|
│
|
|
│ o c1
|
|
│ │
|
|
│ o b
|
|
├─╯
|
|
o a
|
|
|
|
|
|
$ cd ../multimf-shallow2
|
|
- initial commit to prevent hg pull from being a clone
|
|
$ echo z > z && hg commit -qAm z
|
|
$ hg pull -f ssh://user@dummy/$TESTTMP/multimf-shallow
|
|
pulling from ssh://user@dummy/$TESTTMP/multimf-shallow
|
|
searching for changes
|
|
warning: repository is unrelated
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 5 changesets with 4 changes to 3 files
|
|
{ metrics : { ssh : { connections : 1,
|
|
read : { bytes : 2883},
|
|
write : { bytes : 608}}}}
|
|
|
|
$ hg up -q 'desc(c22)'
|
|
$ hg log -f -T '{node}\n' c
|
|
d8f06a4c6d38c9308d3dcbee10c27ae5a01ab93f
|
|
853b3dc5bcf912b088c60ccd3ec60f35e96b92bb
|