sapling/tests/test-fb-hgext-treemanifest-pushrebase2.t

97 lines
2.8 KiB
Perl
Raw Normal View History

Push merge commits from a treeonly shallow repo to a hybrid treemanifest server
$ setconfig remotefilelog.reponame=x remotefilelog.cachepath=$TESTTMP/cache ui.ssh="python $TESTDIR/dummyssh"
$ setconfig format.aggressivemergedeltas=True
$ newrepo server
$ setconfig treemanifest.server=True
$ enable pushrebase treemanifest
$ newrepo client
$ echo remotefilelog >> .hg/requires
$ enable treemanifest remotefilelog pushrebase remotenames
$ setconfig treemanifest.sendtrees=True treemanifest.treeonly=True
$ drawdag <<'EOS'
> D
> |\
> B E # E/F2 = F (renamed from F)
> | | # B/A2 = A (renamed from A)
> A F
> EOS
$ hg push --to foo --create -r $D -f ssh://user@dummy/server
pushing rev 5a587c09248a to destination ssh://user@dummy/server bookmark foo
searching for changes
remote: pushing 5 changesets:
remote: 426bada5c675 A
remote: a6661b868de9 F
remote: 9f93d39c36cf B
remote: fc0baf5da824 E
remote: 5a587c09248a D
exporting bookmark foo
Verify the renames are preserved (commit hashes did not change)
$ cd $TESTTMP/server
$ hg log -r "::$D" -G -T "{desc} {bookmarks}"
o D foo
|\
| o E
| |
o | B
| |
| o F
|
o A
$ setconfig treemanifest.treeonly=True
Push a commit that client1 doesnt have
$ cd ..
$ newrepo client2
$ echo remotefilelog >> .hg/requires
$ enable treemanifest remotefilelog pushrebase remotenames
$ setconfig treemanifest.sendtrees=True treemanifest.treeonly=True
$ setconfig paths.default=ssh://user@dummy/server
$ hg pull
pulling from ssh://user@dummy/server
requesting all changes
adding changesets
adding manifests
adding file changes
added 5 changesets with 6 changes to 6 files
new changesets 426bada5c675:5a587c09248a
(run 'hg update' to get a working copy)
$ hg up -q tip
- Add a bunch of files, to force it to choose to make a delta
$ echo >> file1
$ echo >> file2
$ echo >> file3
$ echo >> file4
$ echo >> file5
$ mkdir mydir
$ echo >> mydir/fileX
$ echo >> mydir/fileY
$ hg commit -Aqm "Add mydir/fileX & mydir/fileY"
$ hg push --to foo
pushing rev 0cfa18081ea6 to destination ssh://user@dummy/server bookmark foo
searching for changes
remote: pushing 1 changeset:
remote: 0cfa18081ea6 Add mydir/fileX & mydir/fileY
updating bookmark foo
Push treeonly merge commit to a treeonly server
$ cd $TESTTMP/client
$ hg up -q tip
$ mkdir -p mydir/subdir
$ echo X >> mydir/subdir/file
$ hg commit -Aqm "Edit file"
$ hg up -q 'tip^'
$ mkdir -p mydir/subdir
$ echo X >> mydir/subdir/file2
$ hg commit -Aqm "Edit file2"
$ hg merge -q 5
$ hg commit -m "Merge 2"
$ hg push --to foo ssh://user@dummy/server 2>&1 | grep mpatchError
remote: mercurial.cext.mpatch.mpatchError: invalid patch