mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
0aaa4577bc
Summary: Streaming clones are a neat hack; we get to send files down to the Mercurial client, which it then writes out as-is. Usefully, we can send no files, and the protocol still works. Set up the capabilities etc needed so that we send streaming clones to Mercurial clients, even if they're rather useless so far. Reviewed By: StanislavGlebik Differential Revision: D9926967 fbshipit-source-id: b543e802adac38c8bc318081eec364aed87b0231
215 lines
4.7 KiB
Perl
215 lines
4.7 KiB
Perl
$ . $TESTDIR/library.sh
|
|
|
|
setup configuration
|
|
$ setup_config_repo
|
|
$ cd $TESTTMP
|
|
|
|
setup common configuration
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [ui]
|
|
> ssh="$DUMMYSSH"
|
|
> EOF
|
|
|
|
|
|
setup repo
|
|
|
|
$ hg init repo-hg
|
|
|
|
Init treemanifest and remotefilelog
|
|
$ cd repo-hg
|
|
$ cat >> .hg/hgrc <<EOF
|
|
> [extensions]
|
|
> treemanifest=
|
|
> remotefilelog=
|
|
> [treemanifest]
|
|
> server=True
|
|
> [remotefilelog]
|
|
> server=True
|
|
> shallowtrees=True
|
|
> EOF
|
|
|
|
$ touch a
|
|
$ hg add a
|
|
$ hg ci -ma
|
|
$ hg log
|
|
changeset: 0:3903775176ed
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: a
|
|
|
|
$ cd $TESTTMP
|
|
|
|
setup repo2
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> remotefilelog=
|
|
> [remotefilelog]
|
|
> cachepath=$TESTTMP/cachepath
|
|
> EOF
|
|
$ hgclone_treemanifest ssh://user@dummy/repo-hg repo2 --noupdate
|
|
$ cd repo2
|
|
$ hg pull
|
|
pulling from ssh://user@dummy/repo-hg
|
|
searching for changes
|
|
no changes found
|
|
|
|
$ cd $TESTTMP
|
|
$ cd repo-hg
|
|
$ touch b
|
|
$ hg add b
|
|
$ hg ci -mb
|
|
$ echo content > c
|
|
$ hg add c
|
|
$ hg ci -mc
|
|
$ mkdir dir
|
|
$ echo 1 > dir/1
|
|
$ mkdir dir2
|
|
$ echo 2 > dir/2
|
|
$ hg addremove
|
|
adding dir/1
|
|
adding dir/2
|
|
$ hg ci -m 'new directory'
|
|
$ echo cc > c
|
|
$ hg addremove
|
|
$ hg ci -m 'modify file'
|
|
$ hg mv dir/1 dir/rename
|
|
$ hg ci -m 'rename'
|
|
$ hg debugdrawdag <<'EOS'
|
|
> D # D/D=1\n2\n
|
|
> /| # B/D=1\n
|
|
> B C # C/D=2\n
|
|
> |/ # A/D=x\n
|
|
> A
|
|
> EOS
|
|
$ hg log --graph -T '{node|short} {desc}'
|
|
o e635b24c95f7 D
|
|
|\
|
|
| o d351044ef463 C
|
|
| |
|
|
o | 9a827afb7e25 B
|
|
|/
|
|
o af6aa0dfdf3d A
|
|
|
|
@ 28468743616e rename
|
|
|
|
|
o 329b10223740 modify file
|
|
|
|
|
o a42a44555d7c new directory
|
|
|
|
|
o 3e19bf519e9a c
|
|
|
|
|
o 0e067c57feba b
|
|
|
|
|
o 3903775176ed a
|
|
|
|
|
|
setup master bookmarks
|
|
|
|
$ hg bookmark master_bookmark -r e635b24c95f7
|
|
$ hg bookmark master_bookmark2 -r 28468743616e
|
|
|
|
blobimport
|
|
|
|
$ cd ..
|
|
$ blobimport repo-hg/.hg repo
|
|
$ blobimport repo-hg/.hg enabled_repo
|
|
|
|
start mononoke
|
|
|
|
$ mononoke
|
|
$ wait_for_mononoke $TESTTMP/repo
|
|
$ hgmn debugwireargs ssh://user@dummy/disabled_repo one two --three three
|
|
remote: * DEBG Session with Mononoke started with uuid: * (glob)
|
|
abort: no suitable response from remote hg!
|
|
[255]
|
|
$ hgmn debugwireargs ssh://user@dummy/repo one two --three three
|
|
remote: * DEBG Session with Mononoke started with uuid: * (glob)
|
|
one two three None None
|
|
|
|
$ cd repo2
|
|
$ hg up -q 0
|
|
Test a pull of one specific revision
|
|
$ hgmn pull -r 3e19bf519e9af6c66edf28380101a92122cbea50 -q
|
|
Pull the rest
|
|
$ hgmn pull -q
|
|
|
|
$ hg log -r '3903775176ed::329b10223740' --graph -T '{node|short} {desc}'
|
|
o 329b10223740 modify file
|
|
|
|
|
o a42a44555d7c new directory
|
|
|
|
|
o 3e19bf519e9a c
|
|
|
|
|
o 0e067c57feba b
|
|
|
|
|
@ 3903775176ed a
|
|
|
|
$ ls
|
|
a
|
|
$ hgmn up 28468743616e -q
|
|
$ ls
|
|
a
|
|
b
|
|
c
|
|
dir
|
|
$ cat c
|
|
cc
|
|
$ hgmn up 28468743616e -q
|
|
$ hg log c -T '{node|short} {desc}\n'
|
|
warning: file log can be slow on large repos - use -f to speed it up
|
|
329b10223740 modify file
|
|
3e19bf519e9a c
|
|
$ cat dir/rename
|
|
1
|
|
$ cat dir/2
|
|
2
|
|
$ hg log dir/rename -f -T '{node|short} {desc}\n'
|
|
28468743616e rename
|
|
a42a44555d7c new directory
|
|
$ hg st --change 28468743616e -C
|
|
A dir/rename
|
|
dir/1
|
|
R dir/1
|
|
|
|
$ hgmn up -q e635b24c95f7
|
|
|
|
Sort the output because it may be unpredictable because of the merge
|
|
$ hg log D --follow -T '{node|short} {desc}\n' | sort
|
|
9a827afb7e25 B
|
|
af6aa0dfdf3d A
|
|
d351044ef463 C
|
|
e635b24c95f7 D
|
|
|
|
Create a new bookmark and try and send it over the wire
|
|
Test commented while we have no bookmark support in blobimport or easy method
|
|
to create a fileblob bookmark
|
|
# $ cd ../repo
|
|
# $ hg bookmark test-bookmark
|
|
# $ hg bookmarks
|
|
# * test-bookmark 0:3903775176ed
|
|
# $ cd ../repo2
|
|
# $ hgmn pull ssh://user@dummy/repo
|
|
# pulling from ssh://user@dummy/repo
|
|
# searching for changes
|
|
# no changes found
|
|
# adding remote bookmark test-bookmark
|
|
# $ hg bookmarks
|
|
# test-bookmark 0:3903775176ed
|
|
|
|
Do a streaming clone of the repo
|
|
$ hgmn clone --stream ssh://user@dummy/repo repo-streamclone --config extensions.treemanifest= --config remotefilelog.reponame=master --shallow --config treemanifest.treeonly=true --config extensions.lz4revlog=
|
|
remote: * DEBG Session with Mononoke started with uuid: * (glob)
|
|
streaming all changes
|
|
0 files to transfer, * bytes of data (glob)
|
|
transferred * bytes in * seconds (* bytes/sec) (glob)
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 10 changesets with 0 changes to 0 files (+1 heads)
|
|
new changesets * (glob)
|
|
updating to branch default
|
|
remote: * DEBG Session with Mononoke started with uuid: * (glob)
|
|
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
|