mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +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
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)"
|