gitextract_90xaov2p/ ├── .gitignore ├── .gitmodules ├── CONTRIBUTORS ├── COPYING ├── INSTALL ├── README.md ├── documentation/ │ ├── concepts.txt │ ├── tutorials.txt │ └── user_faq.md ├── extend.py ├── install.py ├── installation/ │ ├── __init__.py │ ├── admin.py │ ├── config.py │ ├── criticctl.py │ ├── data/ │ │ ├── comments.pgsql │ │ ├── dbschema.base.sql │ │ ├── dbschema.changesets.sql │ │ ├── dbschema.comments.sql │ │ ├── dbschema.extensions.sql │ │ ├── dbschema.filters.sql │ │ ├── dbschema.git.sql │ │ ├── dbschema.news.sql │ │ ├── dbschema.preferences.sql │ │ ├── dbschema.reviews.sql │ │ ├── dbschema.trackedbranches.sql │ │ └── dbschema.users.sql │ ├── database.py │ ├── extensions.py │ ├── externals/ │ │ ├── .gitignore │ │ ├── MIT-LICENSE.Chosen.md │ │ └── MIT-LICENSE.jQuery.txt │ ├── files.py │ ├── git.py │ ├── httpd.py │ ├── initd.py │ ├── input.py │ ├── lifecycle.json │ ├── migrate.py │ ├── migrations/ │ │ ├── dbschema.altertable.branches.add.archived.py │ │ ├── dbschema.altertable.changesets.parent.dropnotnull.py │ │ ├── dbschema.altertable.commentchainchanges.addressed_by.py │ │ ├── dbschema.altertable.commentchainchanges.drop.review.py │ │ ├── dbschema.altertable.commentchainlines.drop.commit.py │ │ ├── dbschema.altertable.comments.time.setdefaultnow.py │ │ ├── dbschema.altertable.previousreachable.rebase.ondeletecascade.py │ │ ├── dbschema.altertable.repositories.drop.branch.py │ │ ├── dbschema.altertable.repositories.drop.relay.py │ │ ├── dbschema.altertable.reviewfilechanges.rename-columns.py │ │ ├── dbschema.altertable.reviewmergeconfirmations.add.tail.py │ │ ├── dbschema.altertable.reviewrebases.add.equivalent_merge.py │ │ ├── dbschema.altertable.reviewrebases.add.replayed_rebase.py │ │ ├── dbschema.altertable.reviewrecipientfilters.uid-can-be-null.py │ │ ├── dbschema.altertable.reviews.add.origin.py │ │ ├── dbschema.altertable.systemidentities.add.installed_sha1.installed_at.py │ │ ├── dbschema.altertable.systemidentities.url-prefix.py │ │ ├── dbschema.altertable.usergitemails.py │ │ ├── dbschema.altertable.usersessions.add.labels.py │ │ ├── dbschema.createindex.misc.py │ │ ├── dbschema.createtable.accesstokens.py │ │ ├── dbschema.createtable.knownremotes.py │ │ ├── dbschema.createtable.scheduledreviewbrancharchivals.py │ │ ├── dbschema.createtable.timezones.py │ │ ├── dbschema.createtable.useremails.py │ │ ├── dbschema.createtable.usersessions.py │ │ ├── dbschema.createtables.accesscontrol.py │ │ ├── dbschema.droptable.knownhosts.py │ │ ├── dbschema.extension-filterhook-role.py │ │ ├── dbschema.external-authentication.py │ │ ├── dbschema.files-and-directories.py │ │ ├── dbschema.fixup-extensionroles.py │ │ ├── dbschema.per-repository-or-filter-preferences.py │ │ ├── dbschema.review-constraints-tweaking.py │ │ ├── git.check-keepalive-references.py │ │ ├── git.clean-up-temporary-references.py │ │ ├── git.convert-replays-into-keepalives.py │ │ ├── git.rename-keepalive-chain.py │ │ ├── installation.config-pyc-file-permissions.py │ │ ├── news.filter-system-rewrite.py │ │ ├── news.review-branch-archival.py │ │ ├── news.review-quick-search.py │ │ └── preference.commit.diff.rulerColumn.py │ ├── paths.py │ ├── prefs.py │ ├── prereqs.py │ ├── process.py │ ├── qs/ │ │ ├── __init__.py │ │ ├── data.py │ │ └── sqlite.py │ ├── smtp.py │ ├── system.py │ ├── templates/ │ │ ├── apache/ │ │ │ ├── site.both │ │ │ ├── site.http │ │ │ └── site.https │ │ ├── configuration/ │ │ │ ├── __init__.py │ │ │ ├── auth.py │ │ │ ├── base.py │ │ │ ├── database.py │ │ │ ├── debug.py │ │ │ ├── executables.py │ │ │ ├── extensions.py │ │ │ ├── limits.py │ │ │ ├── mimetypes.py │ │ │ ├── paths.py │ │ │ ├── services.py │ │ │ ├── smtp-credentials.json │ │ │ └── smtp.py │ │ ├── criticctl │ │ ├── initd │ │ ├── nginx/ │ │ │ ├── site.both │ │ │ ├── site.http │ │ │ └── site.https │ │ └── uwsgi/ │ │ ├── app.backend.ini │ │ ├── app.frontend.ini.both │ │ ├── app.frontend.ini.http │ │ └── app.frontend.ini.https │ └── utils.py ├── pylint.rc ├── pythonversion.py ├── quickstart.py ├── src/ │ ├── api/ │ │ ├── __init__.py │ │ ├── accesscontrolprofile.py │ │ ├── accesstoken.py │ │ ├── apierror.py │ │ ├── apiobject.py │ │ ├── batch.py │ │ ├── branch.py │ │ ├── changeset.py │ │ ├── comment.py │ │ ├── commit.py │ │ ├── commitset.py │ │ ├── config.py │ │ ├── critic.py │ │ ├── extension.py │ │ ├── file.py │ │ ├── filechange.py │ │ ├── filecontent.py │ │ ├── filediff.py │ │ ├── filters.py │ │ ├── impl/ │ │ │ ├── __init__.py │ │ │ ├── accesscontrolprofile.py │ │ │ ├── accesstoken.py │ │ │ ├── apiobject.py │ │ │ ├── batch.py │ │ │ ├── branch.py │ │ │ ├── branch_unittest.py │ │ │ ├── changeset.py │ │ │ ├── changeset_unittest.py │ │ │ ├── comment.py │ │ │ ├── comment_unittest.py │ │ │ ├── commit.py │ │ │ ├── commit_unittest.py │ │ │ ├── commitset.py │ │ │ ├── commitset_unittest.py │ │ │ ├── config_unittest.py │ │ │ ├── critic.py │ │ │ ├── extension.py │ │ │ ├── file.py │ │ │ ├── filechange.py │ │ │ ├── filechange_unittest.py │ │ │ ├── filecontent.py │ │ │ ├── filediff.py │ │ │ ├── filediff_unittest.py │ │ │ ├── filters.py │ │ │ ├── labeledaccesscontrolprofile.py │ │ │ ├── log/ │ │ │ │ ├── __init__.py │ │ │ │ ├── partition.py │ │ │ │ ├── partition_unittest.py │ │ │ │ ├── rebase.py │ │ │ │ └── rebase_unittest.py │ │ │ ├── reply.py │ │ │ ├── reply_unittest.py │ │ │ ├── repository.py │ │ │ ├── repository_unittest.py │ │ │ ├── review.py │ │ │ ├── review_unittest.py │ │ │ ├── reviewablefilechange.py │ │ │ ├── reviewsummary.py │ │ │ ├── user.py │ │ │ └── user_unittest.py │ │ ├── labeledaccesscontrolprofile.py │ │ ├── log/ │ │ │ ├── __init__.py │ │ │ ├── partition.py │ │ │ └── rebase.py │ │ ├── preference.py │ │ ├── reply.py │ │ ├── repository.py │ │ ├── review.py │ │ ├── reviewablefilechange.py │ │ ├── reviewsummary.py │ │ ├── transaction/ │ │ │ ├── __init__.py │ │ │ ├── accesscontrolprofile.py │ │ │ ├── accesstoken.py │ │ │ ├── comment.py │ │ │ ├── filters.py │ │ │ ├── labeledaccesscontrolprofile.py │ │ │ ├── reply.py │ │ │ ├── review.py │ │ │ └── user.py │ │ └── user.py │ ├── auth/ │ │ ├── __init__.py │ │ ├── accesscontrol.py │ │ ├── database.py │ │ ├── databases/ │ │ │ ├── __init__.py │ │ │ ├── accesstokensdb.py │ │ │ ├── internaldb.py │ │ │ └── ldapdb.py │ │ ├── oauth.py │ │ ├── provider.py │ │ ├── providers/ │ │ │ ├── __init__.py │ │ │ ├── dummy.py │ │ │ ├── github.py │ │ │ └── google.py │ │ └── session.py │ ├── background/ │ │ ├── __init__.py │ │ ├── branchtracker.py │ │ ├── branchtrackerhook.py │ │ ├── changeset.py │ │ ├── daemon.py │ │ ├── extensionrunner.py │ │ ├── extensiontasks.py │ │ ├── githook.py │ │ ├── highlight.py │ │ ├── maildelivery.py │ │ ├── maintenance.py │ │ ├── servicemanager.py │ │ ├── utils.py │ │ ├── wait-for-pidfiles.py │ │ └── watchdog.py │ ├── base.py │ ├── base_unittest.py │ ├── changeset/ │ │ ├── __init__.py │ │ ├── client.py │ │ ├── create.py │ │ ├── detectmoves.py │ │ ├── html.py │ │ ├── load.py │ │ ├── process.py │ │ ├── text.py │ │ └── utils.py │ ├── cli.py │ ├── communicate.py │ ├── coverage.py │ ├── critic.py │ ├── data/ │ │ └── preferences.json │ ├── dbaccess.py │ ├── dbutils/ │ │ ├── __init__.py │ │ ├── branch.py │ │ ├── database.py │ │ ├── database_unittest.py │ │ ├── paths.py │ │ ├── review.py │ │ ├── session.py │ │ ├── system.py │ │ ├── timezones.py │ │ ├── unittest.py │ │ └── user.py │ ├── diff/ │ │ ├── __init__.py │ │ ├── analyze.py │ │ ├── context.py │ │ ├── html.py │ │ ├── merge.py │ │ └── parse.py │ ├── diffutils.py │ ├── extensions/ │ │ ├── __init__.py │ │ ├── execute.py │ │ ├── extension.py │ │ ├── installation.py │ │ ├── manifest.py │ │ ├── resource.py │ │ ├── role/ │ │ │ ├── __init__.py │ │ │ ├── filterhook.py │ │ │ ├── inject.py │ │ │ ├── page.py │ │ │ └── processcommits.py │ │ ├── unittest.py │ │ └── utils.py │ ├── gitutils.py │ ├── gitutils_unittest.py │ ├── hooks/ │ │ └── pre-receive │ ├── htmlutils.py │ ├── htmlutils_unittest.py │ ├── index.py │ ├── inpututils.py │ ├── jsonapi/ │ │ ├── __init__.py │ │ ├── check.py │ │ ├── documentation.py │ │ └── v1/ │ │ ├── README.txt │ │ ├── __init__.py │ │ ├── accesscontrolprofiles.py │ │ ├── accesstokens.py │ │ ├── batches.py │ │ ├── branches.py │ │ ├── changesets.py │ │ ├── comments.py │ │ ├── commits.py │ │ ├── documentation.py │ │ ├── extensions.py │ │ ├── filechanges.py │ │ ├── filecontents.py │ │ ├── filediffs.py │ │ ├── files.py │ │ ├── labeledaccesscontrolprofiles.py │ │ ├── rebases.py │ │ ├── replies.py │ │ ├── repositories.py │ │ ├── reviewablefilechanges.py │ │ ├── reviews.py │ │ ├── reviewsummaries.py │ │ ├── sessions.py │ │ └── users.py │ ├── library/ │ │ └── js/ │ │ └── v8/ │ │ ├── critic-batch.js │ │ ├── critic-branch.js │ │ ├── critic-changeset.js │ │ ├── critic-cli.js │ │ ├── critic-comment.js │ │ ├── critic-commitset.js │ │ ├── critic-dashboard.js │ │ ├── critic-file.js │ │ ├── critic-filters.js │ │ ├── critic-filterstransaction.js │ │ ├── critic-git.js │ │ ├── critic-html.js │ │ ├── critic-launcher-fork.js │ │ ├── critic-launcher.js │ │ ├── critic-log.js │ │ ├── critic-mail.js │ │ ├── critic-review.js │ │ ├── critic-statistics.js │ │ ├── critic-storage.js │ │ ├── critic-text.js │ │ ├── critic-trackedbranch.js │ │ ├── critic-user.js │ │ └── critic.js │ ├── linkify.py │ ├── log/ │ │ ├── __init__.py │ │ ├── commitset.py │ │ └── html.py │ ├── mailutils.py │ ├── maintenance/ │ │ ├── __init__.py │ │ ├── check-branches.py │ │ ├── check-commits.py │ │ ├── configtest.py │ │ ├── criticctl.py │ │ ├── dumppreferences.py │ │ └── progress.py │ ├── operation/ │ │ ├── __init__.py │ │ ├── addrepository.py │ │ ├── applyfilters.py │ │ ├── autocompletedata.py │ │ ├── basictypes.py │ │ ├── basictypes_unittest.py │ │ ├── blame.py │ │ ├── brancharchiving.py │ │ ├── checkrebase.py │ │ ├── createcomment.py │ │ ├── createreview.py │ │ ├── draftchanges.py │ │ ├── editresource.py │ │ ├── extensioninstallation.py │ │ ├── fetchlines.py │ │ ├── manipulateassignments.py │ │ ├── manipulatecomment.py │ │ ├── manipulatefilters.py │ │ ├── manipulatereview.py │ │ ├── manipulateuser.py │ │ ├── markfiles.py │ │ ├── miscellaneous.py │ │ ├── news.py │ │ ├── rebasereview.py │ │ ├── recipientfilter.py │ │ ├── registeruser.py │ │ ├── savesettings.py │ │ ├── searchreview.py │ │ ├── servicemanager.py │ │ ├── trackedbranch.py │ │ ├── typechecker.py │ │ ├── typechecker_unittest.py │ │ ├── unittest.py │ │ └── usersession.py │ ├── page/ │ │ ├── __init__.py │ │ ├── addrepository.py │ │ ├── basic.py │ │ ├── branches.py │ │ ├── checkbranch.py │ │ ├── config.py │ │ ├── confirmmerge.py │ │ ├── createreview.py │ │ ├── createuser.py │ │ ├── dashboard.py │ │ ├── editresource.py │ │ ├── filterchanges.py │ │ ├── home.py │ │ ├── loadmanifest.py │ │ ├── login.py │ │ ├── manageextensions.py │ │ ├── managereviewers.py │ │ ├── news.py │ │ ├── parameters.py │ │ ├── processcommits.py │ │ ├── rebasetrackingreview.py │ │ ├── repositories.py │ │ ├── search.py │ │ ├── services.py │ │ ├── showbatch.py │ │ ├── showbranch.py │ │ ├── showcomment.py │ │ ├── showcommit.py │ │ ├── showfile.py │ │ ├── showfilters.py │ │ ├── showreview.py │ │ ├── showreviewlog.py │ │ ├── showtree.py │ │ ├── statistics.py │ │ ├── tutorial.py │ │ ├── utils.py │ │ └── verifyemail.py │ ├── profiling.py │ ├── request.py │ ├── resources/ │ │ ├── .gitattributes │ │ ├── autocomplete.js │ │ ├── basic.css │ │ ├── basic.js │ │ ├── branches.css │ │ ├── branches.js │ │ ├── changeset.css │ │ ├── changeset.js │ │ ├── checkbranch.css │ │ ├── checkbranch.js │ │ ├── comment.css │ │ ├── comment.js │ │ ├── config.css │ │ ├── config.js │ │ ├── confirmmerge.css │ │ ├── confirmmerge.js │ │ ├── createreview.css │ │ ├── createreview.js │ │ ├── createuser.css │ │ ├── createuser.js │ │ ├── dashboard.css │ │ ├── dashboard.js │ │ ├── diff.css │ │ ├── editresource.css │ │ ├── editresource.js │ │ ├── filterchanges.css │ │ ├── filterchanges.js │ │ ├── home.css │ │ ├── home.js │ │ ├── log.css │ │ ├── log.js │ │ ├── login.css │ │ ├── login.js │ │ ├── manageextensions.css │ │ ├── manageextensions.js │ │ ├── managereviewers.css │ │ ├── managereviewers.js │ │ ├── message.css │ │ ├── newrepository.css │ │ ├── newrepository.js │ │ ├── news.css │ │ ├── news.js │ │ ├── overrides.css │ │ ├── rebasetrackingreview.css │ │ ├── rebasetrackingreview.js │ │ ├── repositories.css │ │ ├── repositories.js │ │ ├── review.css │ │ ├── review.js │ │ ├── reviewfilters.js │ │ ├── ruler.js │ │ ├── search.css │ │ ├── search.js │ │ ├── services.css │ │ ├── services.js │ │ ├── showbatch.css │ │ ├── showbranch.css │ │ ├── showcomment.js │ │ ├── showfile.css │ │ ├── showfile.js │ │ ├── showreview.css │ │ ├── showreview.js │ │ ├── showreviewlog.css │ │ ├── showtree.css │ │ ├── statistics.css │ │ ├── syntax.css │ │ ├── tabify.css │ │ ├── tabify.js │ │ ├── third-party/ │ │ │ ├── chosen.css │ │ │ ├── chosen.js │ │ │ ├── jquery-ui-1.10.2.custom.css │ │ │ └── jquery-ui-autocomplete-html.js │ │ ├── tutorial.css │ │ ├── tutorial.js │ │ └── whitespace.css │ ├── reviewing/ │ │ ├── __init__.py │ │ ├── comment/ │ │ │ ├── __init__.py │ │ │ └── propagate.py │ │ ├── filters.py │ │ ├── html.py │ │ ├── mail.py │ │ ├── rebase.py │ │ └── utils.py │ ├── run_unittest.py │ ├── syntaxhighlight/ │ │ ├── __init__.py │ │ ├── clexer.py │ │ ├── context.py │ │ ├── cpp.py │ │ ├── generate.py │ │ ├── generic.py │ │ └── request.py │ ├── textformatting.py │ ├── textutils.py │ ├── textutils_unittest.py │ ├── tutorials/ │ │ ├── administration.txt │ │ ├── archival.txt │ │ ├── checkbranch.txt │ │ ├── customization.txt │ │ ├── extensions-api.txt │ │ ├── extensions.txt │ │ ├── external-authentication.txt │ │ ├── filters.txt │ │ ├── rebasing.txt │ │ ├── reconfiguring.txt │ │ ├── repository.txt │ │ ├── requesting.txt │ │ ├── reviewing.txt │ │ └── search.txt │ ├── urlutils.py │ ├── wsgi.py │ └── wsgistartup.py ├── testing/ │ ├── USAGE.md │ ├── __init__.py │ ├── __main__.py │ ├── expect.py │ ├── findtests.py │ ├── flags/ │ │ ├── addrepository-has-mirror-parameter.flag │ │ ├── fixed-batch-preview.flag │ │ ├── is-testing.flag │ │ ├── pwd-independence.flag │ │ ├── reliable-admin-newswriter.flag │ │ ├── reliable-git-emails.flag │ │ ├── system-recipients.flag │ │ └── web-server-integration.flag │ ├── frontend.py │ ├── input/ │ │ ├── SystemExtension/ │ │ │ ├── MANIFEST │ │ │ ├── check.js │ │ │ └── resources/ │ │ │ └── HelloWorld.txt │ │ ├── TestExtension/ │ │ │ ├── MANIFEST │ │ │ ├── MailTransaction.js │ │ │ ├── Review.list.js │ │ │ ├── echo.js │ │ │ ├── empty.js │ │ │ ├── error.compilation.js │ │ │ ├── error.runtime.js │ │ │ ├── evaluate.js │ │ │ ├── filterhook.js │ │ │ ├── inject.js │ │ │ ├── nothandled.js │ │ │ ├── processcommits.js │ │ │ ├── resources/ │ │ │ │ ├── hello.world.js │ │ │ │ ├── helloworld.css │ │ │ │ └── helloworld.html │ │ │ ├── restrictions.js │ │ │ └── version.js │ │ ├── binary │ │ ├── customization/ │ │ │ ├── githook.py │ │ │ └── linktypes.py │ │ ├── empty.txt │ │ ├── service_log_filter.py │ │ ├── service_synchronization_helper.py │ │ └── syntaxhighlight/ │ │ └── example.cpp │ ├── local.py │ ├── mailbox.py │ ├── main.py │ ├── password-invalid │ ├── password-testing │ ├── quickstart.py │ ├── repository.py │ ├── tests/ │ │ └── 001-main/ │ │ ├── 000-install.py │ │ ├── 001-empty/ │ │ │ ├── 001-anonymous/ │ │ │ │ ├── 001-dashboard.py │ │ │ │ ├── 002-branches.py │ │ │ │ ├── 003-search.py │ │ │ │ ├── 004-config.py │ │ │ │ ├── 005-tutorial.py │ │ │ │ ├── 006-news.py │ │ │ │ ├── 007-home.py │ │ │ │ ├── 008-repositories.py │ │ │ │ ├── 009-services.py │ │ │ │ ├── 010-createreview.py │ │ │ │ ├── 011-manageextensions.py │ │ │ │ ├── 012-statistics.py │ │ │ │ ├── 013-static-resource.py │ │ │ │ └── 100-preferences/ │ │ │ │ ├── 001-commit.diff.rulerColumn.py │ │ │ │ ├── 002-review.defaultOptOut.py │ │ │ │ ├── 003-timezone.py │ │ │ │ └── __init__.py │ │ │ ├── 002-authenticated/ │ │ │ │ ├── 001-dashboard.py │ │ │ │ ├── 002-branches.py │ │ │ │ ├── 003-search.py │ │ │ │ ├── 004-config.py │ │ │ │ ├── 005-tutorial.py │ │ │ │ ├── 006-news.py │ │ │ │ ├── 007-home.py │ │ │ │ ├── 008-repositories.py │ │ │ │ ├── 009-services.py │ │ │ │ ├── 010-createreview.py │ │ │ │ ├── 011-manageextensions.py │ │ │ │ ├── 012-statistics.py │ │ │ │ └── 100-preferences/ │ │ │ │ ├── 001-commit.diff.rulerColumn.py │ │ │ │ ├── 002-review.defaultOptOut.py │ │ │ │ ├── 003-timezone.py │ │ │ │ └── __init__.py │ │ │ ├── 003-criticctl/ │ │ │ │ ├── 001-basic.py │ │ │ │ ├── 002-adduser-deluser.py │ │ │ │ ├── 003-addrole-delrole.py │ │ │ │ ├── 004-listusers.py │ │ │ │ ├── 005-configtest.py │ │ │ │ └── 006-restart.py │ │ │ └── 004-mixed/ │ │ │ ├── 001-newswriter.py │ │ │ ├── 002-email.py │ │ │ ├── 003-oauth.py │ │ │ ├── 004-password.py │ │ │ ├── 005-accesstoken.py │ │ │ ├── 006-accesscontrol-http.py │ │ │ ├── 007-json-session.py │ │ │ └── __init__.py │ │ ├── 002-createrepository.py │ │ ├── 003-self/ │ │ │ ├── 001-rulerColumn.py │ │ │ ├── 002-emptyfile.py │ │ │ ├── 003-binaryfile.py │ │ │ ├── 004-createreview.py │ │ │ ├── 004-first-review-created/ │ │ │ │ ├── 001-addreviewfilters-bogus.py │ │ │ │ ├── 002-review-archival.py │ │ │ │ └── __init__.py │ │ │ ├── 005-checkbranch.py │ │ │ ├── 006-showreview-reviewfilter.py │ │ │ ├── 007-http-backend.py │ │ │ ├── 008-initial-commit-diff.py │ │ │ ├── 009-fetchremotebranch.py │ │ │ ├── 010-linkification.py │ │ │ ├── 011-linkification-custom.py │ │ │ ├── 012-createreview-recipients.py │ │ │ ├── 012-replayrebase.py │ │ │ ├── 014-non-ascii-filenames.py │ │ │ ├── 015-non-ascii-line-diff.py │ │ │ ├── 016-showcommit-ranges.py │ │ │ ├── 017-showcommit-merge-replay.py │ │ │ ├── 018-detect-moves-no-moved-code.py │ │ │ ├── 019-showtree-showfile-bogus.py │ │ │ ├── 020-fixup-review-via-push.py │ │ │ ├── 020-reviewrebase.py │ │ │ ├── 021-updatereview-bogus.py │ │ │ ├── 022-removereviewfilter-bogus.py │ │ │ ├── 024-customizations.githook.py │ │ │ ├── 025-trackedbranch.py │ │ │ ├── 026-searchreview.py │ │ │ ├── 027-whitespace-filenames.py │ │ │ ├── 028-gitemails.py │ │ │ ├── 029-log-bogus.py │ │ │ ├── 030-trackingreview.py │ │ │ ├── 031-fetchlines-bom.py │ │ │ ├── 032-download.py │ │ │ ├── 033-propagation-vs-rebase.py │ │ │ ├── 100-reviewing/ │ │ │ │ ├── 001-comments.basic.py │ │ │ │ └── __init__.py │ │ │ ├── 101-keepalives.py │ │ │ ├── 200-json/ │ │ │ │ ├── 001-users.py │ │ │ │ ├── 002-branches.py │ │ │ │ ├── 003-repositories.py │ │ │ │ ├── 004-review.py │ │ │ │ ├── 005-commits.py │ │ │ │ ├── 006-changesets.py │ │ │ │ ├── 006-comments.py │ │ │ │ ├── 007-filechanges.py │ │ │ │ ├── 007-replies.py │ │ │ │ ├── 008-batches.py │ │ │ │ └── __init__.py │ │ │ └── __init__.py │ │ ├── 004-extensions/ │ │ │ ├── 001-enable.py │ │ │ ├── 002-tests/ │ │ │ │ ├── 001-tutorial.py │ │ │ │ ├── 002-manageextensions.py │ │ │ │ ├── 003-install-TestExtension.py │ │ │ │ ├── 004-TestExtension/ │ │ │ │ │ ├── 001-echo.py │ │ │ │ │ ├── 002-nothandled.py │ │ │ │ │ ├── 003-empty.py │ │ │ │ │ ├── 004-Review.list.py │ │ │ │ │ ├── 005-MailTransaction.py │ │ │ │ │ ├── 006-inject.py │ │ │ │ │ ├── 007-version.py │ │ │ │ │ ├── 008-processcommits.py │ │ │ │ │ ├── 009-error-messages.py │ │ │ │ │ ├── 010-restrictions.py │ │ │ │ │ ├── 011-User.py │ │ │ │ │ ├── 012-resources.py │ │ │ │ │ ├── 013-storage.py │ │ │ │ │ ├── 014-Repository.run.py │ │ │ │ │ ├── 015-filterhook.py │ │ │ │ │ ├── 016-accesscontrol.py │ │ │ │ │ └── 999-missing.py │ │ │ │ ├── 005-install-SystemExtension.py │ │ │ │ └── 006-manifest-checks.py │ │ │ └── __init__.py │ │ ├── 005-unittests/ │ │ │ ├── 001-local/ │ │ │ │ ├── 001-independence.py │ │ │ │ ├── 002-operation.py │ │ │ │ ├── 005-dbutils.database.py │ │ │ │ └── __init__.py │ │ │ ├── 002-api/ │ │ │ │ ├── 001-commit.py │ │ │ │ ├── 002-review.py │ │ │ │ ├── 003-user.py │ │ │ │ ├── 004-config.py │ │ │ │ ├── 005-log.partition.py │ │ │ │ ├── 006-log.rebase.py │ │ │ │ ├── 007-repository.py │ │ │ │ ├── 008-branch.py │ │ │ │ ├── 009-commitset.py │ │ │ │ ├── 010-comment.py │ │ │ │ ├── 011-reply.py │ │ │ │ ├── 012-changeset.py │ │ │ │ ├── 013-filechange.py │ │ │ │ └── 014-filediff.py │ │ │ └── 003-other/ │ │ │ ├── 001-dbutils.database.py │ │ │ └── __init__.py │ │ └── 900-uninstall-reinstall.py │ ├── tools/ │ │ ├── __init__.py │ │ ├── install.py │ │ └── upgrade.py │ ├── utils.py │ └── virtualbox.py ├── uninstall.py └── upgrade.py