mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
98d9269874
Summary: Create a fork of the Mercurial code that we can use to build server rpms. The hg servers will continue to exist for a few more months while we move the darkstorm and ediscovery use cases off them. In the mean time, we want to start making breaking changes to the client, so let's create a stable copy of the hg code to produce rpms for the hg servers. The fork is based off c7770c78d, the latest hg release. This copies the files as is, then adds some minor tweaks to get it to build: - Disables some lint checks that appear to be bypassed by path - sed replace eden/scm with eden/hg-server - Removed a dependency on scm/telemetry from the edenfs-client tests since scm/telemetry pulls in the original eden/scm/lib/configparser which conflicts with the hg-server conflict parser. allow-large-files Reviewed By: quark-zju Differential Revision: D27632557 fbshipit-source-id: b2f442f4ec000ea08e4d62de068750832198e1f4
205 lines
6.0 KiB
Raku
205 lines
6.0 KiB
Raku
#chg-compatible
|
|
|
|
$ disable treemanifest
|
|
$ setconfig remotefilelog.write-hgcache-to-indexedlog=False remotefilelog.write-local-to-indexedlog=False
|
|
|
|
$ shorttraceback
|
|
|
|
$ . "$TESTDIR/library.sh"
|
|
|
|
$ hginit master
|
|
$ cd master
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [remotefilelog]
|
|
> server=True
|
|
> serverexpiration=-1
|
|
> EOF
|
|
$ echo line > file
|
|
$ echo x > x
|
|
$ hg commit -qAm x
|
|
$ echo line >> file
|
|
$ echo x >> x
|
|
$ hg commit -qAm x2
|
|
$ findfilessorted .hg/store/data
|
|
.hg/store/data/file.i
|
|
.hg/store/data/x.i
|
|
$ cd ..
|
|
|
|
$ hgcloneshallow ssh://user@dummy/master shallow -q
|
|
2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) (?)
|
|
|
|
# Set the prefetchdays config to zero so that all commits are prefetched
|
|
# no matter what their creation date is.
|
|
$ cd shallow
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [remotefilelog]
|
|
> localdatarepack=True
|
|
> prefetchdays=0
|
|
> EOF
|
|
$ cd ..
|
|
|
|
# Pull from master
|
|
$ cd shallow
|
|
$ hg pull -q
|
|
$ hg up -q tip
|
|
|
|
# new pack file is created
|
|
$ echo "new commit" > new_file
|
|
$ echo "something else" > base_file
|
|
$ hg commit -qAm "one more node"
|
|
$ findfilessorted .hg/store/packs
|
|
.hg/store/packs/39a8e8bed95e2e3bb5391ee6bda40ca3ca572916.histidx
|
|
.hg/store/packs/39a8e8bed95e2e3bb5391ee6bda40ca3ca572916.histpack
|
|
.hg/store/packs/6b9f244ddd95ecb2e7d32472c05bad1883b34cea.dataidx
|
|
.hg/store/packs/6b9f244ddd95ecb2e7d32472c05bad1883b34cea.datapack
|
|
|
|
$ echo "new commit - 2" > new_file
|
|
$ hg commit -qAm "one more node - 2"
|
|
$ findfilessorted .hg/store/packs
|
|
.hg/store/packs/39a8e8bed95e2e3bb5391ee6bda40ca3ca572916.histidx
|
|
.hg/store/packs/39a8e8bed95e2e3bb5391ee6bda40ca3ca572916.histpack
|
|
.hg/store/packs/3cd8d266014a45ac9f32ce6fe60bbba3ef841577.histidx
|
|
.hg/store/packs/3cd8d266014a45ac9f32ce6fe60bbba3ef841577.histpack
|
|
.hg/store/packs/6b9f244ddd95ecb2e7d32472c05bad1883b34cea.dataidx
|
|
.hg/store/packs/6b9f244ddd95ecb2e7d32472c05bad1883b34cea.datapack
|
|
.hg/store/packs/7a1982eca9ec13b2258dcf844adb3a536d733d75.dataidx
|
|
.hg/store/packs/7a1982eca9ec13b2258dcf844adb3a536d733d75.datapack
|
|
|
|
# check the commit data
|
|
$ hg cat -r . new_file
|
|
new commit - 2
|
|
$ hg cat -r .~1 new_file
|
|
new commit
|
|
|
|
# Test repack
|
|
$ hg repack
|
|
$ findfilessorted .hg/store/packs
|
|
.hg/store/packs/7f818eed999b52efef9b2bb175ef2bd01f7edec6.dataidx
|
|
.hg/store/packs/7f818eed999b52efef9b2bb175ef2bd01f7edec6.datapack
|
|
.hg/store/packs/ba63ac333b14fd0bac5b28ffcf28c465a6d8e93a.histidx
|
|
.hg/store/packs/ba63ac333b14fd0bac5b28ffcf28c465a6d8e93a.histpack
|
|
|
|
# check the commit data again
|
|
$ hg cat -r . new_file
|
|
new commit - 2
|
|
$ hg cat -r .~1 new_file
|
|
new commit
|
|
$ hg up -r .~1
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg cat -r . base_file
|
|
something else
|
|
|
|
# Check that files are not fetched from the server for the full history
|
|
# after clearing cache the file will be fetched because it needs a content of it
|
|
$ findfilessorted $CACHEDIR/master/packs
|
|
$TESTTMP/hgcache/master/packs/221b1b8a6642854febb789d0597f5719e9380354.dataidx
|
|
$TESTTMP/hgcache/master/packs/221b1b8a6642854febb789d0597f5719e9380354.datapack
|
|
$TESTTMP/hgcache/master/packs/8439c9deb49aa426fddba0f12b66e39ed3b229f7.histidx
|
|
$TESTTMP/hgcache/master/packs/8439c9deb49aa426fddba0f12b66e39ed3b229f7.histpack
|
|
$TESTTMP/hgcache/master/packs/repacklock
|
|
$ clearcache
|
|
$ echo "new line" >> file
|
|
$ hg commit -vm "expecting to fetch"
|
|
committing files:
|
|
file
|
|
committing manifest
|
|
committing changelog
|
|
committed dc68270aa18f
|
|
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) (?)
|
|
|
|
# don't need fetch anything if the pack files format is used
|
|
$ clearcache
|
|
$ echo "new line" >> file
|
|
$ hg commit -vm "won't download"
|
|
committing files:
|
|
file
|
|
committing manifest
|
|
committing changelog
|
|
committed ef28949d25cb
|
|
$ ls $CACHEDIR/master/packs
|
|
|
|
|
|
# Test that it doesn't break non-remotefilelog repos
|
|
|
|
$ newrepo
|
|
$ echo 1 >> a
|
|
$ hg commit -Am "commit"
|
|
adding a
|
|
|
|
# Test moving files get correctly written into the pack
|
|
$ cd ../shallow
|
|
$ hg mv x xx
|
|
$ hg commit -m "move x to xx"
|
|
$ hg debugfilerev -r .
|
|
be2b4d6828c3: move x to xx
|
|
xx: bin=0 lnk=0 flag=0 size=4 copied='x' chain=ede4cf65837b
|
|
$ hg debugdatapack --node ede4cf65837b184e3aea21fb13ba08bcc26f7988 .hg/store/packs/*.dataidx
|
|
.hg/store/packs/30e5a4f1fde0aa10de7c8bbc818d97aac0d4087e:
|
|
(not found)
|
|
.hg/store/packs/7f818eed999b52efef9b2bb175ef2bd01f7edec6:
|
|
(not found)
|
|
.hg/store/packs/9789ef1b037a319acf8ae59750fba7e14b12f65d:
|
|
(not found)
|
|
.hg/store/packs/c5539d8d2a5eb7fc3b412e76a12bcd882f797e58:
|
|
\x01 (esc)
|
|
copy: x
|
|
copyrev: aee31534993a501858fb6dd96a065671922e7d51
|
|
\x01 (esc)
|
|
x
|
|
x
|
|
|
|
# Test that pending pack writes can be read
|
|
$ cd ..
|
|
$ hgcloneshallow ssh://user@dummy/master pending_test -q
|
|
2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over 0.00s (?)
|
|
$ cd pending_test
|
|
$ setconfig rebase.singeltransaction=True
|
|
$ drawdag <<'EOS'
|
|
> B # B/foo=x\nb\nc\nd\ne\n
|
|
> |
|
|
> | D # D/foo=a\nb\nc\nd\ne\nf\ng\n
|
|
> | |
|
|
> | C # C/foo=a\nb\nc\nd\ne\nf\n
|
|
> |/
|
|
> A # A/foo=a\nb\nc\nd\ne\n
|
|
> EOS
|
|
|
|
- Rebase the stack of two onto the lone commit and force a file merge.
|
|
- This means both commits will be applied in the same transaction and the second
|
|
- commit will be required to read the new content of the first commit, which
|
|
- hasn't been flushed to disk yet.
|
|
$ hg rebase -s $C -d $B
|
|
rebasing e6011cdb8530 "C"
|
|
merging foo
|
|
rebasing f579bc04d2ae "D"
|
|
merging foo
|
|
|
|
# Test compatibility with LFS
|
|
|
|
$ newrepo
|
|
$ echo remotefilelog >> .hg/requires
|
|
$ enable lfs remotefilelog
|
|
$ setconfig lfs.threshold=1B lfs.url=file://$TESTTMP/lfs
|
|
$ hg log
|
|
$ printf THIS-IS-LFS > A
|
|
$ hg ci -m A -A A
|
|
$ drawdag <<'EOS'
|
|
> A # A/A=THIS-IS-LFS
|
|
> EOS
|
|
$ hg cat -r $A A
|
|
THIS-IS-LFS (no-eol)
|
|
$ hg mv A B
|
|
$ hg commit -m "Move A -> B"
|
|
|
|
$ hg debugfilerev -r $A
|
|
267e8be81b24: A
|
|
A: bin=0 lnk=0 flag=2000 size=11 copied='' chain=7d8ad6217b8a
|
|
$ hg debugfilerev -r 'desc(Move)'
|
|
1c06a42dc98f: Move A -> B
|
|
B: bin=0 lnk=0 flag=2000 size=11 copied='A' chain=bf5e569e3cba
|
|
$ hg log -f B -G -T '{desc}\n'
|
|
@ Move A -> B
|
|
│
|
|
o A
|
|
|