mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +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
303 lines
9.3 KiB
Perl
303 lines
9.3 KiB
Perl
#chg-compatible
|
|
|
|
#require symlink
|
|
|
|
$ enable amend smartlog
|
|
$ . "$TESTDIR/library.sh"
|
|
$ . "$TESTDIR/infinitepush/library.sh"
|
|
$ setupcommon
|
|
$ enable remotenames
|
|
|
|
$ hgfakedate() {
|
|
> fakedate="$1"
|
|
> shift
|
|
> hg --config extensions.fakedate="$TESTDIR/fakedate.py" --config fakedate.date="$fakedate" "$@"
|
|
> }
|
|
|
|
Setup server
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ setupserver
|
|
$ cd ..
|
|
|
|
To avoid test flakiness with times, do all operations relative to 2016-01-07T12:00:00Z
|
|
$ now=1452168000
|
|
$ setconfig extensions.fakedate="$TESTDIR/fakedate.py" fakedate.date="$now 0"
|
|
|
|
Setup client
|
|
$ hg clone ssh://user@dummy/repo client -q
|
|
$ cd client
|
|
$ touch file1
|
|
$ hg add file1
|
|
$ commit_time=`expr $now - 15 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Public changeset"
|
|
$ touch file2
|
|
$ hg add file2
|
|
$ commit_time=`expr $now - 15 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Public changeset 2"
|
|
$ hg push --to master --create --force
|
|
pushing rev c46481f83c9b to destination ssh://user@dummy/repo bookmark master
|
|
searching for changes
|
|
exporting bookmark master
|
|
remote: adding changesets
|
|
remote: adding manifests
|
|
remote: adding file changes
|
|
remote: added 2 changesets with 2 changes to 2 files
|
|
$ hg up 00e8a1efc6e28bc6f64a6e5f365f5ad0a2cebb11
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ echo a > file1
|
|
$ changeset_time=`expr $now - 13 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Backed up changeset"
|
|
$ echo a1 > file1
|
|
$ changeset_time=`expr $now - 12 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Backed up changeset 2"
|
|
$ hg cloud backup
|
|
backing up stack rooted at * (glob)
|
|
commitcloud: backed up 2 commits
|
|
remote: pushing 2 commits:
|
|
remote: * Backed up changeset (glob)
|
|
remote: * Backed up changeset 2 (glob)
|
|
|
|
Check hiding the backup head doesn't affect backed-up changesets
|
|
$ hg up -q 6a37606e3792afff17078859861bbbbdb1227bc2
|
|
$ hg log -T '{desc}\n' -r 'backedup()'
|
|
Backed up changeset
|
|
Backed up changeset 2
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()'
|
|
$ hg hide 'max(desc(Backed))'
|
|
hiding commit * (glob)
|
|
1 changeset hidden
|
|
$ hg log -T '{desc}\n' -r 'backedup()' --traceback
|
|
Backed up changeset
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()'
|
|
$ hg unhide 'max(desc(Backed))'
|
|
$ hg up -q 'max(desc(Backed))'
|
|
|
|
Create some changesets that aren't backed up
|
|
$ echo b > file1
|
|
$ commit_time=`expr $now - 11 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Not backed up changeset"
|
|
$ echo c > file1
|
|
$ commit_time=`expr $now - 9 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Backup pending changeset"
|
|
|
|
Check backup status of commits
|
|
$ hg log -T '{desc}\n' -r 'backedup()'
|
|
Backed up changeset
|
|
Backed up changeset 2
|
|
$ hg log -T '{desc}\n' -r 'draft() - backedup()'
|
|
Not backed up changeset
|
|
Backup pending changeset
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()'
|
|
Not backed up changeset
|
|
Backup pending changeset
|
|
|
|
Check smartlog output
|
|
$ hg smartlog -T '{desc}\n' --config infinitepushbackup.autobackup=no
|
|
o Public changeset 2
|
|
│
|
|
│ @ Backup pending changeset
|
|
│ │
|
|
│ o Not backed up changeset
|
|
│ │
|
|
│ o Backed up changeset 2
|
|
│ │
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: background backup is currently disabled so your commits are not being backed up.
|
|
note: changeset * is not backed up. (glob)
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|
|
|
|
Check smartlog summary can be suppressed
|
|
$ hg smartlog -T '{desc}\n' --config infinitepushbackup.enablestatus=no
|
|
o Public changeset 2
|
|
│
|
|
│ @ Backup pending changeset
|
|
│ │
|
|
│ o Not backed up changeset
|
|
│ │
|
|
│ o Backed up changeset 2
|
|
│ │
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
Check smartlog summary with multiple unbacked up changesets
|
|
$ hg up 6a37606e3792afff17078859861bbbbdb1227bc2
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo b2 > file1
|
|
$ commit_time=`expr $now - 11 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Not backed up changeset 2"
|
|
$ hg smartlog -T '{desc}\n' --config infinitepushbackup.autobackup=yes
|
|
o Public changeset 2
|
|
│
|
|
│ @ Not backed up changeset 2
|
|
│ │
|
|
│ │ o Backup pending changeset
|
|
│ │ │
|
|
│ │ o Not backed up changeset
|
|
│ │ │
|
|
│ │ o Backed up changeset 2
|
|
│ ├─╯
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: 2 changesets are not backed up.
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|
|
|
|
Check backup status with an unbacked up changeset that is disjoint from existing backups
|
|
$ hg up 'max(desc(Public))'
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo b > file2
|
|
$ commit_time=`expr $now - 11 \* 60`
|
|
$ hg commit -d "$commit_time 0" -m "Not backed up changeset 3"
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()'
|
|
Not backed up changeset
|
|
Backup pending changeset
|
|
Not backed up changeset 2
|
|
Not backed up changeset 3
|
|
|
|
Test template keyword for when a backup is in progress
|
|
$ hg log -T '{if(backingup,"Yes","No")}\n' -r .
|
|
No
|
|
$ rm -f .hg/infinitepushbackup.lock
|
|
$ ln -s fakelock .hg/infinitepushbackup.lock
|
|
$ hg log -T '{if(backingup,"Yes","No")}\n' -r .
|
|
Yes
|
|
$ rm -f .hg/infinitepushbackup.lock
|
|
|
|
Test for infinitepushbackup disable
|
|
$ setconfig infinitepushbackup.autobackup=true
|
|
$ hg cloud enable
|
|
background backup is already enabled
|
|
$ hg cloud disable
|
|
commitcloud: background backup is now disabled until * (glob)
|
|
$ hg cloud disable
|
|
note: background backup was already disabled
|
|
commitcloud: background backup is now disabled until * (glob)
|
|
$ hg cloud disable --hours ggg
|
|
note: background backup was already disabled
|
|
abort: error: argument 'hours': invalid int value: 'ggg'
|
|
|
|
[255]
|
|
|
|
Test sl when infinitepushbackup is disabled but disabling has been expired / not expired
|
|
$ hg sl -T '{desc}\n'
|
|
@ Not backed up changeset 3
|
|
│
|
|
o Public changeset 2
|
|
│
|
|
│ o Not backed up changeset 2
|
|
│ │
|
|
│ │ o Backup pending changeset
|
|
│ │ │
|
|
│ │ o Not backed up changeset
|
|
│ │ │
|
|
│ │ o Backed up changeset 2
|
|
│ ├─╯
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: background backup is currently disabled until * (glob)
|
|
so your commits are not being backed up.
|
|
(run 'hg cloud enable' to turn automatic backups back on)
|
|
note: 3 changesets are not backed up.
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|
|
|
|
Advance time so that the disable has expired
|
|
$ hg sl --config fakedate.date="1452175000 0" -T '{desc}\n'
|
|
@ Not backed up changeset 3
|
|
│
|
|
o Public changeset 2
|
|
│
|
|
│ o Not backed up changeset 2
|
|
│ │
|
|
│ │ o Backup pending changeset
|
|
│ │ │
|
|
│ │ o Not backed up changeset
|
|
│ │ │
|
|
│ │ o Backed up changeset 2
|
|
│ ├─╯
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: 4 changesets are not backed up.
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|
|
|
|
Hide or obsolete some of the non-backed-up commits. The hidden commits that
|
|
have not been backed up should no longer show up as "not backed up", even if
|
|
'--hidden' is passed. The hidden commits that have been backed up may still
|
|
show as backed up if '--hidden' is passed.
|
|
|
|
$ echo c > file2
|
|
$ commit_time=`expr $now - 11 \* 60`
|
|
$ hg amend -d "$commit_time 0" -m "Not backed up changeset 3 (amended)"
|
|
$ hg hide -q 9d434400bf7f325460bd0b304582414f2848ae03
|
|
$ hg log -T '{desc}\n' -r 'backedup()'
|
|
Backed up changeset
|
|
$ hg log -T '{desc}\n' -r 'backedup()' --hidden
|
|
Backed up changeset
|
|
Backed up changeset 2
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()'
|
|
Not backed up changeset 2
|
|
Not backed up changeset 3 (amended)
|
|
$ hg log -T '{desc}\n' -r 'notbackedup()' --hidden
|
|
Not backed up changeset
|
|
Backup pending changeset
|
|
Not backed up changeset 2
|
|
Not backed up changeset 3
|
|
Not backed up changeset 3 (amended)
|
|
$ hg sl -T '{desc}\n'
|
|
@ Not backed up changeset 3 (amended)
|
|
│
|
|
o Public changeset 2
|
|
│
|
|
│ o Not backed up changeset 2
|
|
│ │
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: background backup is currently disabled until Thu Jan 07 13:00:00 2016 +0000
|
|
so your commits are not being backed up.
|
|
(run 'hg cloud enable' to turn automatic backups back on)
|
|
note: 2 changesets are not backed up.
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|
|
|
|
(3, 4, 5 do not have successors. They show up as 'o' not 'x' with --hidden)
|
|
$ hg sl -T '{desc}\n' --hidden
|
|
@ Not backed up changeset 3 (amended)
|
|
│
|
|
│ x Not backed up changeset 3
|
|
├─╯
|
|
o Public changeset 2
|
|
│
|
|
│ o Not backed up changeset 2
|
|
│ │
|
|
│ │ o Backup pending changeset
|
|
│ │ │
|
|
│ │ o Not backed up changeset
|
|
│ │ │
|
|
│ │ o Backed up changeset 2
|
|
│ ├─╯
|
|
│ o Backed up changeset
|
|
├─╯
|
|
o Public changeset
|
|
|
|
note: background backup is currently disabled until Thu Jan 07 13:00:00 2016 +0000
|
|
so your commits are not being backed up.
|
|
(run 'hg cloud enable' to turn automatic backups back on)
|
|
note: 4 changesets are not backed up.
|
|
(run 'hg cloud backup' to perform a backup)
|
|
(if this fails, please report to the Source Control Team)
|