2016-12-16 19:29:08 +03:00
|
|
|
|
|
|
|
$ . "$TESTDIR/library.sh"
|
|
|
|
$ . "$TESTDIR/library-infinitepush.sh"
|
|
|
|
$ setupcommon
|
2017-10-31 17:00:31 +03:00
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
|
> [infinitepushbackup]
|
|
|
|
> logdir=$TESTTMP/logs
|
|
|
|
> EOF
|
2016-12-16 19:29:08 +03:00
|
|
|
|
|
|
|
Setup server
|
|
|
|
$ hg init repo
|
|
|
|
$ cd repo
|
|
|
|
$ setupserver
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Create backup source
|
|
|
|
$ hg clone ssh://user@dummy/repo backupsource -q
|
|
|
|
|
|
|
|
Create restore target
|
|
|
|
$ hg clone ssh://user@dummy/repo restored -q
|
|
|
|
|
|
|
|
Backup
|
|
|
|
$ cd backupsource
|
|
|
|
$ mkcommit firstcommit
|
|
|
|
$ hg book abook
|
2017-04-05 10:56:28 +03:00
|
|
|
|
|
|
|
Actually do a backup, make sure that backup check doesn't fail for empty backup state
|
2017-07-20 11:20:59 +03:00
|
|
|
$ hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
searching for changes
|
|
|
|
remote: pushing 1 commit:
|
|
|
|
remote: 89ecc969c0ac firstcommit
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ cd ..
|
|
|
|
|
2017-10-31 17:00:31 +03:00
|
|
|
Create logdir
|
|
|
|
$ setuplogdir
|
|
|
|
|
2016-12-16 19:29:08 +03:00
|
|
|
Restore
|
|
|
|
$ cd restored
|
2017-10-31 17:00:31 +03:00
|
|
|
$ hg pullbackup --config infinitepushbackup.autobackup=True
|
2016-12-16 19:29:08 +03:00
|
|
|
pulling from ssh://user@dummy/repo
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets 89ecc969c0ac
|
2017-03-29 13:10:12 +03:00
|
|
|
(run 'hg update' to get a working copy)
|
2017-10-31 17:00:31 +03:00
|
|
|
$ waitbgbackup
|
2016-12-16 19:29:08 +03:00
|
|
|
$ hg log --graph -T '{desc}'
|
|
|
|
o firstcommit
|
|
|
|
|
|
|
|
$ hg book
|
|
|
|
abook 0:89ecc969c0ac
|
|
|
|
$ cd ..
|
2017-10-31 17:00:31 +03:00
|
|
|
Check that autobackup doesn't happen on pullbackup. Logs should be empty and backupstate should be correct
|
|
|
|
$ cat $TESTTMP/logs/test/*
|
|
|
|
cat: $TESTTMP/logs/test/*: No such file or directory
|
|
|
|
[1]
|
|
|
|
$ jq -MS . restored/.hg/infinitepushbackupstate
|
|
|
|
{
|
|
|
|
"bookmarks": {
|
|
|
|
"abook": "89ecc969c0ac7d7344728f1255250df7c54a56af"
|
|
|
|
},
|
|
|
|
"heads": [
|
|
|
|
"89ecc969c0ac7d7344728f1255250df7c54a56af"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2016-12-16 19:29:08 +03:00
|
|
|
|
|
|
|
Create second backup source
|
|
|
|
$ hg clone ssh://user@dummy/repo backupsource2 -q
|
|
|
|
$ cd backupsource2
|
|
|
|
$ mkcommit secondcommit
|
|
|
|
$ hg book secondbook
|
|
|
|
$ hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
searching for changes
|
|
|
|
remote: pushing 1 commit:
|
|
|
|
remote: c1bfda8efb6e secondcommit
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Restore with ambiguous repo root
|
|
|
|
$ rm -rf restored
|
|
|
|
$ hg clone ssh://user@dummy/repo restored -q
|
|
|
|
$ cd restored
|
|
|
|
$ hg pullbackup
|
|
|
|
abort: ambiguous repo root to restore: ['$TESTTMP/backupsource', '$TESTTMP/backupsource2']
|
|
|
|
(set --reporoot to disambiguate)
|
|
|
|
[255]
|
|
|
|
$ hg pullbackup --reporoot $TESTTMP/backupsource2
|
|
|
|
pulling from ssh://user@dummy/repo
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets c1bfda8efb6e
|
2017-03-29 13:10:12 +03:00
|
|
|
(run 'hg update' to get a working copy)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ hg log --graph -T '{desc}'
|
|
|
|
o secondcommit
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Check bookmarks escaping
|
|
|
|
$ cd backupsource
|
|
|
|
$ hg book book/bookmarks/somebook
|
|
|
|
$ hg book book/bookmarksbookmarks/somebook
|
|
|
|
$ hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ cd ../restored
|
|
|
|
$ hg pullbackup --reporoot $TESTTMP/backupsource
|
|
|
|
pulling from ssh://user@dummy/repo
|
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets 89ecc969c0ac
|
2017-03-29 13:10:12 +03:00
|
|
|
(run 'hg heads' to see heads, 'hg merge' to merge)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ hg book
|
|
|
|
abook 1:89ecc969c0ac
|
|
|
|
book/bookmarks/somebook 1:89ecc969c0ac
|
|
|
|
book/bookmarksbookmarks/somebook 1:89ecc969c0ac
|
|
|
|
secondbook 0:c1bfda8efb6e
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Create a repo with `/bookmarks/` in path
|
|
|
|
$ mkdir bookmarks
|
|
|
|
$ cd bookmarks
|
|
|
|
$ hg clone ssh://user@dummy/repo backupsource3 -q
|
|
|
|
$ cd backupsource3
|
|
|
|
$ mkcommit commitinweirdrepo
|
|
|
|
$ hg book bookbackupsource3
|
|
|
|
$ hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
searching for changes
|
|
|
|
remote: pushing 1 commit:
|
|
|
|
remote: a2a9ae518b62 commitinweirdrepo
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ cd ../../restored
|
|
|
|
$ hg pullbackup --reporoot $TESTTMP/bookmarks/backupsource3
|
|
|
|
pulling from ssh://user@dummy/repo
|
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets a2a9ae518b62
|
2017-03-29 13:10:12 +03:00
|
|
|
(run 'hg heads .' to see heads, 'hg merge' to merge)
|
2016-12-16 19:29:08 +03:00
|
|
|
$ hg book
|
|
|
|
abook 1:89ecc969c0ac
|
|
|
|
book/bookmarks/somebook 1:89ecc969c0ac
|
|
|
|
book/bookmarksbookmarks/somebook 1:89ecc969c0ac
|
|
|
|
bookbackupsource3 2:a2a9ae518b62
|
|
|
|
secondbook 0:c1bfda8efb6e
|
|
|
|
|
2017-03-06 11:50:30 +03:00
|
|
|
Check that correct path is used in pushbackup
|
|
|
|
$ cd ../backupsource
|
|
|
|
$ hg --config paths.default=badpath --config paths.anotherpath=ssh://user@dummy/repo pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2017-03-06 11:50:30 +03:00
|
|
|
abort: repository $TESTTMP/backupsource/badpath not found!
|
|
|
|
[255]
|
|
|
|
$ hg pushbackup anotherpath --config paths.default=badpath --config paths.anotherpath=ssh://user@dummy/repo
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2017-03-06 11:50:30 +03:00
|
|
|
nothing to backup
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2017-03-06 11:50:30 +03:00
|
|
|
$ cd ../restored
|
|
|
|
|
|
|
|
Check that correct path is used in pullbackup
|
|
|
|
$ hg pullbackup --config paths.default=badpath --config paths.anotherpath=ssh://user@dummy/repo --reporoot $TESTTMP/bookmarks/backupsource3
|
|
|
|
abort: repository $TESTTMP/restored/badpath not found!
|
|
|
|
[255]
|
|
|
|
$ hg pullbackup anotherpath --config paths.default=badpath --config paths.anotherpath=ssh://user@dummy/repo --reporoot $TESTTMP/bookmarks/backupsource3
|
|
|
|
pulling from ssh://user@dummy/repo
|
|
|
|
no changes found
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 0 changesets with 0 changes to 1 files
|
|
|
|
|
2016-12-16 19:29:08 +03:00
|
|
|
$ cd ..
|
2017-03-06 11:40:49 +03:00
|
|
|
|
|
|
|
Backup and restore two commits
|
|
|
|
$ cd backupsource
|
|
|
|
$ mkcommit firstinbatch
|
|
|
|
$ hg up 0
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
(leaving bookmark book/bookmarksbookmarks/somebook)
|
|
|
|
$ mkcommit secondinbatch
|
|
|
|
created new head
|
|
|
|
$ hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2017-03-06 11:40:49 +03:00
|
|
|
searching for changes
|
|
|
|
remote: pushing 3 commits:
|
|
|
|
remote: 89ecc969c0ac firstcommit
|
|
|
|
remote: 33c1c9df81e9 firstinbatch
|
|
|
|
remote: 0e1a088ff282 secondinbatch
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2017-03-06 11:40:49 +03:00
|
|
|
$ cd ../restored
|
|
|
|
|
|
|
|
Install server-side extension that will print message every time when bundlerepo
|
|
|
|
is created
|
|
|
|
$ cd ../repo
|
|
|
|
$ printf "\n[extensions]\nbundlerepologger=$TESTDIR/bundlerepologger.py" >> .hg/hgrc
|
|
|
|
$ hg st
|
|
|
|
$ cd ../restored
|
|
|
|
|
|
|
|
Pull the backup and check bundlerepo was created only once
|
|
|
|
$ hg pullbackup --reporoot $TESTTMP/backupsource | grep 'creating bundlerepo'
|
|
|
|
remote: creating bundlerepo
|
2017-03-06 11:44:18 +03:00
|
|
|
$ cd ../repo
|
|
|
|
$ printf "\n[extensions]\nbundlerepologger=!" >> .hg/hgrc
|
|
|
|
$ cd ../restored
|
2017-03-06 11:40:49 +03:00
|
|
|
|
|
|
|
Make sure that commits were restored
|
|
|
|
$ hg log -r '33c1c9df81e9 + 0e1a088ff282' > /dev/null
|
2017-03-06 11:44:18 +03:00
|
|
|
|
|
|
|
Backup as another user, then restore it
|
|
|
|
$ cd ../backupsource
|
|
|
|
$ mkcommit backupasanotheruser
|
|
|
|
$ hg log -r . -T '{node}\n'
|
|
|
|
e0230a60975b38a9014f098fb973199efd25c46f
|
|
|
|
$ HGUSER=anotheruser hg pushbackup
|
2017-03-16 12:20:02 +03:00
|
|
|
starting backup .* (re)
|
2017-03-06 11:44:18 +03:00
|
|
|
searching for changes
|
|
|
|
remote: pushing 3 commits:
|
|
|
|
remote: 89ecc969c0ac firstcommit
|
|
|
|
remote: 0e1a088ff282 secondinbatch
|
|
|
|
remote: e0230a60975b backupasanotheruser
|
2017-03-16 12:20:02 +03:00
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
2017-03-06 11:44:18 +03:00
|
|
|
$ cd ../restored
|
|
|
|
|
|
|
|
Make sure commit was pulled by checking that commit is present
|
|
|
|
$ hg log -r e0230a60975b38a9014f098fb973199efd25c46f -T '{node}\n'
|
|
|
|
abort: unknown revision 'e0230a60975b38a9014f098fb973199efd25c46f'!
|
|
|
|
[255]
|
|
|
|
$ hg pullbackup --user anotheruser --reporoot $TESTTMP/backupsource > /dev/null
|
|
|
|
$ hg log -r tip -T '{node}\n'
|
|
|
|
e0230a60975b38a9014f098fb973199efd25c46f
|
2017-03-07 12:21:44 +03:00
|
|
|
|
|
|
|
Test debugcheckbackup
|
2017-03-16 12:22:39 +03:00
|
|
|
$ hg debugcheckbackup
|
|
|
|
abort: ambiguous repo root to restore: ['$TESTTMP', '$TESTTMP/backupsource', '$TESTTMP/backupsource2', '$TESTTMP/bookmarks/backupsource3']
|
|
|
|
(set --reporoot to disambiguate)
|
|
|
|
[255]
|
2017-03-07 12:21:44 +03:00
|
|
|
$ hg debugcheckbackup --user anotheruser --reporoot $TESTTMP/backupsource
|
2017-03-16 12:22:39 +03:00
|
|
|
checking \$TESTTMP/backupsource on .* (re)
|
infinitepush: update test to reflect upstream change
It seems `debugcheckbackup` could get a new kind of error with the latest
upstream code:
Traceback (most recent call last):
File "hg/mercurial/scmutil.py", line 150, in callcatch
return func()
File "hg/mercurial/dispatch.py", line 292, in _runcatchfunc
return _dispatch(req)
File "hg/mercurial/dispatch.py", line 896, in _dispatch
cmdpats, cmdoptions)
File "hg/mercurial/dispatch.py", line 658, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "hg/mercurial/dispatch.py", line 904, in _runcommand
return cmdfunc()
File "hg/mercurial/dispatch.py", line 893, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/mercurial/extensions.py", line 322, in closure
return func(*(args + a), **kw)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/hgext/mq.py", line 3542, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "fb-hgext/infinitepush/backupcommands.py", line 272, in checkbackup
if not _dobackupcheck(bkpstate, ui, repo, dest, **opts):
File "fb-hgext/infinitepush/backupcommands.py", line 469, in _dobackupcheck
for r in lookupresults:
File "hg/mercurial/wireproto.py", line 137, in results
next(batchable)
File "hg/mercurial/wireproto.py", line 238, in lookup
self._abort(error.RepoError(data))
File "hg/mercurial/sshpeer.py", line 235, in _abort
raise exception
RepoError: 0e1a088ff2825213eaa838a82a842bc186f10dd5
abort: 0e1a088ff2825213eaa838a82a842bc186f10dd5!
The error message only contains a commit hash, which is not friendly to be
printed out. Therefore make sure we have control about the error message and
update the test accordingly.
Differential Revision: https://phab.mercurial-scm.org/D485
2017-08-23 07:58:37 +03:00
|
|
|
$ hg debugcheckbackup --all 2>&1 | sort
|
2017-03-16 12:22:39 +03:00
|
|
|
checking \$TESTTMP on .* (re)
|
|
|
|
checking \$TESTTMP/backupsource on .* (re)
|
|
|
|
checking \$TESTTMP/backupsource2 on .* (re)
|
|
|
|
checking \$TESTTMP/bookmarks/backupsource3 on .* (re)
|
2017-03-07 12:21:44 +03:00
|
|
|
$ rm ../repo/.hg/scratchbranches/index/nodemap/e0230a60975b38a9014f098fb973199efd25c46f
|
|
|
|
$ hg debugcheckbackup --user anotheruser --reporoot $TESTTMP/backupsource
|
2017-03-16 12:22:39 +03:00
|
|
|
checking \$TESTTMP/backupsource on .* (re)
|
|
|
|
unknown revision 'e0230a60975b38a9014f098fb973199efd25c46f'
|
2017-03-07 12:21:44 +03:00
|
|
|
[255]
|
2017-03-16 12:22:39 +03:00
|
|
|
|
|
|
|
Make another backup from backupsource2 and run `hg debugcheckbackup --all` again.
|
|
|
|
Make sure that both repos were checked even though check for one of them fails
|
|
|
|
$ cd ../backupsource2
|
|
|
|
$ mkcommit newcommit
|
|
|
|
$ HGUSER=anotheruser hg pushbackup
|
|
|
|
starting backup .* (re)
|
|
|
|
searching for changes
|
|
|
|
remote: pushing 2 commits:
|
|
|
|
remote: c1bfda8efb6e secondcommit
|
|
|
|
remote: c03baa769a20 newcommit
|
|
|
|
finished in \d+\.(\d+)? seconds (re)
|
|
|
|
$ cd ../backupsource
|
infinitepush: update test to reflect upstream change
It seems `debugcheckbackup` could get a new kind of error with the latest
upstream code:
Traceback (most recent call last):
File "hg/mercurial/scmutil.py", line 150, in callcatch
return func()
File "hg/mercurial/dispatch.py", line 292, in _runcatchfunc
return _dispatch(req)
File "hg/mercurial/dispatch.py", line 896, in _dispatch
cmdpats, cmdoptions)
File "hg/mercurial/dispatch.py", line 658, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "hg/mercurial/dispatch.py", line 904, in _runcommand
return cmdfunc()
File "hg/mercurial/dispatch.py", line 893, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/mercurial/extensions.py", line 322, in closure
return func(*(args + a), **kw)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/hgext/mq.py", line 3542, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "fb-hgext/infinitepush/backupcommands.py", line 272, in checkbackup
if not _dobackupcheck(bkpstate, ui, repo, dest, **opts):
File "fb-hgext/infinitepush/backupcommands.py", line 469, in _dobackupcheck
for r in lookupresults:
File "hg/mercurial/wireproto.py", line 137, in results
next(batchable)
File "hg/mercurial/wireproto.py", line 238, in lookup
self._abort(error.RepoError(data))
File "hg/mercurial/sshpeer.py", line 235, in _abort
raise exception
RepoError: 0e1a088ff2825213eaa838a82a842bc186f10dd5
abort: 0e1a088ff2825213eaa838a82a842bc186f10dd5!
The error message only contains a commit hash, which is not friendly to be
printed out. Therefore make sure we have control about the error message and
update the test accordingly.
Differential Revision: https://phab.mercurial-scm.org/D485
2017-08-23 07:58:37 +03:00
|
|
|
$ hg debugcheckbackup --user anotheruser --all 2>&1 | sort
|
2017-03-16 12:22:39 +03:00
|
|
|
checking \$TESTTMP/backupsource on .* (re)
|
|
|
|
checking \$TESTTMP/backupsource2 on .* (re)
|
infinitepush: update test to reflect upstream change
It seems `debugcheckbackup` could get a new kind of error with the latest
upstream code:
Traceback (most recent call last):
File "hg/mercurial/scmutil.py", line 150, in callcatch
return func()
File "hg/mercurial/dispatch.py", line 292, in _runcatchfunc
return _dispatch(req)
File "hg/mercurial/dispatch.py", line 896, in _dispatch
cmdpats, cmdoptions)
File "hg/mercurial/dispatch.py", line 658, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "hg/mercurial/dispatch.py", line 904, in _runcommand
return cmdfunc()
File "hg/mercurial/dispatch.py", line 893, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/mercurial/extensions.py", line 322, in closure
return func(*(args + a), **kw)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "hg/hgext/mq.py", line 3542, in mqcommand
return orig(ui, repo, *args, **kwargs)
File "hg/mercurial/util.py", line 1118, in check
return func(*args, **kwargs)
File "fb-hgext/infinitepush/backupcommands.py", line 272, in checkbackup
if not _dobackupcheck(bkpstate, ui, repo, dest, **opts):
File "fb-hgext/infinitepush/backupcommands.py", line 469, in _dobackupcheck
for r in lookupresults:
File "hg/mercurial/wireproto.py", line 137, in results
next(batchable)
File "hg/mercurial/wireproto.py", line 238, in lookup
self._abort(error.RepoError(data))
File "hg/mercurial/sshpeer.py", line 235, in _abort
raise exception
RepoError: 0e1a088ff2825213eaa838a82a842bc186f10dd5
abort: 0e1a088ff2825213eaa838a82a842bc186f10dd5!
The error message only contains a commit hash, which is not friendly to be
printed out. Therefore make sure we have control about the error message and
update the test accordingly.
Differential Revision: https://phab.mercurial-scm.org/D485
2017-08-23 07:58:37 +03:00
|
|
|
unknown revision 'e0230a60975b38a9014f098fb973199efd25c46f'
|
2017-03-29 13:00:46 +03:00
|
|
|
|
|
|
|
Test getavailablebackups command
|
|
|
|
$ hg getavailablebackups
|
|
|
|
user test has 4 available backups:
|
|
|
|
\$TESTTMP on .* (re)
|
|
|
|
\$TESTTMP/backupsource on .* (re)
|
|
|
|
\$TESTTMP/backupsource2 on .* (re)
|
|
|
|
\$TESTTMP/bookmarks/backupsource3 on .* (re)
|
|
|
|
$ hg getavailablebackups --user anotheruser
|
|
|
|
user anotheruser has 2 available backups:
|
|
|
|
\$TESTTMP/backupsource on .* (re)
|
|
|
|
\$TESTTMP/backupsource2 on .* (re)
|
|
|
|
$ hg getavailablebackups --json
|
|
|
|
{".*": \["\$TESTTMP", "\$TESTTMP/backupsource", "\$TESTTMP/backupsource2", "\$TESTTMP/bookmarks/backupsource3"\]} (re)
|