mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
490468403b
Summary: The rust contentstore doesn't allow runtime manipulation of the list of stores, which is required in order to insert the bundle store into the store. Let's continue using the old python union store in these cases. This still let's us delete the python pack code later, but we'll have to keep around the python union store until we come up with a better solution. Reviewed By: quark-zju Differential Revision: D23689630 fbshipit-source-id: 0c60e6f268e81804149afa24409f64b5303e1e34
154 lines
4.6 KiB
Perl
154 lines
4.6 KiB
Perl
#require py2
|
|
#chg-compatible
|
|
|
|
# Initial setup
|
|
$ enable rebase snapshot remotenames
|
|
$ setconfig visibility.enabled=true
|
|
$ . "$TESTDIR/library.sh"
|
|
$ . "$TESTDIR/infinitepush/library.sh"
|
|
$ setupcommon
|
|
$ setconfig infinitepushbackup.logdir="$TESTTMP/logs" infinitepushbackup.hostname=testhost
|
|
$ setconfig snapshot.enable-sync-bundle=true
|
|
|
|
# Setup server
|
|
$ hg init server
|
|
$ cd server
|
|
$ setupserver
|
|
$ setconfig treemanifest.server=True
|
|
$ hg bookmark master
|
|
$ cd ..
|
|
|
|
# Setup clients
|
|
$ hg clone -q ssh://user@dummy/server client
|
|
$ hg clone -q ssh://user@dummy/server restored
|
|
$ cd client
|
|
$ hg debugvisibility start
|
|
|
|
# Add a file to the store
|
|
$ echo "foo" > foofile
|
|
$ mkdir bar
|
|
$ echo "bar" > bar/file
|
|
$ hg add foofile bar/file
|
|
$ hg commit -m "add some files"
|
|
$ hg push --to master -r .
|
|
pushing rev 3490593cf53c to destination ssh://user@dummy/server bookmark master
|
|
searching for changes
|
|
updating bookmark master
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 1 changesets with 2 changes to 2 files
|
|
|
|
# Call this state a base revision
|
|
$ BASEREV="$(hg id -i)"
|
|
$ echo "$BASEREV"
|
|
3490593cf53c
|
|
|
|
|
|
# Snapshot backup test plan:
|
|
# 1) Create a snapshot, back it up + restore on another client
|
|
|
|
|
|
# 1) Create a snapshot, back it up + restore on another client
|
|
# Setup the environment
|
|
$ echo "a" > mergefile
|
|
$ hg add mergefile
|
|
$ hg commit -m "merge #1"
|
|
$ MERGEREV="$(hg id -i)"
|
|
$ hg checkout "$BASEREV"
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ echo "b" > mergefile
|
|
$ hg add mergefile
|
|
$ hg commit -m "merge #2"
|
|
$ hg merge "$MERGEREV"
|
|
merging mergefile
|
|
warning: 1 conflicts while merging mergefile! (edit, then use 'hg resolve --mark')
|
|
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
|
|
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
|
|
[1]
|
|
$ hg rm bar/file
|
|
$ rm foofile
|
|
$ echo "another" > bazfile
|
|
$ hg add bazfile
|
|
$ echo "fizz" > untrackedfile
|
|
$ BEFORESTATUS="$(hg status --verbose)"
|
|
$ echo "$BEFORESTATUS"
|
|
M mergefile
|
|
A bazfile
|
|
R bar/file
|
|
! foofile
|
|
? mergefile.orig
|
|
? untrackedfile
|
|
# The repository is in an unfinished *merge* state.
|
|
|
|
# Unresolved merge conflicts:
|
|
#
|
|
# mergefile
|
|
#
|
|
# To mark files as resolved: hg resolve --mark FILE
|
|
|
|
# To continue: hg commit
|
|
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
|
|
$ BEFOREDIFF="$(hg diff)"
|
|
$ echo "$BEFOREDIFF"
|
|
diff -r 6eb2552aed20 bar/file
|
|
--- a/bar/file Thu Jan 01 00:00:00 1970 +0000
|
|
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,1 +0,0 @@
|
|
-bar
|
|
diff -r 6eb2552aed20 bazfile
|
|
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
|
+++ b/bazfile Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -0,0 +1,1 @@
|
|
+another
|
|
diff -r 6eb2552aed20 mergefile
|
|
--- a/mergefile Thu Jan 01 00:00:00 1970 +0000
|
|
+++ b/mergefile Thu Jan 01 00:00:00 1970 +0000
|
|
@@ -1,1 +1,5 @@
|
|
+<<<<<<< working copy: 6eb2552aed20 - test: merge #2
|
|
b
|
|
+=======
|
|
+a
|
|
+>>>>>>> merge rev: f473d4d5a1c0 - test: merge #1
|
|
|
|
# Make a snapshot
|
|
$ OID="$(hg snapshot create | cut -f2 -d' ')"
|
|
$ echo "$OID"
|
|
751f5ef10bc73a8f549197b380773d4f680daa8c
|
|
# Do it one more time to trigger rebundling on the server side
|
|
$ hg snapshot create -m "second snapshot"
|
|
snapshot ccf23db4d8f395e020a2b8bed6a19bfc2309b5ab created
|
|
|
|
# Back it up
|
|
$ hg cloud backup
|
|
backing up stack rooted at f473d4d5a1c0
|
|
backing up stack rooted at 6eb2552aed20
|
|
commitcloud: backed up 4 commits
|
|
remote: pushing 4 commits:
|
|
remote: f473d4d5a1c0 merge #1
|
|
remote: 6eb2552aed20 merge #2
|
|
remote: 751f5ef10bc7 snapshot
|
|
remote: ccf23db4d8f3 second snapshot
|
|
remote: pushing 4 commits:
|
|
remote: f473d4d5a1c0 merge #1
|
|
remote: 6eb2552aed20 merge #2
|
|
remote: 751f5ef10bc7 snapshot
|
|
remote: ccf23db4d8f3 second snapshot
|
|
|
|
# Restore it on another client
|
|
$ cd ../restored
|
|
$ hg checkout "$OID"
|
|
pulling '751f5ef10bc73a8f549197b380773d4f680daa8c' from 'ssh://user@dummy/server'
|
|
fetching tree '' 5acaace5875a90ee839764a9d8a6ba846f243f3a, found via 751f5ef10bc7
|
|
2 trees fetched over 0.00s
|
|
abort: 751f5ef10bc7 is a snapshot, set ui.allow-checkout-snapshot config to True to checkout on it
|
|
|
|
[255]
|
|
$ hg snapshot checkout $OID
|
|
will checkout on 751f5ef10bc73a8f549197b380773d4f680daa8c
|
|
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
checkout complete
|
|
# hg status/diff are unchanged
|
|
$ test "$BEFORESTATUS" = "$(hg status --verbose)"
|
|
$ test "$BEFOREDIFF" = "$(hg diff)"
|