test-bundle2-remote-changegroup.t
619 lines
| 21.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-bundle2-remote-changegroup.t
Gregory Szorc
|
r36235 | #testcases sshv1 sshv2 | ||
#if sshv2 | ||||
$ cat >> $HGRCPATH << EOF | ||||
> [experimental] | ||||
> sshpeer.advertise-v2 = true | ||||
> sshserver.support-v2 = true | ||||
> EOF | ||||
#endif | ||||
Mike Hommey
|
r23029 | Create an extension to test bundle2 remote-changegroup parts | ||
$ cat > bundle2.py << EOF | ||||
> """A small extension to test bundle2 remote-changegroup parts. | ||||
> | ||||
> Current bundle2 implementation doesn't provide a way to generate those | ||||
> parts, so they must be created by extensions. | ||||
> """ | ||||
Yuya Nishihara
|
r38722 | > from mercurial import ( | ||
> bundle2, | ||||
> changegroup, | ||||
> discovery, | ||||
> exchange, | ||||
> pycompat, | ||||
> util, | ||||
> ) | ||||
Mike Hommey
|
r23029 | > | ||
> def _getbundlechangegrouppart(bundler, repo, source, bundlecaps=None, | ||||
> b2caps=None, heads=None, common=None, | ||||
> **kwargs): | ||||
> """this function replaces the changegroup part handler for getbundle. | ||||
> It allows to create a set of arbitrary parts containing changegroups | ||||
> and remote-changegroups, as described in a bundle2maker file in the | ||||
> repository .hg/ directory. | ||||
> | ||||
> Each line of that bundle2maker file contain a description of the | ||||
> part to add: | ||||
> - changegroup common_revset heads_revset | ||||
> Creates a changegroup part based, using common_revset and | ||||
Pierre-Yves David
|
r29807 | > heads_revset for outgoing | ||
Mike Hommey
|
r23029 | > - remote-changegroup url file | ||
> Creates a remote-changegroup part for a bundle at the given | ||||
> url. Size and digest, as required by the client, are computed | ||||
> from the given file. | ||||
> - raw-remote-changegroup <python expression> | ||||
> Creates a remote-changegroup part with the data given in the | ||||
Augie Fackler
|
r33261 | > Python expression as parameters. The Python expression is | ||
Mike Hommey
|
r23029 | > evaluated with eval, and is expected to be a dict. | ||
> """ | ||||
Yuya Nishihara
|
r38721 | > def newpart(name, data=b''): | ||
Mike Hommey
|
r23029 | > """wrapper around bundler.newpart adding an extra part making the | ||
> client output information about each processed part""" | ||||
Yuya Nishihara
|
r38721 | > bundler.newpart(b'output', data=name) | ||
Mike Hommey
|
r23029 | > part = bundler.newpart(name, data=data) | ||
> return part | ||||
> | ||||
Yuya Nishihara
|
r38721 | > for line in open(repo.vfs.join(b'bundle2maker'), 'rb'): | ||
Mike Hommey
|
r23029 | > line = line.strip() | ||
> try: | ||||
> verb, args = line.split(None, 1) | ||||
> except ValueError: | ||||
Yuya Nishihara
|
r38721 | > verb, args = line, b'' | ||
> if verb == b'remote-changegroup': | ||||
Mike Hommey
|
r23029 | > url, file = args.split() | ||
> bundledata = open(file, 'rb').read() | ||||
Yuya Nishihara
|
r38721 | > digest = util.digester.preferred(b2caps[b'digests']) | ||
Mike Hommey
|
r23029 | > d = util.digester([digest], bundledata) | ||
Yuya Nishihara
|
r38721 | > part = newpart(b'remote-changegroup') | ||
> part.addparam(b'url', url) | ||||
Yuya Nishihara
|
r38722 | > part.addparam(b'size', b'%d' % len(bundledata)) | ||
Yuya Nishihara
|
r38721 | > part.addparam(b'digests', digest) | ||
> part.addparam(b'digest:%s' % digest, d[digest]) | ||||
> elif verb == b'raw-remote-changegroup': | ||||
> part = newpart(b'remote-changegroup') | ||||
Mike Hommey
|
r23029 | > for k, v in eval(args).items(): | ||
Yuya Nishihara
|
r38722 | > part.addparam(pycompat.sysbytes(k), pycompat.bytestr(v)) | ||
Yuya Nishihara
|
r38721 | > elif verb == b'changegroup': | ||
Mike Hommey
|
r23029 | > _common, heads = args.split() | ||
Martin von Zweigbergk
|
r37326 | > common.extend(repo[r].node() for r in repo.revs(_common)) | ||
> heads = [repo[r].node() for r in repo.revs(heads)] | ||||
Pierre-Yves David
|
r29807 | > outgoing = discovery.outgoing(repo, common, heads) | ||
Yuya Nishihara
|
r38721 | > cg = changegroup.makechangegroup(repo, outgoing, b'01', | ||
> b'changegroup') | ||||
> newpart(b'changegroup', cg.getchunks()) | ||||
Mike Hommey
|
r23029 | > else: | ||
> raise Exception('unknown verb') | ||||
> | ||||
Yuya Nishihara
|
r38721 | > exchange.getbundle2partsmapping[b'changegroup'] = _getbundlechangegrouppart | ||
Mike Hommey
|
r23029 | > EOF | ||
Start a simple HTTP server to serve bundles | ||||
Matt Harbison
|
r39743 | $ "$PYTHON" "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid | ||
Mike Hommey
|
r23029 | $ cat dumb.pid >> $DAEMON_PIDS | ||
$ cat >> $HGRCPATH << EOF | ||||
> [ui] | ||||
Matt Harbison
|
r39743 | > ssh="$PYTHON" "$TESTDIR/dummyssh" | ||
Mike Hommey
|
r23029 | > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | ||
> EOF | ||||
$ hg init repo | ||||
$ hg -R repo unbundle $TESTDIR/bundles/rebase.hg | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
Boris Feld
|
r39516 | new changesets cd010b8cd998:02de42196ebe (8 drafts) | ||
Mike Hommey
|
r23029 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg -R repo log -G | ||||
o 7:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> H | ||||
| | ||||
| o 6:eea13746799a draft Nicolas Dumazet <nicdumz.commits@gmail.com> G | ||||
|/| | ||||
o | 5:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F | ||||
| | | ||||
| o 4:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E | ||||
|/ | ||||
| o 3:32af7686d403 draft Nicolas Dumazet <nicdumz.commits@gmail.com> D | ||||
| | | ||||
| o 2:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | | ||||
| o 1:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
|/ | ||||
o 0:cd010b8cd998 draft Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ hg clone repo orig | ||||
updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat > repo/.hg/hgrc << EOF | ||||
> [extensions] | ||||
> bundle2=$TESTTMP/bundle2.py | ||||
> EOF | ||||
Test a pull with an remote-changegroup | ||||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 --base '0:4' -r '5:7' bundle.hg | ||
Mike Hommey
|
r23029 | 3 changesets found | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/bundle.hg bundle.hg | ||||
> EOF | ||||
$ hg clone orig clone -r 3 -r 4 | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 5 changesets with 5 changes to 5 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:9520eea781bc | ||
Mike Hommey
|
r23029 | updating to branch default | ||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 2 changes to 2 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 24b6387c8c8c:02de42196ebe | ||
Mike Hommey
|
r23029 | (run 'hg heads .' to see heads, 'hg merge' to merge) | ||
$ hg -R clone log -G | ||||
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H | ||||
| | ||||
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G | ||||
|/| | ||||
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F | ||||
| | | ||||
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E | ||||
|/ | ||||
| @ 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D | ||||
| | | ||||
| o 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | | ||||
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
|/ | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ rm -rf clone | ||||
Test a pull with an remote-changegroup and a following changegroup | ||||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 --base 2 -r '3:4' bundle2.hg | ||
Mike Hommey
|
r23029 | 2 changesets found | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/bundle2.hg bundle2.hg | ||||
> changegroup 0:4 5:7 | ||||
> EOF | ||||
$ hg clone orig clone -r 2 | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 3 files | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:5fddd98957c8 | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Pierre-Yves David
|
r24686 | remote: changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 2 changes to 2 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 32af7686d403:02de42196ebe | ||
Mike Hommey
|
r23029 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg -R clone log -G | ||||
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H | ||||
| | ||||
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G | ||||
|/| | ||||
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F | ||||
| | | ||||
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E | ||||
|/ | ||||
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D | ||||
| | | ||||
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | | ||||
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
|/ | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ rm -rf clone | ||||
Test a pull with a changegroup followed by an remote-changegroup | ||||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 --base '0:4' -r '5:7' bundle3.hg | ||
Mike Hommey
|
r23029 | 3 changesets found | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> changegroup 000000000000 :4 | ||||
> remote-changegroup http://localhost:$HGPORT/bundle3.hg bundle3.hg | ||||
> EOF | ||||
$ hg clone orig clone -r 2 | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 3 files | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:5fddd98957c8 | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 2 changes to 2 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 32af7686d403:02de42196ebe | ||
Mike Hommey
|
r23029 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg -R clone log -G | ||||
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H | ||||
| | ||||
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G | ||||
|/| | ||||
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F | ||||
| | | ||||
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E | ||||
|/ | ||||
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D | ||||
| | | ||||
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | | ||||
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
|/ | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ rm -rf clone | ||||
Test a pull with two remote-changegroups and a changegroup | ||||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 --base 2 -r '3:4' bundle4.hg | ||
Mike Hommey
|
r23029 | 2 changesets found | ||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 --base '3:4' -r '5:6' bundle5.hg | ||
Mike Hommey
|
r23029 | 2 changesets found | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/bundle4.hg bundle4.hg | ||||
> remote-changegroup http://localhost:$HGPORT/bundle5.hg bundle5.hg | ||||
> changegroup 0:6 7 | ||||
> EOF | ||||
$ hg clone orig clone -r 2 | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 3 files | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:5fddd98957c8 | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 1 changes to 1 files | ||||
Pierre-Yves David
|
r24686 | remote: changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 32af7686d403:02de42196ebe | ||
Mike Hommey
|
r23029 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ hg -R clone log -G | ||||
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H | ||||
| | ||||
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G | ||||
|/| | ||||
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F | ||||
| | | ||||
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E | ||||
|/ | ||||
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D | ||||
| | | ||||
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | | ||||
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
|/ | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ rm -rf clone | ||||
Hash digest tests | ||||
Pierre-Yves David
|
r26773 | $ hg bundle -R repo --type v1 -a bundle6.hg | ||
Mike Hommey
|
r23029 | 8 changesets found | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:02de42196ebe | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -rf clone | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394'} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:02de42196ebe | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -rf clone | ||||
Hash digest mismatch throws an error | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 'digest:sha1': '0' * 40} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted: | ||||
sha1 mismatch: expected 0000000000000000000000000000000000000000, got 2c880cfec23cff7d8f80c2f12958d1563cbdaba6 | ||||
[255] | ||||
Multiple hash digests can be given | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:02de42196ebe | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm -rf clone | ||||
If either of the multiple hash digests mismatches, an error is thrown | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': '0' * 32, 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted: | ||||
md5 mismatch: expected 00000000000000000000000000000000, got e22172c2907ef88794b7bea6642c2394 | ||||
[255] | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': '0' * 40} | ||||
> EOF | ||||
$ hg clone ssh://user@dummy/repo clone | ||||
requesting all changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 8 changesets with 7 changes to 7 files (+2 heads) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted: | ||||
sha1 mismatch: expected 0000000000000000000000000000000000000000, got 2c880cfec23cff7d8f80c2f12958d1563cbdaba6 | ||||
[255] | ||||
Corruption tests | ||||
$ hg clone orig clone -r 2 | ||||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 3 changesets with 3 changes to 3 files | ||||
Denis Laxalde
|
r34662 | new changesets cd010b8cd998:5fddd98957c8 | ||
Mike Hommey
|
r23029 | updating to branch default | ||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/bundle4.hg bundle4.hg | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle5.hg', 'size': 578, 'digests': 'sha1', 'digest:sha1': '0' * 40} | ||||
> changegroup 0:6 7 | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 1 changes to 1 files | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bundle at http://localhost:$HGPORT/bundle5.hg is corrupted: | ||||
sha1 mismatch: expected 0000000000000000000000000000000000000000, got f29485d6bfd37db99983cfc95ecb52f8ca396106 | ||||
[255] | ||||
The entire transaction has been rolled back in the pull above | ||||
$ hg -R clone log -G | ||||
@ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | ||||
o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
| | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
No params | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: remote-changegroup: missing "url" param | ||
[255] | ||||
Missing size | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg'} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: remote-changegroup: missing "size" param | ||
[255] | ||||
Invalid size | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 'foo'} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: remote-changegroup: invalid value for param "size" | ||
[255] | ||||
Size mismatch | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 42} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files (+1 heads) | ||||
transaction abort! | ||||
rollback completed | ||||
abort: bundle at http://localhost:$HGPORT/bundle4.hg is corrupted: | ||||
size mismatch: expected 42, got 581 | ||||
[255] | ||||
Unknown digest | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'foo', 'digest:foo': 'bar'} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
abort: missing support for remote-changegroup - digest:foo | ||||
Mike Hommey
|
r23029 | [255] | ||
Missing digest | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'sha1'} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: remote-changegroup: missing "digest:sha1" param | ||
[255] | ||||
Not an HTTP url | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> raw-remote-changegroup {'url': 'ssh://localhost:$HGPORT/bundle4.hg', 'size': 581} | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: remote-changegroup does not support ssh urls | ||
[255] | ||||
Not a bundle | ||||
$ cat > notbundle.hg << EOF | ||||
> foo | ||||
> EOF | ||||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/notbundle.hg notbundle.hg | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: http://localhost:$HGPORT/notbundle.hg: not a Mercurial bundle | ||
[255] | ||||
Not a bundle 1.0 | ||||
$ cat > notbundle10.hg << EOF | ||||
Pierre-Yves David
|
r24686 | > HG20 | ||
Mike Hommey
|
r23029 | > EOF | ||
$ cat > repo/.hg/bundle2maker << EOF | ||||
> remote-changegroup http://localhost:$HGPORT/notbundle10.hg notbundle10.hg | ||||
> EOF | ||||
$ hg pull -R clone ssh://user@dummy/repo | ||||
pulling from ssh://user@dummy/repo | ||||
searching for changes | ||||
Pierre-Yves David
|
r24686 | remote: remote-changegroup | ||
Mike Hommey
|
r23029 | abort: http://localhost:$HGPORT/notbundle10.hg: not a bundle version 1.0 | ||
[255] | ||||
$ hg -R clone log -G | ||||
@ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C | ||||
| | ||||
o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B | ||||
| | ||||
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A | ||||
$ rm -rf clone | ||||
Matt Mackall
|
r25474 | $ killdaemons.py | ||