libv8 8.4.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.gitmodules +3 -0
- data/.rspec +3 -0
- data/.travis.yml +45 -0
- data/CHANGELOG.md +111 -0
- data/Gemfile +4 -0
- data/README.md +152 -0
- data/Rakefile +125 -0
- data/appveyor.yml.disabled +36 -0
- data/ext/libv8/arch.rb +20 -0
- data/ext/libv8/builder.rb +106 -0
- data/ext/libv8/extconf.rb +7 -0
- data/ext/libv8/location.rb +89 -0
- data/ext/libv8/paths.rb +28 -0
- data/lib/libv8.rb +9 -0
- data/lib/libv8/version.rb +3 -0
- data/libv8.gemspec +30 -0
- data/scaleway.png +0 -0
- data/spec/location_spec.rb +69 -0
- data/spec/spec_helper.rb +4 -0
- data/thefrontside.png +0 -0
- data/vendor/depot_tools/.cipd_impl.ps1 +129 -0
- data/vendor/depot_tools/.gitattributes +55 -0
- data/vendor/depot_tools/.gitignore +92 -0
- data/vendor/depot_tools/.style.yapf +4 -0
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +7 -0
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LICENSE +27 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +39 -0
- data/vendor/depot_tools/PRESUBMIT.py +150 -0
- data/vendor/depot_tools/README.gclient.md +67 -0
- data/vendor/depot_tools/README.git-cl.md +99 -0
- data/vendor/depot_tools/README.md +78 -0
- data/vendor/depot_tools/WATCHLISTS +26 -0
- data/vendor/depot_tools/auth.py +163 -0
- data/vendor/depot_tools/autoninja +36 -0
- data/vendor/depot_tools/autoninja.bat +33 -0
- data/vendor/depot_tools/autoninja.py +148 -0
- data/vendor/depot_tools/bb +12 -0
- data/vendor/depot_tools/bb.bat +7 -0
- data/vendor/depot_tools/bootstrap/README.md +155 -0
- data/vendor/depot_tools/bootstrap/bootstrap.py +356 -0
- data/vendor/depot_tools/bootstrap/git-bash.template.sh +12 -0
- data/vendor/depot_tools/bootstrap/git.template.bat +5 -0
- data/vendor/depot_tools/bootstrap/manifest.txt +27 -0
- data/vendor/depot_tools/bootstrap/manifest_bleeding_edge.txt +27 -0
- data/vendor/depot_tools/bootstrap/profile.d.python.sh +20 -0
- data/vendor/depot_tools/bootstrap/python27.bat +46 -0
- data/vendor/depot_tools/bootstrap/python3.bat +46 -0
- data/vendor/depot_tools/bootstrap/win_tools.bat +79 -0
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/breakpad.py +12 -0
- data/vendor/depot_tools/cbuildbot +1 -0
- data/vendor/depot_tools/chrome_set_ver +1 -0
- data/vendor/depot_tools/cipd +247 -0
- data/vendor/depot_tools/cipd.bat +67 -0
- data/vendor/depot_tools/cipd_bin_setup.bat +6 -0
- data/vendor/depot_tools/cipd_bin_setup.sh +22 -0
- data/vendor/depot_tools/cipd_client_version +1 -0
- data/vendor/depot_tools/cipd_client_version.digests +22 -0
- data/vendor/depot_tools/cipd_manifest.txt +63 -0
- data/vendor/depot_tools/cipd_manifest.versions +438 -0
- data/vendor/depot_tools/cit +8 -0
- data/vendor/depot_tools/cit.bat +12 -0
- data/vendor/depot_tools/cit.py +167 -0
- data/vendor/depot_tools/clang-format +8 -0
- data/vendor/depot_tools/clang-format.bat +12 -0
- data/vendor/depot_tools/clang_format.py +79 -0
- data/vendor/depot_tools/clang_format_merge_driver +8 -0
- data/vendor/depot_tools/clang_format_merge_driver.bat +12 -0
- data/vendor/depot_tools/clang_format_merge_driver.py +69 -0
- data/vendor/depot_tools/codereview.settings +6 -0
- data/vendor/depot_tools/compile_single_file +8 -0
- data/vendor/depot_tools/compile_single_file.bat +11 -0
- data/vendor/depot_tools/compile_single_file.py +79 -0
- data/vendor/depot_tools/cpplint.bat +11 -0
- data/vendor/depot_tools/cpplint.py +6097 -0
- data/vendor/depot_tools/cpplint_chromium.py +50 -0
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -0
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +55 -0
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage +8 -0
- data/vendor/depot_tools/download_from_google_storage.bat +12 -0
- data/vendor/depot_tools/download_from_google_storage.py +634 -0
- data/vendor/depot_tools/ensure_bootstrap +53 -0
- data/vendor/depot_tools/fetch +21 -0
- data/vendor/depot_tools/fetch.bat +28 -0
- data/vendor/depot_tools/fetch.py +319 -0
- data/vendor/depot_tools/fetch_configs/android.py +34 -0
- data/vendor/depot_tools/fetch_configs/android_internal.py +34 -0
- data/vendor/depot_tools/fetch_configs/breakpad.py +44 -0
- data/vendor/depot_tools/fetch_configs/chromium.py +66 -0
- data/vendor/depot_tools/fetch_configs/config_util.py +52 -0
- data/vendor/depot_tools/fetch_configs/crashpad.py +41 -0
- data/vendor/depot_tools/fetch_configs/dart.py +45 -0
- data/vendor/depot_tools/fetch_configs/depot_tools.py +44 -0
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/goma_client.py +41 -0
- data/vendor/depot_tools/fetch_configs/gyp.py +41 -0
- data/vendor/depot_tools/fetch_configs/infra.py +40 -0
- data/vendor/depot_tools/fetch_configs/infra_internal.py +45 -0
- data/vendor/depot_tools/fetch_configs/inspector_protocol.py +40 -0
- data/vendor/depot_tools/fetch_configs/ios.py +34 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +39 -0
- data/vendor/depot_tools/fetch_configs/nacl.py +48 -0
- data/vendor/depot_tools/fetch_configs/naclports.py +47 -0
- data/vendor/depot_tools/fetch_configs/node-ci.py +41 -0
- data/vendor/depot_tools/fetch_configs/pdfium.py +40 -0
- data/vendor/depot_tools/fetch_configs/skia.py +41 -0
- data/vendor/depot_tools/fetch_configs/skia_buildbot.py +41 -0
- data/vendor/depot_tools/fetch_configs/syzygy.py +41 -0
- data/vendor/depot_tools/fetch_configs/v8.py +44 -0
- data/vendor/depot_tools/fetch_configs/webrtc.py +52 -0
- data/vendor/depot_tools/fetch_configs/webrtc_android.py +34 -0
- data/vendor/depot_tools/fetch_configs/webrtc_ios.py +34 -0
- data/vendor/depot_tools/fix_encoding.py +385 -0
- data/vendor/depot_tools/gclient +38 -0
- data/vendor/depot_tools/gclient-new-workdir.py +124 -0
- data/vendor/depot_tools/gclient.bat +32 -0
- data/vendor/depot_tools/gclient.py +3198 -0
- data/vendor/depot_tools/gclient_completion.sh +76 -0
- data/vendor/depot_tools/gclient_eval.py +891 -0
- data/vendor/depot_tools/gclient_paths.py +152 -0
- data/vendor/depot_tools/gclient_scm.py +1615 -0
- data/vendor/depot_tools/gclient_utils.py +1280 -0
- data/vendor/depot_tools/gerrit_client.py +151 -0
- data/vendor/depot_tools/gerrit_util.py +996 -0
- data/vendor/depot_tools/git-cache +6 -0
- data/vendor/depot_tools/git-cl +6 -0
- data/vendor/depot_tools/git-crrev-parse +53 -0
- data/vendor/depot_tools/git-drover +6 -0
- data/vendor/depot_tools/git-find-releases +6 -0
- data/vendor/depot_tools/git-footers +6 -0
- data/vendor/depot_tools/git-freeze +8 -0
- data/vendor/depot_tools/git-gs +9 -0
- data/vendor/depot_tools/git-hyper-blame +6 -0
- data/vendor/depot_tools/git-map +6 -0
- data/vendor/depot_tools/git-map-branches +6 -0
- data/vendor/depot_tools/git-mark-merge-base +6 -0
- data/vendor/depot_tools/git-nav-downstream +6 -0
- data/vendor/depot_tools/git-nav-upstream +6 -0
- data/vendor/depot_tools/git-new-branch +6 -0
- data/vendor/depot_tools/git-number +6 -0
- data/vendor/depot_tools/git-rebase-update +6 -0
- data/vendor/depot_tools/git-rename-branch +6 -0
- data/vendor/depot_tools/git-reparent-branch +6 -0
- data/vendor/depot_tools/git-retry +8 -0
- data/vendor/depot_tools/git-runhooks +23 -0
- data/vendor/depot_tools/git-squash-branch +6 -0
- data/vendor/depot_tools/git-templates/description +3 -0
- data/vendor/depot_tools/git-templates/hooks/applypatch-msg +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-checkout +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-merge +4 -0
- data/vendor/depot_tools/git-templates/hooks/post-update +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-applypatch +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-auto-gc +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-commit +4 -0
- data/vendor/depot_tools/git-templates/hooks/pre-rebase +4 -0
- data/vendor/depot_tools/git-templates/hooks/prepare-commit-msg +4 -0
- data/vendor/depot_tools/git-templates/info/exclude +6 -0
- data/vendor/depot_tools/git-thaw +13 -0
- data/vendor/depot_tools/git-upstream-diff +9 -0
- data/vendor/depot_tools/git_cache.py +786 -0
- data/vendor/depot_tools/git_cl.py +5158 -0
- data/vendor/depot_tools/git_cl_completion.sh +48 -0
- data/vendor/depot_tools/git_common.py +1101 -0
- data/vendor/depot_tools/git_dates.py +62 -0
- data/vendor/depot_tools/git_drover.py +469 -0
- data/vendor/depot_tools/git_find_releases.py +67 -0
- data/vendor/depot_tools/git_footers.py +261 -0
- data/vendor/depot_tools/git_freezer.py +40 -0
- data/vendor/depot_tools/git_hyper_blame.py +391 -0
- data/vendor/depot_tools/git_map.py +166 -0
- data/vendor/depot_tools/git_map_branches.py +354 -0
- data/vendor/depot_tools/git_mark_merge_base.py +73 -0
- data/vendor/depot_tools/git_nav_downstream.py +69 -0
- data/vendor/depot_tools/git_new_branch.py +82 -0
- data/vendor/depot_tools/git_number.py +301 -0
- data/vendor/depot_tools/git_rebase_update.py +351 -0
- data/vendor/depot_tools/git_rename_branch.py +55 -0
- data/vendor/depot_tools/git_reparent_branch.py +101 -0
- data/vendor/depot_tools/git_retry.py +181 -0
- data/vendor/depot_tools/git_squash_branch.py +28 -0
- data/vendor/depot_tools/git_upstream_diff.py +64 -0
- data/vendor/depot_tools/gn +8 -0
- data/vendor/depot_tools/gn.bat +12 -0
- data/vendor/depot_tools/gn.py +78 -0
- data/vendor/depot_tools/goma_auth +12 -0
- data/vendor/depot_tools/goma_auth.bat +8 -0
- data/vendor/depot_tools/goma_ctl +12 -0
- data/vendor/depot_tools/goma_ctl.bat +8 -0
- data/vendor/depot_tools/gsutil.py +190 -0
- data/vendor/depot_tools/gsutil.py.bat +23 -0
- data/vendor/depot_tools/gsutil.vpython +120 -0
- data/vendor/depot_tools/infra/README.md +1 -0
- data/vendor/depot_tools/infra/config/OWNERS +7 -0
- data/vendor/depot_tools/infra/config/README.md +1 -0
- data/vendor/depot_tools/infra/config/recipes.cfg +26 -0
- data/vendor/depot_tools/led +12 -0
- data/vendor/depot_tools/led.bat +7 -0
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +13 -0
- data/vendor/depot_tools/luci-auth.bat +8 -0
- data/vendor/depot_tools/lucicfg +12 -0
- data/vendor/depot_tools/lucicfg.bat +7 -0
- data/vendor/depot_tools/mac_toolchain +12 -0
- data/vendor/depot_tools/man/html/depot_tools.html +934 -0
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +1593 -0
- data/vendor/depot_tools/man/html/git-cl.html +1033 -0
- data/vendor/depot_tools/man/html/git-drover.html +1048 -0
- data/vendor/depot_tools/man/html/git-footers.html +878 -0
- data/vendor/depot_tools/man/html/git-freeze.html +859 -0
- data/vendor/depot_tools/man/html/git-hyper-blame.html +878 -0
- data/vendor/depot_tools/man/html/git-map-branches.html +904 -0
- data/vendor/depot_tools/man/html/git-map.html +887 -0
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +826 -0
- data/vendor/depot_tools/man/html/git-nav-downstream.html +844 -0
- data/vendor/depot_tools/man/html/git-nav-upstream.html +853 -0
- data/vendor/depot_tools/man/html/git-new-branch.html +932 -0
- data/vendor/depot_tools/man/html/git-rebase-update.html +961 -0
- data/vendor/depot_tools/man/html/git-rename-branch.html +794 -0
- data/vendor/depot_tools/man/html/git-reparent-branch.html +847 -0
- data/vendor/depot_tools/man/html/git-retry.html +858 -0
- data/vendor/depot_tools/man/html/git-squash-branch.html +881 -0
- data/vendor/depot_tools/man/html/git-thaw.html +794 -0
- data/vendor/depot_tools/man/html/git-upstream-diff.html +923 -0
- data/vendor/depot_tools/man/man1/git-cl.1 +198 -0
- data/vendor/depot_tools/man/man1/git-drover.1 +330 -0
- data/vendor/depot_tools/man/man1/git-footers.1 +144 -0
- data/vendor/depot_tools/man/man1/git-freeze.1 +113 -0
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +128 -0
- data/vendor/depot_tools/man/man1/git-map-branches.1 +210 -0
- data/vendor/depot_tools/man/man1/git-map.1 +179 -0
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +69 -0
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +112 -0
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +122 -0
- data/vendor/depot_tools/man/man1/git-new-branch.1 +176 -0
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +177 -0
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +53 -0
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +93 -0
- data/vendor/depot_tools/man/man1/git-retry.1 +108 -0
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +129 -0
- data/vendor/depot_tools/man/man1/git-thaw.1 +54 -0
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +153 -0
- data/vendor/depot_tools/man/man7/depot_tools.7 +139 -0
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +1061 -0
- data/vendor/depot_tools/man/push_to_gs.sh +4 -0
- data/vendor/depot_tools/man/src/.gitignore +5 -0
- data/vendor/depot_tools/man/src/_aliases.txt +5 -0
- data/vendor/depot_tools/man/src/_footer.txt +8 -0
- data/vendor/depot_tools/man/src/_git-cl_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-drover_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-footers_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-freeze_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-hyper-blame_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-map-branches_desc.helper.txt +4 -0
- data/vendor/depot_tools/man/src/_git-map_desc.helper.txt +3 -0
- data/vendor/depot_tools/man/src/_git-mark-merge-base_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-downstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-nav-upstream_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-new-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rebase-update_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-rename-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-reparent-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-retry_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-squash-branch_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_git-thaw_desc.helper.txt +2 -0
- data/vendor/depot_tools/man/src/_git-upstream-diff_desc.helper.txt +1 -0
- data/vendor/depot_tools/man/src/_helper_prefix.txt +1 -0
- data/vendor/depot_tools/man/src/asciidoc-override.css +7 -0
- data/vendor/depot_tools/man/src/common_demo_functions.sh +84 -0
- data/vendor/depot_tools/man/src/demo_repo.sh +43 -0
- data/vendor/depot_tools/man/src/depot_tools.txt +28 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.demo.walkthrough.sh +155 -0
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +432 -0
- data/vendor/depot_tools/man/src/filter_demo_output.py +141 -0
- data/vendor/depot_tools/man/src/git-cl.txt +119 -0
- data/vendor/depot_tools/man/src/git-drover.demo.1.sh +22 -0
- data/vendor/depot_tools/man/src/git-drover.demo.2.sh +23 -0
- data/vendor/depot_tools/man/src/git-drover.demo.3.sh +27 -0
- data/vendor/depot_tools/man/src/git-drover.demo.4.sh +39 -0
- data/vendor/depot_tools/man/src/git-drover.demo.common.sh +19 -0
- data/vendor/depot_tools/man/src/git-drover.txt +102 -0
- data/vendor/depot_tools/man/src/git-footers.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-footers.txt +71 -0
- data/vendor/depot_tools/man/src/git-freeze.demo.1.sh +23 -0
- data/vendor/depot_tools/man/src/git-freeze.txt +54 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.2.sh +4 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.demo.common.sh +57 -0
- data/vendor/depot_tools/man/src/git-hyper-blame.txt +85 -0
- data/vendor/depot_tools/man/src/git-map-branches.demo.1.sh +8 -0
- data/vendor/depot_tools/man/src/git-map-branches.txt +64 -0
- data/vendor/depot_tools/man/src/git-map.demo.1.sh +3 -0
- data/vendor/depot_tools/man/src/git-map.txt +67 -0
- data/vendor/depot_tools/man/src/git-mark-merge-base.txt +46 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-downstream.txt +40 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-nav-upstream.txt +39 -0
- data/vendor/depot_tools/man/src/git-new-branch.demo.1.sh +17 -0
- data/vendor/depot_tools/man/src/git-new-branch.txt +82 -0
- data/vendor/depot_tools/man/src/git-rebase-update.txt +141 -0
- data/vendor/depot_tools/man/src/git-rename-branch.txt +28 -0
- data/vendor/depot_tools/man/src/git-reparent-branch.txt +61 -0
- data/vendor/depot_tools/man/src/git-retry.txt +67 -0
- data/vendor/depot_tools/man/src/git-squash-branch.demo.1.sh +12 -0
- data/vendor/depot_tools/man/src/git-squash-branch.txt +59 -0
- data/vendor/depot_tools/man/src/git-thaw.txt +29 -0
- data/vendor/depot_tools/man/src/git-upstream-diff.txt +107 -0
- data/vendor/depot_tools/man/src/make_docs.sh +260 -0
- data/vendor/depot_tools/man/src/prep_demo_repo.sh +103 -0
- data/vendor/depot_tools/metrics.README.md +101 -0
- data/vendor/depot_tools/metrics.py +297 -0
- data/vendor/depot_tools/metrics_utils.py +293 -0
- data/vendor/depot_tools/my_activity.py +971 -0
- data/vendor/depot_tools/ninja +44 -0
- data/vendor/depot_tools/ninja-linux32 +0 -0
- data/vendor/depot_tools/ninja-linux64 +0 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninja.exe +0 -0
- data/vendor/depot_tools/ninjalog.README.md +64 -0
- data/vendor/depot_tools/ninjalog_uploader.py +233 -0
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +125 -0
- data/vendor/depot_tools/owners.py +641 -0
- data/vendor/depot_tools/owners_finder.py +385 -0
- data/vendor/depot_tools/post_build_ninja_summary.py +350 -0
- data/vendor/depot_tools/presubmit_canned_checks.py +1655 -0
- data/vendor/depot_tools/presubmit_support.py +1923 -0
- data/vendor/depot_tools/profile.xml +8 -0
- data/vendor/depot_tools/prpc +13 -0
- data/vendor/depot_tools/prpc.bat +8 -0
- data/vendor/depot_tools/pylint +9 -0
- data/vendor/depot_tools/pylint-1.5 +78 -0
- data/vendor/depot_tools/pylint-1.6 +78 -0
- data/vendor/depot_tools/pylint-1.7 +78 -0
- data/vendor/depot_tools/pylint-1.8 +78 -0
- data/vendor/depot_tools/pylint-1.9 +78 -0
- data/vendor/depot_tools/pylint.bat +12 -0
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +349 -0
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +60 -0
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +4 -0
- data/vendor/depot_tools/recipes/README.recipes.md +1079 -0
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +38 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +516 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +118 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +194 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +210 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +214 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_HEAD.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_branch_head.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_a_specific_commit.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_cp_checkout_master.json +65 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/refs.json +212 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +210 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/resolve_chromium_fixed_version.json +117 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail.json +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +209 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +193 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +261 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +211 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +308 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/__init__.py +0 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +1258 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/do_not_retry_patch_failures_in_cq.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/tests/ensure_checkout.py +35 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +455 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +82 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +411 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +315 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +313 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +403 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.py +187 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.py +59 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +9 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +75 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +13 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +428 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +462 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +240 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +238 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/resources/diff_deps.py +16 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/test_api.py +36 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/basic.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/dont have revision yet.json +84 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/no change, exception.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.expected/windows.json +55 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/diff_deps.py +88 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/patch_project.py +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/__init__.py +8 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +178 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +284 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.py +73 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/test_api.py +53 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +11 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +405 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +216 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +164 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +239 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +290 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +220 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +111 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +265 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +217 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +221 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +219 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +218 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +170 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/resources/git_setup.py +52 -0
- data/vendor/depot_tools/recipes/recipe_modules/git/test_api.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +50 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/config.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +105 -0
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +47 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/OWNERS +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/__init__.py +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +257 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +596 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.py +93 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/test_api.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/__init__.py +4 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +222 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +92 -0
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +36 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +140 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/ancient_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/automatic_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/explicit_version.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/linux.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +83 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +42 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +251 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +27 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/properties.proto +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/test_api.py +19 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/execute.py +247 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/tests/prepare.py +49 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/__init__.py +18 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +264 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +57 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +190 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +95 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/test_api.py +14 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_fetch_ref_timeout.py +29 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.expected/basic.json +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_owner.py +22 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/tests/gerrit_change_target_ref.py +32 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/__init__.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/api.py +137 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/linux.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +21 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +108 -0
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +21 -0
- data/vendor/depot_tools/recipes/recipes.py +249 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +175 -0
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.py +56 -0
- data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +13 -0
- data/vendor/depot_tools/repo +1194 -0
- data/vendor/depot_tools/roll-dep +21 -0
- data/vendor/depot_tools/roll-dep.bat +21 -0
- data/vendor/depot_tools/roll_dep.py +282 -0
- data/vendor/depot_tools/scm.py +415 -0
- data/vendor/depot_tools/setup_color.py +130 -0
- data/vendor/depot_tools/split_cl.py +263 -0
- data/vendor/depot_tools/subcommand.py +261 -0
- data/vendor/depot_tools/subprocess2.py +258 -0
- data/vendor/depot_tools/third_party/__init__.py +5 -0
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +27 -0
- data/vendor/depot_tools/third_party/colorama/README.chromium +12 -0
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +6 -0
- data/vendor/depot_tools/third_party/colorama/ansi.py +102 -0
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +257 -0
- data/vendor/depot_tools/third_party/colorama/initialise.py +80 -0
- data/vendor/depot_tools/third_party/colorama/win32.py +152 -0
- data/vendor/depot_tools/third_party/colorama/winterm.py +169 -0
- data/vendor/depot_tools/third_party/coverage/AUTHORS.txt +43 -0
- data/vendor/depot_tools/third_party/coverage/PKG-INFO +41 -0
- data/vendor/depot_tools/third_party/coverage/README.chromium +13 -0
- data/vendor/depot_tools/third_party/coverage/__init__.py +120 -0
- data/vendor/depot_tools/third_party/coverage/__main__.py +4 -0
- data/vendor/depot_tools/third_party/coverage/annotate.py +101 -0
- data/vendor/depot_tools/third_party/coverage/backward.py +184 -0
- data/vendor/depot_tools/third_party/coverage/bytecode.py +75 -0
- data/vendor/depot_tools/third_party/coverage/cmdline.py +740 -0
- data/vendor/depot_tools/third_party/coverage/codeunit.py +145 -0
- data/vendor/depot_tools/third_party/coverage/collector.py +353 -0
- data/vendor/depot_tools/third_party/coverage/config.py +213 -0
- data/vendor/depot_tools/third_party/coverage/control.py +776 -0
- data/vendor/depot_tools/third_party/coverage/data.py +278 -0
- data/vendor/depot_tools/third_party/coverage/debug.py +54 -0
- data/vendor/depot_tools/third_party/coverage/execfile.py +171 -0
- data/vendor/depot_tools/third_party/coverage/files.py +309 -0
- data/vendor/depot_tools/third_party/coverage/fullcoverage/encodings.py +57 -0
- data/vendor/depot_tools/third_party/coverage/html.py +387 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/coverage_html.js +376 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/index.html +104 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery-1.4.3.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.hotkeys.js +99 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.isonscreen.js +53 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.min.js +166 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/jquery.tablesorter.min.js +2 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_closed.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/keybd_open.png +0 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/pyfile.html +90 -0
- data/vendor/depot_tools/third_party/coverage/htmlfiles/style.css +300 -0
- data/vendor/depot_tools/third_party/coverage/misc.py +163 -0
- data/vendor/depot_tools/third_party/coverage/parser.py +666 -0
- data/vendor/depot_tools/third_party/coverage/phystokens.py +208 -0
- data/vendor/depot_tools/third_party/coverage/report.py +92 -0
- data/vendor/depot_tools/third_party/coverage/results.py +286 -0
- data/vendor/depot_tools/third_party/coverage/summary.py +86 -0
- data/vendor/depot_tools/third_party/coverage/templite.py +166 -0
- data/vendor/depot_tools/third_party/coverage/version.py +9 -0
- data/vendor/depot_tools/third_party/coverage/xmlreport.py +155 -0
- data/vendor/depot_tools/third_party/httplib2/LICENSE +1339 -0
- data/vendor/depot_tools/third_party/httplib2/README.chromium +15 -0
- data/vendor/depot_tools/third_party/httplib2/__init__.py +1780 -0
- data/vendor/depot_tools/third_party/httplib2/cacerts.txt +2196 -0
- data/vendor/depot_tools/third_party/httplib2/iri2uri.py +110 -0
- data/vendor/depot_tools/third_party/httplib2/socks.py +448 -0
- data/vendor/depot_tools/third_party/repo/COPYING +202 -0
- data/vendor/depot_tools/third_party/repo/README.chromium +4 -0
- data/vendor/depot_tools/third_party/repo/__init__.py +0 -0
- data/vendor/depot_tools/third_party/repo/progress.py +117 -0
- data/vendor/depot_tools/third_party/retry_decorator/LICENSE.google +30 -0
- data/vendor/depot_tools/third_party/retry_decorator/__init__.py +0 -0
- data/vendor/depot_tools/third_party/retry_decorator/decorators.py +45 -0
- data/vendor/depot_tools/third_party/schema/.editorconfig +15 -0
- data/vendor/depot_tools/third_party/schema/.gitignore +174 -0
- data/vendor/depot_tools/third_party/schema/.travis.yml +37 -0
- data/vendor/depot_tools/third_party/schema/LICENSE-MIT +19 -0
- data/vendor/depot_tools/third_party/schema/MANIFEST.in +1 -0
- data/vendor/depot_tools/third_party/schema/README.chromium +12 -0
- data/vendor/depot_tools/third_party/schema/README.rst +382 -0
- data/vendor/depot_tools/third_party/schema/__init__.py +1 -0
- data/vendor/depot_tools/third_party/schema/schema.py +338 -0
- data/vendor/depot_tools/third_party/schema/setup.cfg +5 -0
- data/vendor/depot_tools/third_party/schema/setup.py +30 -0
- data/vendor/depot_tools/third_party/schema/test_schema.py +556 -0
- data/vendor/depot_tools/third_party/schema/tox.ini +33 -0
- data/vendor/depot_tools/third_party/six/LICENSE.txt +18 -0
- data/vendor/depot_tools/third_party/six/README.chromium +10 -0
- data/vendor/depot_tools/third_party/six/__init__.py +762 -0
- data/vendor/depot_tools/update_depot_tools +138 -0
- data/vendor/depot_tools/update_depot_tools.bat +65 -0
- data/vendor/depot_tools/update_depot_tools_toggle.py +38 -0
- data/vendor/depot_tools/upload_metrics.py +26 -0
- data/vendor/depot_tools/upload_to_google_storage.py +306 -0
- data/vendor/depot_tools/vpython +42 -0
- data/vendor/depot_tools/vpython.bat +7 -0
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +141 -0
- data/vendor/depot_tools/weekly +54 -0
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/OWNERS +2 -0
- data/vendor/depot_tools/win_toolchain/README.md +74 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +599 -0
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +524 -0
- data/vendor/depot_tools/wtf +81 -0
- data/vendor/depot_tools/yapf +21 -0
- data/vendor/depot_tools/yapf.bat +12 -0
- data/vendor/depot_tools/zsh-goodies/README +6 -0
- data/vendor/depot_tools/zsh-goodies/_gclient +14 -0
- metadata +729 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Copyright 2016 The Chromium Authors. All rights reserved.
|
|
2
|
+
# Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
# found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
"""Utility module for dealing with Git timestamps."""
|
|
6
|
+
|
|
7
|
+
import datetime
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def timestamp_offset_to_datetime(timestamp, offset):
|
|
11
|
+
"""Converts a timestamp + offset into a datetime.datetime.
|
|
12
|
+
|
|
13
|
+
Useful for dealing with the output of porcelain commands, which provide times
|
|
14
|
+
as timestamp and offset strings.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
timestamp: An int UTC timestamp, or a string containing decimal digits.
|
|
18
|
+
offset: A str timezone offset. e.g., '-0800'.
|
|
19
|
+
|
|
20
|
+
Returns:
|
|
21
|
+
A tz-aware datetime.datetime for this timestamp.
|
|
22
|
+
"""
|
|
23
|
+
timestamp = int(timestamp)
|
|
24
|
+
tz = FixedOffsetTZ.from_offset_string(offset)
|
|
25
|
+
return datetime.datetime.fromtimestamp(timestamp, tz)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def datetime_string(dt):
|
|
29
|
+
"""Converts a tz-aware datetime.datetime into a string in git format."""
|
|
30
|
+
return dt.strftime('%Y-%m-%d %H:%M:%S %z')
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Adapted from: https://docs.python.org/2/library/datetime.html#tzinfo-objects
|
|
34
|
+
class FixedOffsetTZ(datetime.tzinfo):
|
|
35
|
+
def __init__(self, offset, name):
|
|
36
|
+
datetime.tzinfo.__init__(self)
|
|
37
|
+
self.__offset = offset
|
|
38
|
+
self.__name = name
|
|
39
|
+
|
|
40
|
+
def __repr__(self): # pragma: no cover
|
|
41
|
+
return '{}({!r}, {!r})'.format(type(self).__name__, self.__offset,
|
|
42
|
+
self.__name)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_offset_string(cls, offset):
|
|
46
|
+
try:
|
|
47
|
+
hours = int(offset[:-2])
|
|
48
|
+
minutes = int(offset[-2:])
|
|
49
|
+
except ValueError:
|
|
50
|
+
return cls(datetime.timedelta(0), 'UTC')
|
|
51
|
+
|
|
52
|
+
delta = datetime.timedelta(hours=hours, minutes=minutes)
|
|
53
|
+
return cls(delta, offset)
|
|
54
|
+
|
|
55
|
+
def utcoffset(self, dt):
|
|
56
|
+
return self.__offset
|
|
57
|
+
|
|
58
|
+
def tzname(self, dt):
|
|
59
|
+
return self.__name
|
|
60
|
+
|
|
61
|
+
def dst(self, dt):
|
|
62
|
+
return datetime.timedelta(0)
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# Copyright 2015 The Chromium Authors. All rights reserved.
|
|
3
|
+
# Use of this source code is governed by a BSD-style license that can be
|
|
4
|
+
# found in the LICENSE file.
|
|
5
|
+
"""git drover: A tool for merging changes to release branches."""
|
|
6
|
+
|
|
7
|
+
from __future__ import print_function
|
|
8
|
+
|
|
9
|
+
import argparse
|
|
10
|
+
import functools
|
|
11
|
+
import logging
|
|
12
|
+
import os
|
|
13
|
+
import re
|
|
14
|
+
import shutil
|
|
15
|
+
import subprocess
|
|
16
|
+
import sys
|
|
17
|
+
import tempfile
|
|
18
|
+
|
|
19
|
+
import git_common
|
|
20
|
+
import gclient_utils
|
|
21
|
+
|
|
22
|
+
if sys.version_info.major == 2:
|
|
23
|
+
import cPickle
|
|
24
|
+
else:
|
|
25
|
+
import pickle as cPickle
|
|
26
|
+
|
|
27
|
+
class Error(Exception):
|
|
28
|
+
pass
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
_PATCH_ERROR_MESSAGE = """Patch failed to apply.
|
|
32
|
+
|
|
33
|
+
A workdir for this cherry-pick has been created in
|
|
34
|
+
{0}
|
|
35
|
+
|
|
36
|
+
To continue, resolve the conflicts there and run
|
|
37
|
+
git drover --continue {0}
|
|
38
|
+
|
|
39
|
+
To abort this cherry-pick run
|
|
40
|
+
git drover --abort {0}
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class PatchError(Error):
|
|
45
|
+
"""An error indicating that the patch failed to apply."""
|
|
46
|
+
|
|
47
|
+
def __init__(self, workdir):
|
|
48
|
+
super(PatchError, self).__init__(_PATCH_ERROR_MESSAGE.format(workdir))
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
_DEV_NULL_FILE = open(os.devnull, 'w')
|
|
52
|
+
|
|
53
|
+
if os.name == 'nt':
|
|
54
|
+
# This is a just-good-enough emulation of os.symlink for drover to work on
|
|
55
|
+
# Windows. It uses junctioning of directories (most of the contents of
|
|
56
|
+
# the .git directory), but copies files. Note that we can't use
|
|
57
|
+
# CreateSymbolicLink or CreateHardLink here, as they both require elevation.
|
|
58
|
+
# Creating reparse points is what we want for the directories, but doing so
|
|
59
|
+
# is a relatively messy set of DeviceIoControl work at the API level, so we
|
|
60
|
+
# simply shell to `mklink /j` instead.
|
|
61
|
+
def emulate_symlink_windows(source, link_name):
|
|
62
|
+
if os.path.isdir(source):
|
|
63
|
+
subprocess.check_call(['mklink', '/j',
|
|
64
|
+
link_name.replace('/', '\\'),
|
|
65
|
+
source.replace('/', '\\')],
|
|
66
|
+
shell=True)
|
|
67
|
+
else:
|
|
68
|
+
shutil.copy(source, link_name)
|
|
69
|
+
mk_symlink = emulate_symlink_windows
|
|
70
|
+
else:
|
|
71
|
+
mk_symlink = os.symlink
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class _Drover(object):
|
|
75
|
+
|
|
76
|
+
def __init__(self, branch, revision, parent_repo, dry_run, verbose):
|
|
77
|
+
self._branch = branch
|
|
78
|
+
self._branch_ref = 'refs/remotes/branch-heads/%s' % branch
|
|
79
|
+
self._revision = revision
|
|
80
|
+
self._parent_repo = os.path.abspath(parent_repo)
|
|
81
|
+
self._dry_run = dry_run
|
|
82
|
+
self._workdir = None
|
|
83
|
+
self._branch_name = None
|
|
84
|
+
self._needs_cleanup = True
|
|
85
|
+
self._verbose = verbose
|
|
86
|
+
self._process_options()
|
|
87
|
+
|
|
88
|
+
def _process_options(self):
|
|
89
|
+
if self._verbose:
|
|
90
|
+
logging.getLogger().setLevel(logging.DEBUG)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def resume(cls, workdir):
|
|
95
|
+
"""Continues a cherry-pick that required manual resolution.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
workdir: A string containing the path to the workdir used by drover.
|
|
99
|
+
"""
|
|
100
|
+
drover = cls._restore_drover(workdir)
|
|
101
|
+
drover._continue()
|
|
102
|
+
|
|
103
|
+
@classmethod
|
|
104
|
+
def abort(cls, workdir):
|
|
105
|
+
"""Aborts a cherry-pick that required manual resolution.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
workdir: A string containing the path to the workdir used by drover.
|
|
109
|
+
"""
|
|
110
|
+
drover = cls._restore_drover(workdir)
|
|
111
|
+
drover._cleanup()
|
|
112
|
+
|
|
113
|
+
@staticmethod
|
|
114
|
+
def _restore_drover(workdir):
|
|
115
|
+
"""Restores a saved drover state contained within a workdir.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
workdir: A string containing the path to the workdir used by drover.
|
|
119
|
+
"""
|
|
120
|
+
try:
|
|
121
|
+
with open(os.path.join(workdir, '.git', 'drover'), 'rb') as f:
|
|
122
|
+
drover = cPickle.load(f)
|
|
123
|
+
drover._process_options()
|
|
124
|
+
return drover
|
|
125
|
+
except (IOError, cPickle.UnpicklingError):
|
|
126
|
+
raise Error('%r is not git drover workdir' % workdir)
|
|
127
|
+
|
|
128
|
+
def _continue(self):
|
|
129
|
+
if os.path.exists(os.path.join(self._workdir, '.git', 'CHERRY_PICK_HEAD')):
|
|
130
|
+
self._run_git_command(
|
|
131
|
+
['commit', '--no-edit'],
|
|
132
|
+
error_message='All conflicts must be resolved before continuing')
|
|
133
|
+
|
|
134
|
+
if self._upload_and_land():
|
|
135
|
+
# Only clean up the workdir on success. The manually resolved cherry-pick
|
|
136
|
+
# can be reused if the user cancels before landing.
|
|
137
|
+
self._cleanup()
|
|
138
|
+
|
|
139
|
+
def run(self):
|
|
140
|
+
"""Runs this Drover instance.
|
|
141
|
+
|
|
142
|
+
Raises:
|
|
143
|
+
Error: An error occurred while attempting to cherry-pick this change.
|
|
144
|
+
"""
|
|
145
|
+
try:
|
|
146
|
+
self._run_internal()
|
|
147
|
+
finally:
|
|
148
|
+
self._cleanup()
|
|
149
|
+
|
|
150
|
+
def _run_internal(self):
|
|
151
|
+
self._check_inputs()
|
|
152
|
+
if not self._confirm('Going to cherry-pick\n"""\n%s"""\nto %s.' % (
|
|
153
|
+
self._run_git_command(['show', '-s', self._revision]), self._branch)):
|
|
154
|
+
return
|
|
155
|
+
self._create_checkout()
|
|
156
|
+
self._perform_cherry_pick()
|
|
157
|
+
self._upload_and_land()
|
|
158
|
+
|
|
159
|
+
def _cleanup(self):
|
|
160
|
+
if not self._needs_cleanup:
|
|
161
|
+
return
|
|
162
|
+
|
|
163
|
+
if self._workdir:
|
|
164
|
+
logging.debug('Deleting %s', self._workdir)
|
|
165
|
+
if os.name == 'nt':
|
|
166
|
+
try:
|
|
167
|
+
# Use rmdir to properly handle the junctions we created.
|
|
168
|
+
subprocess.check_call(
|
|
169
|
+
['rmdir', '/s', '/q', self._workdir], shell=True)
|
|
170
|
+
except subprocess.CalledProcessError:
|
|
171
|
+
logging.error(
|
|
172
|
+
'Failed to delete workdir %r. Please remove it manually.',
|
|
173
|
+
self._workdir)
|
|
174
|
+
else:
|
|
175
|
+
shutil.rmtree(self._workdir)
|
|
176
|
+
self._workdir = None
|
|
177
|
+
if self._branch_name:
|
|
178
|
+
self._run_git_command(['branch', '-D', self._branch_name])
|
|
179
|
+
|
|
180
|
+
@staticmethod
|
|
181
|
+
def _confirm(message):
|
|
182
|
+
"""Show a confirmation prompt with the given message.
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
A bool representing whether the user wishes to continue.
|
|
186
|
+
"""
|
|
187
|
+
result = ''
|
|
188
|
+
while result not in ('y', 'n'):
|
|
189
|
+
try:
|
|
190
|
+
result = gclient_utils.AskForData('%s Continue (y/n)? ' % message)
|
|
191
|
+
except EOFError:
|
|
192
|
+
result = 'n'
|
|
193
|
+
return result == 'y'
|
|
194
|
+
|
|
195
|
+
def _check_inputs(self):
|
|
196
|
+
"""Check the input arguments and ensure the parent repo is up to date."""
|
|
197
|
+
|
|
198
|
+
if not os.path.isdir(self._parent_repo):
|
|
199
|
+
raise Error('Invalid parent repo path %r' % self._parent_repo)
|
|
200
|
+
|
|
201
|
+
self._run_git_command(['--help'], error_message='Unable to run git')
|
|
202
|
+
self._run_git_command(['status'],
|
|
203
|
+
error_message='%r is not a valid git repo' %
|
|
204
|
+
os.path.abspath(self._parent_repo))
|
|
205
|
+
self._run_git_command(['fetch', 'origin'],
|
|
206
|
+
error_message='Failed to fetch origin')
|
|
207
|
+
self._run_git_command(
|
|
208
|
+
['rev-parse', '%s^{commit}' % self._branch_ref],
|
|
209
|
+
error_message='Branch %s not found' % self._branch_ref)
|
|
210
|
+
self._run_git_command(
|
|
211
|
+
['rev-parse', '%s^{commit}' % self._revision],
|
|
212
|
+
error_message='Revision "%s" not found' % self._revision)
|
|
213
|
+
|
|
214
|
+
FILES_TO_LINK = [
|
|
215
|
+
'refs',
|
|
216
|
+
'logs/refs',
|
|
217
|
+
'info/refs',
|
|
218
|
+
'info/exclude',
|
|
219
|
+
'objects',
|
|
220
|
+
'hooks',
|
|
221
|
+
'packed-refs',
|
|
222
|
+
'remotes',
|
|
223
|
+
'rr-cache',
|
|
224
|
+
]
|
|
225
|
+
FILES_TO_COPY = ['config', 'HEAD']
|
|
226
|
+
|
|
227
|
+
def _create_checkout(self):
|
|
228
|
+
"""Creates a checkout to use for cherry-picking.
|
|
229
|
+
|
|
230
|
+
This creates a checkout similarly to git-new-workdir. Most of the .git
|
|
231
|
+
directory is shared with the |self._parent_repo| using symlinks. This
|
|
232
|
+
differs from git-new-workdir in that the config is forked instead of shared.
|
|
233
|
+
This is so the new workdir can be a sparse checkout without affecting
|
|
234
|
+
|self._parent_repo|.
|
|
235
|
+
"""
|
|
236
|
+
parent_git_dir = os.path.join(self._parent_repo, self._run_git_command(
|
|
237
|
+
['rev-parse', '--git-dir']).strip())
|
|
238
|
+
self._workdir = tempfile.mkdtemp(prefix='drover_%s_' % self._branch)
|
|
239
|
+
logging.debug('Creating checkout in %s', self._workdir)
|
|
240
|
+
git_dir = os.path.join(self._workdir, '.git')
|
|
241
|
+
git_common.make_workdir_common(parent_git_dir, git_dir, self.FILES_TO_LINK,
|
|
242
|
+
self.FILES_TO_COPY, mk_symlink)
|
|
243
|
+
self._run_git_command(['config', 'core.sparsecheckout', 'true'])
|
|
244
|
+
with open(os.path.join(git_dir, 'info', 'sparse-checkout'), 'w') as f:
|
|
245
|
+
f.write('/codereview.settings')
|
|
246
|
+
|
|
247
|
+
branch_name = os.path.split(self._workdir)[-1]
|
|
248
|
+
self._run_git_command(['checkout', '-b', branch_name, self._branch_ref])
|
|
249
|
+
self._branch_name = branch_name
|
|
250
|
+
|
|
251
|
+
def _perform_cherry_pick(self):
|
|
252
|
+
try:
|
|
253
|
+
self._run_git_command(['cherry-pick', '-x', self._revision],
|
|
254
|
+
error_message='Patch failed to apply')
|
|
255
|
+
except Error:
|
|
256
|
+
self._prepare_manual_resolve()
|
|
257
|
+
self._save_state()
|
|
258
|
+
self._needs_cleanup = False
|
|
259
|
+
raise PatchError(self._workdir)
|
|
260
|
+
|
|
261
|
+
def _save_state(self):
|
|
262
|
+
"""Saves the state of this Drover instances to the workdir."""
|
|
263
|
+
with open(os.path.join(self._workdir, '.git', 'drover'), 'wb') as f:
|
|
264
|
+
cPickle.dump(self, f)
|
|
265
|
+
|
|
266
|
+
def _prepare_manual_resolve(self):
|
|
267
|
+
"""Prepare the workdir for the user to manually resolve the cherry-pick."""
|
|
268
|
+
# Files that have been deleted between branch and cherry-pick will not have
|
|
269
|
+
# their skip-worktree bit set so set it manually for those files to avoid
|
|
270
|
+
# git status incorrectly listing them as unstaged deletes.
|
|
271
|
+
repo_status = self._run_git_command(
|
|
272
|
+
['-c', 'core.quotePath=false', 'status', '--porcelain']).splitlines()
|
|
273
|
+
extra_files = [f[3:] for f in repo_status if f[:2] == ' D']
|
|
274
|
+
if extra_files:
|
|
275
|
+
stdin = '\n'.join(extra_files) + '\n'
|
|
276
|
+
self._run_git_command_with_stdin(
|
|
277
|
+
['update-index', '--skip-worktree', '--stdin'], stdin=stdin.encode())
|
|
278
|
+
|
|
279
|
+
def _upload_and_land(self):
|
|
280
|
+
if self._dry_run:
|
|
281
|
+
logging.info('--dry_run enabled; not landing.')
|
|
282
|
+
return True
|
|
283
|
+
|
|
284
|
+
self._run_git_command(['reset', '--hard'])
|
|
285
|
+
|
|
286
|
+
author = self._run_git_command(['log', '-1', '--format=%ae']).strip()
|
|
287
|
+
self._run_git_command(['cl', 'upload', '--send-mail', '--tbrs', author],
|
|
288
|
+
error_message='Upload failed',
|
|
289
|
+
interactive=True)
|
|
290
|
+
|
|
291
|
+
if not self._confirm('About to start CQ on %s.' % self._branch):
|
|
292
|
+
return False
|
|
293
|
+
self._run_git_command(['cl', 'set-commit'], interactive=True)
|
|
294
|
+
return True
|
|
295
|
+
|
|
296
|
+
def _run_git_command(self, args, error_message=None, interactive=False):
|
|
297
|
+
"""Runs a git command.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
args: A list of strings containing the args to pass to git.
|
|
301
|
+
error_message: A string containing the error message to report if the
|
|
302
|
+
command fails.
|
|
303
|
+
interactive: A bool containing whether the command requires user
|
|
304
|
+
interaction. If false, the command will be provided with no input and
|
|
305
|
+
the output is captured.
|
|
306
|
+
|
|
307
|
+
Returns:
|
|
308
|
+
stdout as a string, or stdout interleaved with stderr if self._verbose
|
|
309
|
+
|
|
310
|
+
Raises:
|
|
311
|
+
Error: The command failed to complete successfully.
|
|
312
|
+
"""
|
|
313
|
+
cwd = self._workdir if self._workdir else self._parent_repo
|
|
314
|
+
logging.debug('Running git %s (cwd %r)', ' '.join('%s' % arg
|
|
315
|
+
for arg in args), cwd)
|
|
316
|
+
|
|
317
|
+
run = subprocess.check_call if interactive else subprocess.check_output
|
|
318
|
+
|
|
319
|
+
# Discard stderr unless verbose is enabled.
|
|
320
|
+
stderr = None if self._verbose else _DEV_NULL_FILE
|
|
321
|
+
|
|
322
|
+
try:
|
|
323
|
+
rv = run(['git'] + args, shell=False, cwd=cwd, stderr=stderr)
|
|
324
|
+
if not interactive and sys.version_info.major == 3:
|
|
325
|
+
return rv.decode('utf-8', 'ignore')
|
|
326
|
+
return rv
|
|
327
|
+
except (OSError, subprocess.CalledProcessError) as e:
|
|
328
|
+
if error_message:
|
|
329
|
+
raise Error(error_message)
|
|
330
|
+
else:
|
|
331
|
+
raise Error('Command %r failed: %s' % (' '.join(args), e))
|
|
332
|
+
|
|
333
|
+
def _run_git_command_with_stdin(self, args, stdin):
|
|
334
|
+
"""Runs a git command with a provided stdin.
|
|
335
|
+
|
|
336
|
+
Args:
|
|
337
|
+
args: A list of strings containing the args to pass to git.
|
|
338
|
+
stdin: A string to provide on stdin.
|
|
339
|
+
|
|
340
|
+
Returns:
|
|
341
|
+
stdout as a string, or stdout interleaved with stderr if self._verbose
|
|
342
|
+
|
|
343
|
+
Raises:
|
|
344
|
+
Error: The command failed to complete successfully.
|
|
345
|
+
"""
|
|
346
|
+
cwd = self._workdir if self._workdir else self._parent_repo
|
|
347
|
+
logging.debug('Running git %s (cwd %r)', ' '.join('%s' % arg
|
|
348
|
+
for arg in args), cwd)
|
|
349
|
+
|
|
350
|
+
# Discard stderr unless verbose is enabled.
|
|
351
|
+
stderr = None if self._verbose else _DEV_NULL_FILE
|
|
352
|
+
|
|
353
|
+
try:
|
|
354
|
+
popen = subprocess.Popen(['git'] + args, shell=False, cwd=cwd,
|
|
355
|
+
stderr=stderr, stdin=subprocess.PIPE)
|
|
356
|
+
popen.communicate(stdin)
|
|
357
|
+
if popen.returncode != 0:
|
|
358
|
+
raise Error('Command %r failed' % ' '.join(args))
|
|
359
|
+
except OSError as e:
|
|
360
|
+
raise Error('Command %r failed: %s' % (' '.join(args), e))
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def cherry_pick_change(branch, revision, parent_repo, dry_run, verbose=False):
|
|
364
|
+
"""Cherry-picks a change into a branch.
|
|
365
|
+
|
|
366
|
+
Args:
|
|
367
|
+
branch: A string containing the release branch number to which to
|
|
368
|
+
cherry-pick.
|
|
369
|
+
revision: A string containing the revision to cherry-pick. It can be any
|
|
370
|
+
string that git-rev-parse can identify as referring to a single
|
|
371
|
+
revision.
|
|
372
|
+
parent_repo: A string containing the path to the parent repo to use for this
|
|
373
|
+
cherry-pick.
|
|
374
|
+
dry_run: A bool containing whether to stop before uploading the
|
|
375
|
+
cherry-pick cl.
|
|
376
|
+
verbose: A bool containing whether to print verbose logging.
|
|
377
|
+
|
|
378
|
+
Raises:
|
|
379
|
+
Error: An error occurred while attempting to cherry-pick |cl| to |branch|.
|
|
380
|
+
"""
|
|
381
|
+
drover = _Drover(branch, revision, parent_repo, dry_run, verbose)
|
|
382
|
+
drover.run()
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
def continue_cherry_pick(workdir):
|
|
386
|
+
"""Continues a cherry-pick that required manual resolution.
|
|
387
|
+
|
|
388
|
+
Args:
|
|
389
|
+
workdir: A string containing the path to the workdir used by drover.
|
|
390
|
+
"""
|
|
391
|
+
_Drover.resume(workdir)
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
def abort_cherry_pick(workdir):
|
|
395
|
+
"""Aborts a cherry-pick that required manual resolution.
|
|
396
|
+
|
|
397
|
+
Args:
|
|
398
|
+
workdir: A string containing the path to the workdir used by drover.
|
|
399
|
+
"""
|
|
400
|
+
_Drover.abort(workdir)
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
def main():
|
|
404
|
+
parser = argparse.ArgumentParser(
|
|
405
|
+
description='Cherry-pick a change into a release branch.')
|
|
406
|
+
group = parser.add_mutually_exclusive_group(required=True)
|
|
407
|
+
parser.add_argument(
|
|
408
|
+
'--branch',
|
|
409
|
+
type=str,
|
|
410
|
+
metavar='<branch>',
|
|
411
|
+
help='the name of the branch to which to cherry-pick; e.g. 1234')
|
|
412
|
+
group.add_argument(
|
|
413
|
+
'--cherry-pick',
|
|
414
|
+
type=str,
|
|
415
|
+
metavar='<change>',
|
|
416
|
+
help=('the change to cherry-pick; this can be any string '
|
|
417
|
+
'that unambiguously refers to a revision not involving HEAD'))
|
|
418
|
+
group.add_argument(
|
|
419
|
+
'--continue',
|
|
420
|
+
type=str,
|
|
421
|
+
nargs='?',
|
|
422
|
+
dest='resume',
|
|
423
|
+
const=os.path.abspath('.'),
|
|
424
|
+
metavar='path_to_workdir',
|
|
425
|
+
help='Continue a drover cherry-pick after resolving conflicts')
|
|
426
|
+
group.add_argument('--abort',
|
|
427
|
+
type=str,
|
|
428
|
+
nargs='?',
|
|
429
|
+
const=os.path.abspath('.'),
|
|
430
|
+
metavar='path_to_workdir',
|
|
431
|
+
help='Abort a drover cherry-pick')
|
|
432
|
+
parser.add_argument(
|
|
433
|
+
'--parent_checkout',
|
|
434
|
+
type=str,
|
|
435
|
+
default=os.path.abspath('.'),
|
|
436
|
+
metavar='<path_to_parent_checkout>',
|
|
437
|
+
help=('the path to the chromium checkout to use as the source for a '
|
|
438
|
+
'creating git-new-workdir workdir to use for cherry-picking; '
|
|
439
|
+
'if unspecified, the current directory is used'))
|
|
440
|
+
parser.add_argument(
|
|
441
|
+
'--dry-run',
|
|
442
|
+
action='store_true',
|
|
443
|
+
default=False,
|
|
444
|
+
help=("don't actually upload and land; "
|
|
445
|
+
"just check that cherry-picking would succeed"))
|
|
446
|
+
parser.add_argument('-v',
|
|
447
|
+
'--verbose',
|
|
448
|
+
action='store_true',
|
|
449
|
+
default=False,
|
|
450
|
+
help='show verbose logging')
|
|
451
|
+
options = parser.parse_args()
|
|
452
|
+
try:
|
|
453
|
+
if options.resume:
|
|
454
|
+
_Drover.resume(options.resume)
|
|
455
|
+
elif options.abort:
|
|
456
|
+
_Drover.abort(options.abort)
|
|
457
|
+
else:
|
|
458
|
+
if not options.branch:
|
|
459
|
+
parser.error('argument --branch is required for --cherry-pick')
|
|
460
|
+
cherry_pick_change(options.branch, options.cherry_pick,
|
|
461
|
+
options.parent_checkout, options.dry_run,
|
|
462
|
+
options.verbose)
|
|
463
|
+
except Error as e:
|
|
464
|
+
print('Error:', e.message)
|
|
465
|
+
sys.exit(128)
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
if __name__ == '__main__':
|
|
469
|
+
main()
|