##// END OF EJS Templates
wireprotov2: define and implement "manifestdata" command...
wireprotov2: define and implement "manifestdata" command The added command can be used for obtaining manifest data. Given a manifest path and set of manifest nodes, data about manifests can be retrieved. Unlike changeset data, we wish to emit deltas to describe manifest revisions. So the command uses the relatively new API for building delta requests and emitting them. The code calls into deltaparent(), which I'm not very keen of. There's still work to be done in delta generation land so implementation details of storage (e.g. exactly one delta is stored/available) don't creep into higher levels. But we can worry about this later (there is already a TODO on imanifestorage tracking this). On the subject of parent deltas, the server assumes parent revisions exist on the receiving end. This is obviously wrong for shallow clone. I've added TODOs to add a mechanism to the command to allow clients to specify desired behavior. This shouldn't be too difficult to implement. Another big change is that the client must explicitly request manifest nodes to retrieve. This is a major departure from "getbundle," where the server derives relevant manifests as it iterates changesets and sends them automatically. As implemented, the client must transmit each requested node to the server. At 20 bytes per node, we're looking at 2 MB per 100,000 nodes. Plus wire encoding overhead. This isn't ideal for clients with limited upload bandwidth. I plan to address this in the future by allowing alternate mechanisms for defining the revisions to retrieve. One idea is to define a range of changeset revisions whose manifest revisions to retrieve (similar to how "changesetdata" works). We almost certainly want an API to look up an individual manifest by node. And that's where I've chosen to start with the implementation. Again, a theme of this early exchangev2 work is I want to start by building primitives for accessing raw repository data first and see how far we can get with those before we need more complexity. Differential Revision: https://phab.mercurial-scm.org/D4488
Gregory Szorc -
r39673:c7a7c7e8 default
Show More
Name Size Modified Last Commit Author
/ tests
artifacts
blacklists
bundles
gpg
sslcerts
svn
testlib
README Loading ...
autodiff.py Loading ...
badserverext.py Loading ...
basic_test_result.py Loading ...
binfile.bin Loading ...
blackbox-readonly-dispatch.py Loading ...
bruterebase.py Loading ...
bzr-definitions Loading ...
cgienv Loading ...
check-gendoc Loading ...
check-perf-code.py Loading ...
common-pattern.py Loading ...
crashgetbundler.py Loading ...
drawdag.py Loading ...
dumbhttp.py Loading ...
dummysmtpd.py Loading ...
dummyssh Loading ...
f Loading ...
failfilemerge.py Loading ...
fakedirstatewritetime.py Loading ...
fakemergerecord.py Loading ...
fakepatchtime.py Loading ...
filterpyflakes.py Loading ...
flagprocessorext.py Loading ...
fsmonitor-run-tests.py Loading ...
generate-working-copy-states.py Loading ...
get-with-headers.py Loading ...
helper-runtests.sh Loading ...
helpers-testrepo.sh Loading ...
heredoctest.py Loading ...
hghave Loading ...
hghave.py Loading ...
hgterm.ti Loading ...
hgweberror.py Loading ...
histedit-helpers.sh Loading ...
hypothesishelpers.py Loading ...
killdaemons.py Loading ...
library-infinitepush.sh Loading ...
list-tree.py Loading ...
lockdelay.py Loading ...
logexceptions.py Loading ...
md5sum.py Loading ...
missing-comment.hg Loading ...
mockblackbox.py Loading ...
mocktime.py Loading ...
narrow-library.sh Loading ...
notcapable Loading ...
pdiff Loading ...
printenv.py Loading ...
printrevset.py Loading ...
readlink.py Loading ...
revlog-formatv0.py Loading ...
revnamesext.py Loading ...
run-tests.py Loading ...
seq.py Loading ...
silenttestrunner.py Loading ...
simplestorerepo.py Loading ...
sitecustomize.py Loading ...
sshprotoext.py Loading ...
svn-safe-append.py Loading ...
svnxml.py Loading ...
test-abort-checkin.t Loading ...
test-absorb-edit-lines.t Loading ...
test-absorb-filefixupstate.py Loading ...
test-absorb-phase.t Loading ...
test-absorb-rename.t Loading ...
test-absorb-strip.t Loading ...
test-absorb.t Loading ...
test-acl.t Loading ...
test-add.t Loading ...
test-addremove-similar.t Loading ...
test-addremove.t Loading ...
test-alias.t Loading ...
test-amend-subrepo.t Loading ...
test-amend.t Loading ...
test-ancestor.py Loading ...
test-ancestor.py.out Loading ...
test-annotate.py Loading ...
test-annotate.t Loading ...
test-arbitraryfilectx.t Loading ...
test-archive-symlinks.t Loading ...
test-archive.t Loading ...
test-atomictempfile.py Loading ...
test-audit-path.t Loading ...
test-audit-subrepo.t Loading ...
test-automv.t Loading ...
test-backout.t Loading ...
test-backwards-remove.t Loading ...
test-bad-extension.t Loading ...
test-bad-pull.t Loading ...
test-basic.t Loading ...
test-batching.py Loading ...
test-batching.py.out Loading ...
test-bdiff.py Loading ...
test-bheads.t Loading ...
test-bisect.t Loading ...
test-bisect2.t Loading ...
test-bisect3.t Loading ...
test-blackbox.t Loading ...
test-bookmarks-current.t Loading ...
test-bookmarks-merge.t Loading ...
test-bookmarks-pushpull.t Loading ...
test-bookmarks-rebase.t Loading ...
test-bookmarks-strip.t Loading ...
test-bookmarks.t Loading ...
test-branch-change.t Loading ...
test-branch-option.t Loading ...
test-branch-tag-confict.t Loading ...
test-branches.t Loading ...
test-bugzilla.t Loading ...
test-bundle-phases.t Loading ...
test-bundle-r.t Loading ...
test-bundle-type.t Loading ...
test-bundle-vs-outgoing.t Loading ...
test-bundle.t Loading ...
test-bundle2-exchange.t Loading ...
test-bundle2-format.t Loading ...
test-bundle2-multiple-changegroups.t Loading ...
test-bundle2-pushback.t Loading ...
test-bundle2-remote-changegroup.t Loading ...
test-cache-abuse.t Loading ...
test-cappedreader.py Loading ...
test-casecollision-merge.t Loading ...
test-casecollision.t Loading ...
test-casefolding.t Loading ...
test-cat.t Loading ...
test-cbor.py Loading ...
test-censor.t Loading ...
test-changelog-exec.t Loading ...
test-check-clang-format.t Loading ...
test-check-code.t Loading ...
test-check-commit.t Loading ...
test-check-config.t Loading ...
test-check-execute.t Loading ...
test-check-help.t Loading ...
test-check-interfaces.py Loading ...
test-check-interfaces.py.out Loading ...
test-check-jshint.t Loading ...
test-check-module-imports.t Loading ...
test-check-py3-compat.t Loading ...
test-check-pyflakes.t Loading ...
test-check-pylint.t Loading ...
test-check-shbang.t Loading ...
test-chg.t Loading ...
test-children.t Loading ...
test-churn.t Loading ...
test-clone-cgi.t Loading ...
test-clone-pull-corruption.t Loading ...
test-clone-r.t Loading ...
test-clone-uncompressed.t Loading ...
test-clone-update-order.t Loading ...
test-clone.t Loading ...
test-clonebundles.t Loading ...
test-commandserver.t Loading ...
test-commit-amend.t Loading ...
test-commit-interactive-curses.t Loading ...
test-commit-interactive.t Loading ...
test-commit-multiple.t Loading ...
test-commit-unresolved.t Loading ...
test-commit.t Loading ...
test-committer.t Loading ...
test-completion.t Loading ...
test-config-env.py Loading ...
test-config-env.py.out Loading ...
test-config.t Loading ...
test-conflict.t Loading ...
test-confused-revert.t Loading ...
test-context-metadata.t Loading ...
test-context.py Loading ...
test-context.py.out Loading ...
test-contrib-check-code.t Loading ...
test-contrib-check-commit.t Loading ...
test-contrib-dumprevlog.t Loading ...
test-contrib-perf.t Loading ...
test-contrib-relnotes.t Loading ...
test-contrib.t Loading ...
test-convert-authormap.t Loading ...
test-convert-baz.t Loading ...
test-convert-bzr-114.t Loading ...
test-convert-bzr-directories.t Loading ...
test-convert-bzr-ghosts.t Loading ...
test-convert-bzr-merges.t Loading ...
test-convert-bzr-treeroot.t Loading ...
test-convert-bzr.t Loading ...
test-convert-clonebranches.t Loading ...
test-convert-cvs-branch.t Loading ...
test-convert-cvs-detectmerge.t Loading ...
test-convert-cvs-synthetic.t Loading ...
test-convert-cvs.t Loading ...
test-convert-cvsnt-mergepoints.rlog Loading ...
test-convert-cvsnt-mergepoints.t Loading ...
test-convert-darcs.t Loading ...
test-convert-datesort.t Loading ...
test-convert-filemap.t Loading ...
test-convert-git.t Loading ...
test-convert-hg-sink.t Loading ...
test-convert-hg-source.t Loading ...
test-convert-hg-startrev.t Loading ...
test-convert-hg-svn.t Loading ...
test-convert-mtn.t Loading ...
test-convert-p4-filetypes.t Loading ...
test-convert-p4.t Loading ...
test-convert-splicemap.t Loading ...
test-convert-svn-branches.t Loading ...
test-convert-svn-encoding.t Loading ...
test-convert-svn-move.t Loading ...
test-convert-svn-sink.t Loading ...
test-convert-svn-source.t Loading ...
test-convert-svn-startrev.t Loading ...
test-convert-svn-tags.t Loading ...
test-convert-tagsbranch-topology.t Loading ...
test-convert-tla.t Loading ...
test-convert.t Loading ...
test-copy-move-merge.t Loading ...
test-copy.t Loading ...
test-copytrace-heuristics.t Loading ...
test-custom-filters.t Loading ...
test-debian-packages.t Loading ...
test-debugbuilddag.t Loading ...
test-debugbundle.t Loading ...
test-debugcommands.t Loading ...
test-debugextensions.t Loading ...
test-debugindexdot.t Loading ...
test-debugrename.t Loading ...
test-default-push.t Loading ...
test-demandimport.py Loading ...
test-demandimport.py.out Loading ...
test-devel-warnings.t Loading ...
test-diff-antipatience.t Loading ...
test-diff-binary-file.t Loading ...
test-diff-change.t Loading ...
test-diff-color.t Loading ...
test-diff-copy-depth.t Loading ...
test-diff-hashes.t Loading ...
test-diff-ignore-whitespace.t Loading ...
test-diff-indent-heuristic.t Loading ...
test-diff-issue2761.t Loading ...
test-diff-newlines.t Loading ...
test-diff-reverse.t Loading ...
test-diff-subdir.t Loading ...
test-diff-unified.t Loading ...
test-diff-upgrade.t Loading ...
test-diffdir.t Loading ...
test-diffstat.t Loading ...
test-directaccess.t Loading ...
test-dirstate-backup.t Loading ...
test-dirstate-nonnormalset.t Loading ...
test-dirstate-race.t Loading ...
test-dirstate.t Loading ...
test-dispatch.py Loading ...
test-dispatch.py.out Loading ...
test-dispatch.t Loading ...
test-docker-packaging.t Loading ...
test-doctest.py Loading ...
test-double-merge.t Loading ...
test-drawdag.t Loading ...
test-duplicateoptions.py Loading ...
test-editor-filename.t Loading ...
test-empty-dir.t Loading ...
test-empty-file.t Loading ...
test-empty-group.t Loading ...
test-empty.t Loading ...
test-encode.t Loading ...
test-encoding-align.t Loading ...
test-encoding-func.py Loading ...
test-encoding-textwrap.t Loading ...
test-encoding.t Loading ...
test-eol-add.t Loading ...
test-eol-clone.t Loading ...
test-eol-hook.t Loading ...
test-eol-patch.t Loading ...
test-eol-tag.t Loading ...
test-eol-update.t Loading ...
test-eol.t Loading ...
test-eolfilename.t Loading ...
test-excessive-merge.t Loading ...
test-exchange-obsmarkers-case-A1.t Loading ...
test-exchange-obsmarkers-case-A2.t Loading ...
test-exchange-obsmarkers-case-A3.t Loading ...
test-exchange-obsmarkers-case-A4.t Loading ...
test-exchange-obsmarkers-case-A5.t Loading ...
test-exchange-obsmarkers-case-A6.t Loading ...
test-exchange-obsmarkers-case-A7.t Loading ...
test-exchange-obsmarkers-case-B1.t Loading ...
test-exchange-obsmarkers-case-B2.t Loading ...
test-exchange-obsmarkers-case-B3.t Loading ...
test-exchange-obsmarkers-case-B4.t Loading ...
test-exchange-obsmarkers-case-B5.t Loading ...
test-exchange-obsmarkers-case-B6.t Loading ...
test-exchange-obsmarkers-case-B7.t Loading ...
test-exchange-obsmarkers-case-C1.t Loading ...
test-exchange-obsmarkers-case-C2.t Loading ...
test-exchange-obsmarkers-case-C3.t Loading ...
test-exchange-obsmarkers-case-C4.t Loading ...
test-exchange-obsmarkers-case-D1.t Loading ...
test-exchange-obsmarkers-case-D2.t Loading ...
test-exchange-obsmarkers-case-D3.t Loading ...
test-exchange-obsmarkers-case-D4.t Loading ...
test-execute-bit.t Loading ...
test-export.t Loading ...
test-extdata.t Loading ...
test-extdiff.t Loading ...
test-extension-timing.t Loading ...
test-extension.t Loading ...
test-extensions-afterloaded.t Loading ...
test-extensions-wrapfunction.py Loading ...
test-extensions-wrapfunction.py.out Loading ...
test-extra-filelog-entry.t Loading ...
test-fastannotate-corrupt.t Loading ...
test-fastannotate-diffopts.t Loading ...
test-fastannotate-hg.t Loading ...
test-fastannotate-perfhack.t Loading ...
test-fastannotate-protocol.t Loading ...
test-fastannotate-renames.t Loading ...
test-fastannotate-revmap.py Loading ...
test-fastannotate.t Loading ...
test-fetch.t Loading ...
test-filebranch.t Loading ...
test-filecache.py Loading ...
test-filecache.py.out Loading ...
test-filelog.py Loading ...
test-filelog.py.out Loading ...
test-fileset-generated.t Loading ...
test-fileset.t Loading ...
test-fix-clang-format.t Loading ...
test-fix-topology.t Loading ...
test-fix.t Loading ...
test-flagprocessor.t Loading ...
test-flags.t Loading ...
test-fncache.t Loading ...
test-fuzz-targets.t Loading ...
test-gendoc-da.t Loading ...
test-gendoc-de.t Loading ...
test-gendoc-el.t Loading ...
test-gendoc-fr.t Loading ...
test-gendoc-it.t Loading ...
test-gendoc-ja.t Loading ...
test-gendoc-pt_BR.t Loading ...
test-gendoc-ro.t Loading ...
test-gendoc-ru.t Loading ...
test-gendoc-sv.t Loading ...
test-gendoc-zh_CN.t Loading ...
test-gendoc-zh_TW.t Loading ...
test-gendoc.t Loading ...
test-generaldelta.t Loading ...
test-getbundle.t Loading ...
test-git-export.t Loading ...
test-githelp.t Loading ...
test-globalopts.t Loading ...
test-glog-beautifygraph.t Loading ...
test-glog-topological.t Loading ...
test-glog.t Loading ...
test-gpg.t Loading ...
test-graft.t Loading ...
test-grep.t Loading ...
test-hardlinks.t Loading ...
test-help.t Loading ...
test-hg-parseurl.py Loading ...
test-hghave.t Loading ...
test-hgignore.t Loading ...
test-hgk.t Loading ...
test-hgrc.t Loading ...
test-hgweb-annotate-whitespace.t Loading ...
test-hgweb-auth.py Loading ...
test-hgweb-auth.py.out Loading ...
test-hgweb-bundle.t Loading ...
test-hgweb-commands.t Loading ...
test-hgweb-csp.t Loading ...
test-hgweb-descend-empties.t Loading ...
test-hgweb-diffs.t Loading ...
test-hgweb-empty.t Loading ...
test-hgweb-filelog.t Loading ...
test-hgweb-json.t Loading ...
test-hgweb-no-path-info.t Loading ...
test-hgweb-no-request-uri.t Loading ...
test-hgweb-non-interactive.t Loading ...
test-hgweb-raw.t Loading ...
test-hgweb-removed.t Loading ...
test-hgweb-symrev.t Loading ...
test-hgweb.t Loading ...
test-hgwebdir-paths.py Loading ...
test-hgwebdir.t Loading ...
test-hgwebdirsym.t Loading ...
test-highlight.t Loading ...
test-histedit-arguments.t Loading ...
test-histedit-base.t Loading ...
test-histedit-bookmark-motion.t Loading ...
test-histedit-commute.t Loading ...
test-histedit-drop.t Loading ...
test-histedit-edit.t Loading ...
test-histedit-fold-non-commute.t Loading ...
test-histedit-fold.t Loading ...
test-histedit-no-backup.t Loading ...
test-histedit-no-change.t Loading ...
test-histedit-non-commute-abort.t Loading ...
test-histedit-non-commute.t Loading ...
test-histedit-obsolete.t Loading ...
test-histedit-outgoing.t Loading ...
test-histedit-templates.t Loading ...
test-hook.t Loading ...
test-http-api-httpv2.t Loading ...
test-http-api.t Loading ...
test-http-bad-server.t Loading ...
test-http-branchmap.t Loading ...
test-http-bundle1.t Loading ...
test-http-clone-r.t Loading ...
test-http-permissions.t Loading ...
test-http-protocol.t Loading ...
test-http-proxy.t Loading ...
test-http.t Loading ...
test-https.t Loading ...
test-hybridencode.py Loading ...
test-i18n.t Loading ...
test-identify.t Loading ...
test-impexp-branch.t Loading ...
test-import-bypass.t Loading ...
test-import-context.t Loading ...
test-import-eol.t Loading ...
test-import-git.t Loading ...
test-import-merge.t Loading ...
test-import-unknown.t Loading ...
test-import.t Loading ...
test-imports-checker.t Loading ...
test-incoming-outgoing.t Loading ...
test-infinitepush-bundlestore.t Loading ...
test-infinitepush-ci.t Loading ...
test-infinitepush.t Loading ...
test-inherit-mode.t Loading ...
test-init.t Loading ...
test-install.t Loading ...
test-issue1089.t Loading ...
test-issue1102.t Loading ...
test-issue1175.t Loading ...
test-issue1306.t Loading ...
test-issue1438.t Loading ...
test-issue1502.t Loading ...
test-issue1802.t Loading ...
test-issue1877.t Loading ...
test-issue1993.t Loading ...
test-issue2137.t Loading ...
test-issue3084.t Loading ...
test-issue4074.t Loading ...
test-issue522.t Loading ...
test-issue586.t Loading ...
test-issue5979.t Loading ...
test-issue612.t Loading ...
test-issue619.t Loading ...
test-issue660.t Loading ...
test-issue672.t Loading ...
test-issue842.t Loading ...
test-journal-exists.t Loading ...
test-journal-share.t Loading ...
test-journal.t Loading ...
test-keyword.t Loading ...
test-known.t Loading ...
test-largefiles-cache.t Loading ...
test-largefiles-misc.t Loading ...
test-largefiles-small-disk.t Loading ...
test-largefiles-update.t Loading ...
test-largefiles-wireproto.t Loading ...
test-largefiles.t Loading ...
test-lfconvert.t Loading ...
test-lfs-bundle.t Loading ...
test-lfs-largefiles.t Loading ...
test-lfs-pointer.py Loading ...
test-lfs-pointer.py.out Loading ...
test-lfs-serve-access.t Loading ...
test-lfs-serve.t Loading ...
test-lfs-test-server.t Loading ...
test-lfs.t Loading ...
test-linelog.py Loading ...
test-linerange.py Loading ...
test-locate.t Loading ...
test-lock-badness.t Loading ...
test-lock.py Loading ...
test-log-exthook.t Loading ...
test-log-linerange.t Loading ...
test-log.t Loading ...
test-logexchange.t Loading ...
test-logtoprocess.t Loading ...
test-lrucachedict.py Loading ...
test-mac-packages.t Loading ...
test-mactext.t Loading ...
test-mailmap.t Loading ...
test-manifest-merging.t Loading ...
test-manifest.py Loading ...
test-manifest.t Loading ...
test-match.py Loading ...
test-mdiff.py Loading ...
test-merge-changedelete.t Loading ...
test-merge-closedheads.t Loading ...
test-merge-commit.t Loading ...
test-merge-criss-cross.t Loading ...
test-merge-default.t Loading ...
test-merge-force.t Loading ...
test-merge-halt.t Loading ...
test-merge-internal-tools-pattern.t Loading ...
test-merge-local.t Loading ...
test-merge-no-file-change.t Loading ...
test-merge-remove.t Loading ...
test-merge-revert.t Loading ...
test-merge-revert2.t Loading ...
test-merge-subrepos.t Loading ...
test-merge-symlinks.t Loading ...
test-merge-tools.t Loading ...
test-merge-types.t Loading ...
test-merge1.t Loading ...
test-merge10.t Loading ...
test-merge2.t Loading ...
test-merge4.t Loading ...
test-merge5.t Loading ...
test-merge6.t Loading ...
test-merge7.t Loading ...
test-merge8.t Loading ...
test-merge9.t Loading ...
test-minifileset.py Loading ...
test-minirst.py Loading ...
test-minirst.py.out Loading ...
test-mq-eol.t Loading ...
test-mq-git.t Loading ...
test-mq-guards.t Loading ...
test-mq-header-date.t Loading ...
test-mq-header-from.t Loading ...
test-mq-merge.t Loading ...
test-mq-missingfiles.t Loading ...
test-mq-pull-from-bundle.t Loading ...
test-mq-qclone-http.t Loading ...
test-mq-qdelete.t Loading ...
test-mq-qdiff.t Loading ...
test-mq-qfold.t Loading ...
test-mq-qgoto.t Loading ...
test-mq-qimport-fail-cleanup.t Loading ...
test-mq-qimport.t Loading ...
test-mq-qnew.t Loading ...
test-mq-qpush-exact.t Loading ...
test-mq-qpush-fail.t Loading ...
test-mq-qqueue.t Loading ...
test-mq-qrefresh-interactive.t Loading ...
test-mq-qrefresh-replace-log-message.t Loading ...
test-mq-qrefresh.t Loading ...
test-mq-qrename.t Loading ...
test-mq-qsave.t Loading ...
test-mq-safety.t Loading ...
test-mq-subrepo-svn.t Loading ...
test-mq-subrepo.t Loading ...
test-mq-symlinks.t Loading ...
test-mq.t Loading ...
test-mv-cp-st-diff.t Loading ...
test-narrow-acl.t Loading ...
test-narrow-archive.t Loading ...
test-narrow-clone-no-ellipsis.t Loading ...
test-narrow-clone-non-narrow-server.t Loading ...
test-narrow-clone-nonlinear.t Loading ...
test-narrow-clone.t Loading ...
test-narrow-commit.t Loading ...
test-narrow-copies.t Loading ...
test-narrow-debugcommands.t Loading ...
test-narrow-debugrebuilddirstate.t Loading ...
test-narrow-exchange-merges.t Loading ...
test-narrow-exchange.t Loading ...
test-narrow-expanddirstate.t Loading ...
test-narrow-merge.t Loading ...
test-narrow-patch.t Loading ...
test-narrow-patterns.t Loading ...
test-narrow-pull.t Loading ...
test-narrow-rebase.t Loading ...
test-narrow-shallow-merges.t Loading ...
test-narrow-shallow.t Loading ...
test-narrow-strip.t Loading ...
test-narrow-trackedcmd.t Loading ...
test-narrow-update.t Loading ...
test-narrow-widen-no-ellipsis.t Loading ...
test-narrow-widen.t Loading ...
test-narrow.t Loading ...
test-nested-repo.t Loading ...
test-newbranch.t Loading ...
test-newcgi.t Loading ...
test-newercgi.t Loading ...
test-no-symlinks.t Loading ...
test-nointerrupt.t Loading ...
test-notify-changegroup.t Loading ...
test-notify.t Loading ...
test-obshistory.t Loading ...
test-obsmarker-template.t Loading ...
test-obsmarkers-effectflag.t Loading ...
test-obsolete-bounds-checking.t Loading ...
test-obsolete-bundle-strip.t Loading ...
test-obsolete-changeset-exchange.t Loading ...
test-obsolete-checkheads.t Loading ...
test-obsolete-distributed.t Loading ...
test-obsolete-divergent.t Loading ...
test-obsolete-tag-cache.t Loading ...
test-obsolete.t Loading ...
test-oldcgi.t Loading ...
test-origbackup-conflict.t Loading ...
test-pager-legacy.t Loading ...
test-pager.t Loading ...
test-parents.t Loading ...
test-parse-date.t Loading ...
test-parseindex.t Loading ...
test-parseindex2.py Loading ...
test-patch-offset.t Loading ...
test-patch.t Loading ...
test-patchbomb-bookmark.t Loading ...
test-patchbomb-tls.t Loading ...
test-patchbomb.t Loading ...
test-pathconflicts-basic.t Loading ...
test-pathconflicts-merge.t Loading ...
test-pathconflicts-update.t Loading ...
test-pathencode.py Loading ...
test-paths.t Loading ...
test-pending.t Loading ...
test-permissions.t Loading ...
test-phases-exchange.t Loading ...
test-phases.t Loading ...
test-profile.t Loading ...
test-progress.t Loading ...
test-propertycache.py Loading ...
test-propertycache.py.out Loading ...
test-pull-branch.t Loading ...
test-pull-bundle.t Loading ...
test-pull-http.t Loading ...
test-pull-permission.t Loading ...
test-pull-pull-corruption.t Loading ...
test-pull-r.t Loading ...
test-pull-update.t Loading ...
test-pull.t Loading ...
test-purge.t Loading ...
test-push-cgi.t Loading ...
test-push-checkheads-partial-C1.t Loading ...
test-push-checkheads-partial-C2.t Loading ...
test-push-checkheads-partial-C3.t Loading ...
test-push-checkheads-partial-C4.t Loading ...
test-push-checkheads-pruned-B1.t Loading ...
test-push-checkheads-pruned-B2.t Loading ...
test-push-checkheads-pruned-B3.t Loading ...
test-push-checkheads-pruned-B4.t Loading ...
test-push-checkheads-pruned-B5.t Loading ...
test-push-checkheads-pruned-B6.t Loading ...
test-push-checkheads-pruned-B7.t Loading ...
test-push-checkheads-pruned-B8.t Loading ...
test-push-checkheads-superceed-A1.t Loading ...
test-push-checkheads-superceed-A2.t Loading ...
test-push-checkheads-superceed-A3.t Loading ...
test-push-checkheads-superceed-A4.t Loading ...
test-push-checkheads-superceed-A5.t Loading ...
test-push-checkheads-superceed-A6.t Loading ...
test-push-checkheads-superceed-A7.t Loading ...
test-push-checkheads-superceed-A8.t Loading ...
test-push-checkheads-unpushed-D1.t Loading ...
test-push-checkheads-unpushed-D2.t Loading ...
test-push-checkheads-unpushed-D3.t Loading ...
test-push-checkheads-unpushed-D4.t Loading ...
test-push-checkheads-unpushed-D5.t Loading ...
test-push-checkheads-unpushed-D6.t Loading ...
test-push-checkheads-unpushed-D7.t Loading ...
test-push-http.t Loading ...
test-push-race.t Loading ...
test-push-warn.t Loading ...
test-push.t Loading ...
test-pushvars.t Loading ...
test-qrecord.t Loading ...
test-rebase-abort.t Loading ...
test-rebase-backup.t Loading ...
test-rebase-base-flag.t Loading ...
test-rebase-bookmarks.t Loading ...
test-rebase-brute-force.t Loading ...
test-rebase-cache.t Loading ...
test-rebase-check-restore.t Loading ...
test-rebase-collapse.t Loading ...
test-rebase-conflicts.t Loading ...
test-rebase-dest.t Loading ...
test-rebase-detach.t Loading ...
test-rebase-emptycommit.t Loading ...
test-rebase-inmemory.t Loading ...
test-rebase-interruptions.t Loading ...
test-rebase-issue-noparam-single-rev.t Loading ...
test-rebase-legacy.t Loading ...
test-rebase-mq-skip.t Loading ...
test-rebase-mq.t Loading ...
test-rebase-named-branches.t Loading ...
test-rebase-newancestor.t Loading ...
test-rebase-obsolete.t Loading ...
test-rebase-parameters.t Loading ...
test-rebase-partial.t Loading ...
test-rebase-pull.t Loading ...
test-rebase-rename.t Loading ...
test-rebase-scenario-global.t Loading ...
test-rebase-templates.t Loading ...
test-rebase-transaction.t Loading ...
test-rebuildstate.t Loading ...
test-record.t Loading ...
test-releasenotes-formatting.t Loading ...
test-releasenotes-merging.t Loading ...
test-releasenotes-parsing.t Loading ...
test-relink.t Loading ...
test-remove.t Loading ...
test-removeemptydirs.t Loading ...
test-rename-after-merge.t Loading ...
test-rename-dir-merge.t Loading ...
test-rename-merge1.t Loading ...
test-rename-merge2.t Loading ...
test-rename.t Loading ...
test-repair-strip.t Loading ...
test-repo-compengines.t Loading ...
test-requires.t Loading ...
test-resolve.t Loading ...
test-revert-flags.t Loading ...
test-revert-interactive.t Loading ...
test-revert-unknown.t Loading ...
test-revert.t Loading ...
test-revisions.t Loading ...
test-revlog-ancestry.py Loading ...
test-revlog-ancestry.py.out Loading ...
test-revlog-group-emptyiter.t Loading ...
test-revlog-mmapindex.t Loading ...
test-revlog-packentry.t Loading ...
test-revlog-raw.py Loading ...
test-revlog-raw.py.out Loading ...
test-revlog-v2.t Loading ...
test-revlog.t Loading ...
test-revset-dirstate-parents.t Loading ...
test-revset-legacy-lookup.t Loading ...
test-revset-outgoing.t Loading ...
test-revset.t Loading ...
test-revset2.t Loading ...
test-rollback.t Loading ...
test-run-tests.py Loading ...
test-run-tests.t Loading ...
test-schemes.t Loading ...
test-serve.t Loading ...
test-setdiscovery.t Loading ...
test-share.t Loading ...
test-shelve.t Loading ...
test-show-stack.t Loading ...
test-show-work.t Loading ...
test-show.t Loading ...
test-simple-update.t Loading ...
test-simplekeyvaluefile.py Loading ...
test-simplemerge.py Loading ...
test-simplemerge.py.out Loading ...
test-single-head.t Loading ...
test-sparse-clear.t Loading ...
test-sparse-clone.t Loading ...
test-sparse-fsmonitor.t Loading ...
test-sparse-import.t Loading ...
test-sparse-merges.t Loading ...
test-sparse-profiles.t Loading ...
test-sparse-requirement.t Loading ...
test-sparse-revlog.t Loading ...
test-sparse-verbose-json.t Loading ...
test-sparse.t Loading ...
test-split.t Loading ...
test-ssh-bundle1.t Loading ...
test-ssh-clone-r.t Loading ...
test-ssh-proto-unbundle.t Loading ...
test-ssh-proto.t Loading ...
test-ssh-repoerror.t Loading ...
test-ssh.t Loading ...
test-sshserver.py Loading ...
test-stack.t Loading ...
test-static-http.t Loading ...
test-status-color.t Loading ...
test-status-inprocess.py Loading ...
test-status-inprocess.py.out Loading ...
test-status-rev.t Loading ...
test-status-terse.t Loading ...
test-status.t Loading ...
test-stream-bundle-v2.t Loading ...
test-strict.t Loading ...
test-strip-cross.t Loading ...
test-strip.t Loading ...
test-subrepo-deep-nested-change.t Loading ...
test-subrepo-git.t Loading ...
test-subrepo-missing.t Loading ...
test-subrepo-paths.t Loading ...
test-subrepo-recursion.t Loading ...
test-subrepo-relative-path.t Loading ...
test-subrepo-svn.t Loading ...
test-subrepo.t Loading ...
test-symlink-os-yes-fs-no.py Loading ...
test-symlink-os-yes-fs-no.py.out Loading ...
test-symlink-placeholder.t Loading ...
test-symlinks.t Loading ...
test-tag.t Loading ...
test-tags.t Loading ...
test-template-basic.t Loading ...
test-template-functions.t Loading ...
test-template-keywords.t Loading ...
test-template-map.t Loading ...
test-tools.t Loading ...
test-transplant.t Loading ...
test-treediscovery-legacy.t Loading ...
test-treediscovery.t Loading ...
test-treemanifest.t Loading ...
test-trusted.py Loading ...
test-trusted.py.out Loading ...
test-ui-color.py Loading ...
test-ui-color.py.out Loading ...
test-ui-config.py Loading ...
test-ui-config.py.out Loading ...
test-ui-verbosity.py Loading ...
test-ui-verbosity.py.out Loading ...
test-unamend.t Loading ...
test-unbundlehash.t Loading ...
test-uncommit.t Loading ...
test-unified-test.t Loading ...
test-unionrepo.t Loading ...
test-unrelated-pull.t Loading ...
test-up-local-change.t Loading ...
test-update-branches.t Loading ...
test-update-dest.t Loading ...
test-update-issue1456.t Loading ...
test-update-names.t Loading ...
test-update-reverse.t Loading ...
test-upgrade-repo.t Loading ...
test-url-download.t Loading ...
test-url-rev.t Loading ...
test-url.py Loading ...
test-username-newline.t Loading ...
test-util.py Loading ...
test-verify-repo-operations.py Loading ...
test-verify.t Loading ...
test-walk.t Loading ...
test-walkrepo.py Loading ...
test-websub.t Loading ...
test-win32text.t Loading ...
test-wireproto-clientreactor.py Loading ...
test-wireproto-command-branchmap.t Loading ...
test-wireproto-command-capabilities.t Loading ...
test-wireproto-command-changesetdata.t Loading ...
test-wireproto-command-heads.t Loading ...
test-wireproto-command-known.t Loading ...
test-wireproto-command-listkeys.t Loading ...
test-wireproto-command-lookup.t Loading ...
test-wireproto-command-manifestdata.t Loading ...
test-wireproto-command-pushkey.t Loading ...
test-wireproto-exchangev2.t Loading ...
test-wireproto-framing.py Loading ...
test-wireproto-serverreactor.py Loading ...
test-wireproto.py Loading ...
test-wireproto.py.out Loading ...
test-wireproto.t Loading ...
test-worker.t Loading ...
test-wsgirequest.py Loading ...
test-xdg.t Loading ...
tinyproxy.py Loading ...
wireprotohelpers.sh Loading ...

To run the tests, do:

cd tests/
python run-tests.py

See https://mercurial-scm.org/wiki/WritingTests for
more information on writing tests.