libv8 7.3.492.27.1 → 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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +11 -14
- data/CHANGELOG.md +10 -0
- data/README.md +10 -11
- data/Rakefile +30 -36
- data/ext/libv8/builder.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/libv8.gemspec +1 -3
- data/vendor/depot_tools/{cipd.ps1 → .cipd_impl.ps1} +0 -0
- data/vendor/depot_tools/.gitattributes +1 -1
- data/vendor/depot_tools/.gitignore +7 -2
- data/vendor/depot_tools/.style.yapf +3 -1
- data/vendor/depot_tools/.vpython +55 -0
- data/vendor/depot_tools/.vpython3 +23 -0
- data/vendor/depot_tools/CROS_OWNERS +3 -1
- data/vendor/depot_tools/GOMA_OWNERS +9 -0
- data/vendor/depot_tools/LUCI_OWNERS +5 -0
- data/vendor/depot_tools/OWNERS +21 -6
- data/vendor/depot_tools/PRESUBMIT.py +35 -18
- data/vendor/depot_tools/README.git-cl.md +0 -14
- data/vendor/depot_tools/README.md +1 -1
- data/vendor/depot_tools/WATCHLISTS +2 -2
- data/vendor/depot_tools/auth.py +60 -772
- data/vendor/depot_tools/autoninja +12 -6
- data/vendor/depot_tools/autoninja.bat +14 -6
- data/vendor/depot_tools/autoninja.py +64 -27
- data/vendor/depot_tools/bb +1 -1
- data/vendor/depot_tools/bootstrap/{win/README.md → README.md} +28 -14
- data/vendor/depot_tools/bootstrap/{win/win_tools.py → bootstrap.py} +60 -43
- data/vendor/depot_tools/bootstrap/{win/git-bash.template.sh → git-bash.template.sh} +1 -1
- data/vendor/depot_tools/bootstrap/{win/git.template.bat → git.template.bat} +0 -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/{win/profile.d.python.sh → profile.d.python.sh} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.bleeding_edge.bat → python27.bat} +0 -0
- data/vendor/depot_tools/bootstrap/{win/python27.new.bat → python3.bat} +3 -3
- data/vendor/depot_tools/bootstrap/{win/win_tools.bat → win_tools.bat} +21 -16
- data/vendor/depot_tools/bootstrap_python3 +35 -0
- data/vendor/depot_tools/cbuildbot +1 -1
- data/vendor/depot_tools/chrome_set_ver +1 -1
- data/vendor/depot_tools/cipd +43 -39
- data/vendor/depot_tools/cipd.bat +2 -2
- data/vendor/depot_tools/cipd_client_version +1 -1
- data/vendor/depot_tools/cipd_client_version.digests +15 -14
- data/vendor/depot_tools/cipd_manifest.txt +31 -8
- data/vendor/depot_tools/cipd_manifest.versions +278 -158
- data/vendor/depot_tools/cit.py +9 -7
- data/vendor/depot_tools/clang_format.py +4 -1
- data/vendor/depot_tools/clang_format_merge_driver.py +10 -8
- data/vendor/depot_tools/compile_single_file.py +7 -2
- data/vendor/depot_tools/cpplint.py +51 -45
- data/vendor/depot_tools/cros +87 -0
- data/vendor/depot_tools/cros_sdk +1 -1
- data/vendor/depot_tools/crosjobs +13 -0
- data/vendor/depot_tools/detect_host_arch.py +0 -1
- data/vendor/depot_tools/dirmd +12 -0
- data/vendor/depot_tools/dirmd.bat +7 -0
- data/vendor/depot_tools/download_from_google_storage.py +47 -27
- data/vendor/depot_tools/ensure_bootstrap +14 -0
- data/vendor/depot_tools/fetch +14 -1
- data/vendor/depot_tools/fetch.bat +14 -1
- data/vendor/depot_tools/fetch.py +5 -7
- data/vendor/depot_tools/fetch_configs/chromium.py +6 -4
- data/vendor/depot_tools/fetch_configs/devtools-frontend.py +44 -0
- data/vendor/depot_tools/fetch_configs/ios_internal.py +10 -19
- data/vendor/depot_tools/fix_encoding.py +19 -5
- data/vendor/depot_tools/gclient +28 -12
- data/vendor/depot_tools/gclient-new-workdir.py +2 -0
- data/vendor/depot_tools/gclient.bat +18 -1
- data/vendor/depot_tools/gclient.py +160 -119
- data/vendor/depot_tools/gclient_eval.py +119 -107
- data/vendor/depot_tools/gclient_paths.py +67 -57
- data/vendor/depot_tools/gclient_scm.py +181 -159
- data/vendor/depot_tools/gclient_utils.py +177 -124
- data/vendor/depot_tools/gerrit_client.py +21 -13
- data/vendor/depot_tools/gerrit_util.py +188 -228
- data/vendor/depot_tools/git-cache +1 -1
- data/vendor/depot_tools/git-cl +1 -1
- data/vendor/depot_tools/git-drover +1 -1
- data/vendor/depot_tools/git-find-releases +1 -1
- data/vendor/depot_tools/git-footers +1 -1
- data/vendor/depot_tools/git-freeze +1 -1
- data/vendor/depot_tools/git-hyper-blame +1 -1
- data/vendor/depot_tools/git-map +1 -1
- data/vendor/depot_tools/git-map-branches +1 -1
- data/vendor/depot_tools/git-mark-merge-base +1 -1
- data/vendor/depot_tools/git-nav-downstream +1 -1
- data/vendor/depot_tools/git-new-branch +1 -1
- data/vendor/depot_tools/git-number +1 -1
- data/vendor/depot_tools/git-rebase-update +1 -1
- data/vendor/depot_tools/git-rename-branch +1 -1
- data/vendor/depot_tools/git-reparent-branch +1 -1
- data/vendor/depot_tools/git-retry +1 -1
- data/vendor/depot_tools/git-squash-branch +1 -1
- data/vendor/depot_tools/git-thaw +1 -1
- data/vendor/depot_tools/git-upstream-diff +1 -1
- data/vendor/depot_tools/git_cache.py +255 -360
- data/vendor/depot_tools/git_cl.py +1562 -2059
- data/vendor/depot_tools/git_cl_completion.sh +16 -2
- data/vendor/depot_tools/git_common.py +77 -32
- data/vendor/depot_tools/git_drover.py +17 -8
- data/vendor/depot_tools/git_find_releases.py +11 -9
- data/vendor/depot_tools/git_footers.py +13 -9
- data/vendor/depot_tools/git_freezer.py +3 -1
- data/vendor/depot_tools/git_hyper_blame.py +25 -32
- data/vendor/depot_tools/git_map.py +115 -93
- data/vendor/depot_tools/git_map_branches.py +11 -10
- data/vendor/depot_tools/git_mark_merge_base.py +8 -6
- data/vendor/depot_tools/git_nav_downstream.py +9 -6
- data/vendor/depot_tools/git_new_branch.py +39 -33
- data/vendor/depot_tools/git_number.py +28 -17
- data/vendor/depot_tools/git_rebase_update.py +50 -49
- data/vendor/depot_tools/git_rename_branch.py +2 -2
- data/vendor/depot_tools/git_reparent_branch.py +8 -6
- data/vendor/depot_tools/git_upstream_diff.py +4 -2
- data/vendor/depot_tools/gn.py +6 -4
- 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 +5 -2
- data/vendor/depot_tools/gsutil.py.bat +8 -0
- data/vendor/depot_tools/gsutil.vpython +3 -1
- data/vendor/depot_tools/infra/config/OWNERS +2 -2
- data/vendor/depot_tools/infra/config/recipes.cfg +3 -2
- data/vendor/depot_tools/led +1 -1
- data/vendor/depot_tools/lockfile.py +116 -0
- data/vendor/depot_tools/luci-auth +1 -1
- data/vendor/depot_tools/lucicfg +1 -1
- data/vendor/depot_tools/mac_toolchain +1 -1
- data/vendor/depot_tools/man/html/depot_tools.html +1 -1
- data/vendor/depot_tools/man/html/depot_tools_tutorial.html +31 -25
- data/vendor/depot_tools/man/html/git-cl.html +1 -1
- data/vendor/depot_tools/man/html/git-drover.html +18 -18
- data/vendor/depot_tools/man/html/git-footers.html +1 -1
- data/vendor/depot_tools/man/html/git-freeze.html +3 -3
- data/vendor/depot_tools/man/html/git-hyper-blame.html +1 -1
- data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
- data/vendor/depot_tools/man/html/git-map.html +1 -1
- data/vendor/depot_tools/man/html/git-mark-merge-base.html +1 -1
- data/vendor/depot_tools/man/html/git-nav-downstream.html +3 -3
- data/vendor/depot_tools/man/html/git-nav-upstream.html +12 -6
- data/vendor/depot_tools/man/html/git-new-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-rebase-update.html +20 -1
- data/vendor/depot_tools/man/html/git-rename-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-reparent-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-retry.html +1 -1
- data/vendor/depot_tools/man/html/git-squash-branch.html +1 -1
- data/vendor/depot_tools/man/html/git-thaw.html +1 -1
- data/vendor/depot_tools/man/html/git-upstream-diff.html +10 -6
- data/vendor/depot_tools/man/man1/git-cl.1 +4 -4
- data/vendor/depot_tools/man/man1/git-drover.1 +21 -21
- data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
- data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
- data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
- data/vendor/depot_tools/man/man1/git-map.1 +4 -4
- data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
- data/vendor/depot_tools/man/man1/git-nav-downstream.1 +6 -6
- data/vendor/depot_tools/man/man1/git-nav-upstream.1 +15 -9
- data/vendor/depot_tools/man/man1/git-new-branch.1 +3 -3
- data/vendor/depot_tools/man/man1/git-rebase-update.1 +14 -4
- data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-retry.1 +4 -4
- data/vendor/depot_tools/man/man1/git-squash-branch.1 +4 -4
- data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
- data/vendor/depot_tools/man/man1/git-upstream-diff.1 +7 -13
- data/vendor/depot_tools/man/man7/depot_tools.7 +4 -4
- data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +31 -25
- data/vendor/depot_tools/man/src/common_demo_functions.sh +2 -2
- data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +3 -3
- data/vendor/depot_tools/man/src/filter_demo_output.py +4 -2
- data/vendor/depot_tools/man/src/git-new-branch.txt +2 -1
- data/vendor/depot_tools/man/src/git-rebase-update.txt +8 -1
- data/vendor/depot_tools/metrics.README.md +8 -5
- data/vendor/depot_tools/metrics.py +7 -6
- data/vendor/depot_tools/metrics_utils.py +4 -14
- data/vendor/depot_tools/my_activity.py +85 -251
- data/vendor/depot_tools/ninja +1 -0
- data/vendor/depot_tools/ninja-mac +0 -0
- data/vendor/depot_tools/ninjalog_uploader.py +146 -145
- data/vendor/depot_tools/ninjalog_uploader_wrapper.py +69 -60
- data/vendor/depot_tools/owners.py +156 -43
- data/vendor/depot_tools/owners_finder.py +28 -14
- data/vendor/depot_tools/post_build_ninja_summary.py +76 -48
- data/vendor/depot_tools/presubmit_canned_checks.py +293 -106
- data/vendor/depot_tools/presubmit_support.py +527 -333
- data/vendor/depot_tools/prpc +1 -1
- data/vendor/depot_tools/pylint +2 -12
- 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/{depot-tools-auth.bat → pylint.bat} +2 -2
- data/vendor/depot_tools/pylint_main.py +45 -0
- data/vendor/depot_tools/pylintrc +14 -1
- data/vendor/depot_tools/python-bin/python3 +7 -0
- data/vendor/depot_tools/python_runner.sh +13 -8
- data/vendor/depot_tools/rdb +12 -0
- data/vendor/depot_tools/rdb.bat +7 -0
- data/vendor/depot_tools/recipes/OWNERS +0 -1
- data/vendor/depot_tools/recipes/README.recipes.md +218 -151
- data/vendor/depot_tools/recipes/recipe_modules/OWNERS +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +17 -16
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +127 -78
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +18 -3
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_with_branch_heads.json +19 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/clobber.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/deprecated_got_revision_mapping.json +28 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_rebase_patch_ref.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/gerrit_no_reset.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/input_commit_with_id_without_repo.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/multiple_patch_refs.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/no_apply_patch_on_gclient.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/{with_manifest_name.json → no_cp_checkout_HEAD.json} +25 -15
- 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 +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/reset_root_solution_revision.json +29 -8
- 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 +17 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch.json +41 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_fail_patch_download.json +24 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_angle.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_branch_heads.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_feature_branch.json +38 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_v8_feature_branch.json +36 -11
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_gerrit_webrtc.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/tryjob_v8_head_by_default.json +35 -10
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/unrecognized_commit_repo.json +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/with_tags.json +29 -8
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +95 -22
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/resources/bot_update.py +187 -114
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/test_api.py +2 -2
- 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 +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/cipd/__init__.py +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/api.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/basic_pkg.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-failed.json +2 -4
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/describe-many-instances.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/mac64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_file.json +26 -6
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_mode.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/pkg_bad_verfile.json +23 -5
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/full.expected/win64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk arch.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/junk bits.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_arm_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/linux_mips_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/mac_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_32.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/examples/platform_suffix.expected/win_intel_64.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/cipd/test_api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +4 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +3 -1
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +4 -2
- data/vendor/depot_tools/recipes/recipe_modules/gclient/__init__.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gclient/api.py +82 -13
- data/vendor/depot_tools/recipes/recipe_modules/gclient/config.py +23 -11
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/basic.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/revision.json +3 -6
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +3 -4
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.py +7 -7
- 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 +4 -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 +9 -21
- data/vendor/depot_tools/recipes/recipe_modules/gclient/tests/sync_failure.py +24 -0
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/api.py +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/gerrit/examples/full.expected/basic.json +7 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/__init__.py +0 -2
- data/vendor/depot_tools/recipes/recipe_modules/git/api.py +9 -17
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_branch.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_file_name.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_hash.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_ref.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_submodule_update_force.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_tags.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/can_fail_build.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cannot_fail_build.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/cat-file_test.json +4 -12
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_delta.json +2 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_failed.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output.json +1 -7
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/count-objects_with_bad_output_fails_build.json +0 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/curl_trace_file.json +3 -10
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/git-cache-checkout.json +3 -11
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/platform_win.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/rebase_failed.json +3 -13
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/remote_not_origin.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/set_got_revision.json +2 -8
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.py +0 -5
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/__init__.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/api.py +7 -13
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.expected/basic.json +21 -16
- data/vendor/depot_tools/recipes/recipe_modules/git_cl/examples/full.py +1 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/api.py +1 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/examples/full.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/resources/gerrit_client.py +2 -2
- data/vendor/depot_tools/recipes/recipe_modules/gitiles/tests/parse_repo_url.expected/basic.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/api.py +23 -8
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.expected/basic.json +52 -1
- data/vendor/depot_tools/recipes/recipe_modules/gsutil/examples/full.py +15 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/api.py +32 -8
- 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 +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/mac.json +5 -4
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.expected/win.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/osx_sdk/examples/full.py +21 -2
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/__init__.py +20 -0
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/api.py +235 -3
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.expected/basic.json +13 -5
- data/vendor/depot_tools/recipes/recipe_modules/presubmit/examples/full.py +5 -1
- 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/api.py +33 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/basic_tags.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_gerrit_patch_and_target_ref.json +64 -21
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +1 -22
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.py +5 -32
- 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/examples/full.expected/linux.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/mac.json +0 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.expected/win.json +2 -1
- data/vendor/depot_tools/recipes/recipe_modules/windows_sdk/examples/full.py +1 -6
- data/vendor/depot_tools/recipes/recipes.py +49 -28
- data/vendor/depot_tools/recipes/recipes/fetch_end_to_end_test.expected/basic.json +11 -6
- data/vendor/depot_tools/repo +698 -540
- data/vendor/depot_tools/roll-dep +14 -1
- data/vendor/depot_tools/roll-dep.bat +10 -1
- data/vendor/depot_tools/roll_dep.py +15 -10
- data/vendor/depot_tools/scm.py +95 -75
- data/vendor/depot_tools/setup_color.py +36 -2
- data/vendor/depot_tools/split_cl.py +44 -32
- data/vendor/depot_tools/subcommand.py +6 -6
- data/vendor/depot_tools/subprocess2.py +38 -322
- data/vendor/depot_tools/third_party/colorama/LICENSE.txt +0 -1
- data/vendor/depot_tools/third_party/colorama/README.chromium +4 -5
- data/vendor/depot_tools/third_party/colorama/README.rst +346 -0
- data/vendor/depot_tools/third_party/colorama/__init__.py +3 -4
- data/vendor/depot_tools/third_party/colorama/ansi.py +82 -30
- data/vendor/depot_tools/third_party/colorama/ansitowin32.py +105 -37
- data/vendor/depot_tools/third_party/colorama/initialise.py +39 -15
- data/vendor/depot_tools/third_party/colorama/win32.py +46 -28
- data/vendor/depot_tools/third_party/colorama/winterm.py +80 -31
- data/vendor/depot_tools/update_depot_tools +18 -8
- data/vendor/depot_tools/update_depot_tools.bat +19 -15
- data/vendor/depot_tools/upload_metrics.py +7 -6
- data/vendor/depot_tools/upload_to_google_storage.py +23 -16
- data/vendor/depot_tools/vpython +4 -4
- data/vendor/depot_tools/vpython.bat +1 -1
- data/vendor/depot_tools/vpython3 +55 -0
- data/vendor/depot_tools/vpython3.bat +12 -0
- data/vendor/depot_tools/watchlists.py +14 -11
- data/vendor/depot_tools/weekly +4 -2
- data/vendor/depot_tools/win32imports.py +61 -0
- data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +49 -41
- data/vendor/depot_tools/win_toolchain/package_from_installed.py +142 -149
- data/vendor/depot_tools/wtf +5 -3
- data/vendor/depot_tools/yapf +5 -1
- metadata +68 -343
- data/vendor/depot_tools/README.testing +0 -23
- data/vendor/depot_tools/annotated_gclient.py +0 -89
- data/vendor/depot_tools/appengine_mapper.py +0 -23
- data/vendor/depot_tools/bootstrap/win/manifest.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +0 -20
- data/vendor/depot_tools/bootstrap/win/pylint.new.bat +0 -7
- data/vendor/depot_tools/buildbucket.py +0 -186
- data/vendor/depot_tools/checkout.py +0 -431
- data/vendor/depot_tools/cros +0 -1
- data/vendor/depot_tools/dart_format.py +0 -58
- data/vendor/depot_tools/depot-tools-auth +0 -8
- data/vendor/depot_tools/depot-tools-auth.py +0 -102
- data/vendor/depot_tools/my_reviews.py +0 -396
- data/vendor/depot_tools/patch.py +0 -548
- data/vendor/depot_tools/pylint.py +0 -30
- data/vendor/depot_tools/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +0 -239
- data/vendor/depot_tools/recipes/recipe_modules/git/examples/full.expected/basic_luci.json +0 -222
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/__init__.py +0 -4
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/api.py +0 -29
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/basic.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_buildbot_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_generic_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_linux.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_mac.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.expected/paths_kitchen_win.json +0 -15
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/examples/full.py +0 -33
- data/vendor/depot_tools/recipes/recipe_modules/infra_paths/path_config.py +0 -66
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/set_failure_hash_with_no_steps.json +0 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +0 -45
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +0 -45
- data/vendor/depot_tools/rietveld.py +0 -779
- data/vendor/depot_tools/roll-dep-svn +0 -8
- data/vendor/depot_tools/roll-dep-svn.bat +0 -12
- data/vendor/depot_tools/roll_dep_svn.py +0 -430
- data/vendor/depot_tools/support/chromite_wrapper +0 -96
- data/vendor/depot_tools/third_party/boto/LICENSE +0 -18
- data/vendor/depot_tools/third_party/boto/README.chromium +0 -43
- data/vendor/depot_tools/third_party/boto/README.rst +0 -163
- data/vendor/depot_tools/third_party/boto/__init__.py +0 -793
- data/vendor/depot_tools/third_party/boto/auth.py +0 -682
- data/vendor/depot_tools/third_party/boto/auth_handler.py +0 -58
- data/vendor/depot_tools/third_party/boto/cacerts/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/cacerts/cacerts.txt +0 -2183
- data/vendor/depot_tools/third_party/boto/compat.py +0 -28
- data/vendor/depot_tools/third_party/boto/connection.py +0 -1081
- data/vendor/depot_tools/third_party/boto/contrib/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/contrib/ymlmessage.py +0 -52
- data/vendor/depot_tools/third_party/boto/core/README +0 -58
- data/vendor/depot_tools/third_party/boto/core/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/core/auth.py +0 -78
- data/vendor/depot_tools/third_party/boto/core/credentials.py +0 -154
- data/vendor/depot_tools/third_party/boto/core/dictresponse.py +0 -178
- data/vendor/depot_tools/third_party/boto/core/service.py +0 -67
- data/vendor/depot_tools/third_party/boto/datapipeline/__init__.py +0 -0
- data/vendor/depot_tools/third_party/boto/datapipeline/exceptions.py +0 -42
- data/vendor/depot_tools/third_party/boto/datapipeline/layer1.py +0 -546
- data/vendor/depot_tools/third_party/boto/ecs/__init__.py +0 -90
- data/vendor/depot_tools/third_party/boto/ecs/item.py +0 -153
- data/vendor/depot_tools/third_party/boto/exception.py +0 -476
- data/vendor/depot_tools/third_party/boto/file/README +0 -49
- data/vendor/depot_tools/third_party/boto/file/__init__.py +0 -28
- data/vendor/depot_tools/third_party/boto/file/bucket.py +0 -112
- data/vendor/depot_tools/third_party/boto/file/connection.py +0 -33
- data/vendor/depot_tools/third_party/boto/file/key.py +0 -199
- data/vendor/depot_tools/third_party/boto/file/simpleresultset.py +0 -30
- data/vendor/depot_tools/third_party/boto/fps/__init__.py +0 -21
- data/vendor/depot_tools/third_party/boto/fps/connection.py +0 -369
- data/vendor/depot_tools/third_party/boto/fps/exception.py +0 -344
- data/vendor/depot_tools/third_party/boto/fps/response.py +0 -175
- data/vendor/depot_tools/third_party/boto/gs/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/gs/acl.py +0 -304
- data/vendor/depot_tools/third_party/boto/gs/bucket.py +0 -870
- data/vendor/depot_tools/third_party/boto/gs/bucketlistresultset.py +0 -64
- data/vendor/depot_tools/third_party/boto/gs/connection.py +0 -103
- data/vendor/depot_tools/third_party/boto/gs/cors.py +0 -169
- data/vendor/depot_tools/third_party/boto/gs/key.py +0 -704
- data/vendor/depot_tools/third_party/boto/gs/resumable_upload_handler.py +0 -659
- data/vendor/depot_tools/third_party/boto/gs/user.py +0 -54
- data/vendor/depot_tools/third_party/boto/handler.py +0 -44
- data/vendor/depot_tools/third_party/boto/https_connection.py +0 -124
- data/vendor/depot_tools/third_party/boto/jsonresponse.py +0 -163
- data/vendor/depot_tools/third_party/boto/manage/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/manage/cmdshell.py +0 -241
- data/vendor/depot_tools/third_party/boto/manage/propget.py +0 -64
- data/vendor/depot_tools/third_party/boto/manage/server.py +0 -556
- data/vendor/depot_tools/third_party/boto/manage/task.py +0 -175
- data/vendor/depot_tools/third_party/boto/manage/test_manage.py +0 -34
- data/vendor/depot_tools/third_party/boto/manage/volume.py +0 -420
- data/vendor/depot_tools/third_party/boto/mashups/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/mashups/interactive.py +0 -97
- data/vendor/depot_tools/third_party/boto/mashups/iobject.py +0 -115
- data/vendor/depot_tools/third_party/boto/mashups/order.py +0 -211
- data/vendor/depot_tools/third_party/boto/mashups/server.py +0 -395
- data/vendor/depot_tools/third_party/boto/plugin.py +0 -90
- data/vendor/depot_tools/third_party/boto/provider.py +0 -337
- data/vendor/depot_tools/third_party/boto/pyami/__init__.py +0 -22
- data/vendor/depot_tools/third_party/boto/pyami/bootstrap.py +0 -134
- data/vendor/depot_tools/third_party/boto/pyami/config.py +0 -229
- data/vendor/depot_tools/third_party/boto/pyami/copybot.cfg +0 -60
- data/vendor/depot_tools/third_party/boto/pyami/copybot.py +0 -97
- data/vendor/depot_tools/third_party/boto/pyami/helloworld.py +0 -28
- data/vendor/depot_tools/third_party/boto/pyami/launch_ami.py +0 -178
- data/vendor/depot_tools/third_party/boto/pyami/scriptbase.py +0 -44
- data/vendor/depot_tools/third_party/boto/pyami/startup.py +0 -60
- data/vendor/depot_tools/third_party/boto/regioninfo.py +0 -63
- data/vendor/depot_tools/third_party/boto/resultset.py +0 -169
- data/vendor/depot_tools/third_party/boto/roboto/__init__.py +0 -1
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryrequest.py +0 -504
- data/vendor/depot_tools/third_party/boto/roboto/awsqueryservice.py +0 -121
- data/vendor/depot_tools/third_party/boto/roboto/param.py +0 -147
- data/vendor/depot_tools/third_party/boto/s3/__init__.py +0 -84
- data/vendor/depot_tools/third_party/boto/s3/acl.py +0 -164
- data/vendor/depot_tools/third_party/boto/s3/bucket.py +0 -1634
- data/vendor/depot_tools/third_party/boto/s3/bucketlistresultset.py +0 -139
- data/vendor/depot_tools/third_party/boto/s3/bucketlogging.py +0 -83
- data/vendor/depot_tools/third_party/boto/s3/connection.py +0 -540
- data/vendor/depot_tools/third_party/boto/s3/cors.py +0 -210
- data/vendor/depot_tools/third_party/boto/s3/deletemarker.py +0 -55
- data/vendor/depot_tools/third_party/boto/s3/key.py +0 -1712
- data/vendor/depot_tools/third_party/boto/s3/keyfile.py +0 -134
- data/vendor/depot_tools/third_party/boto/s3/lifecycle.py +0 -231
- data/vendor/depot_tools/third_party/boto/s3/multidelete.py +0 -138
- data/vendor/depot_tools/third_party/boto/s3/multipart.py +0 -315
- data/vendor/depot_tools/third_party/boto/s3/prefix.py +0 -42
- data/vendor/depot_tools/third_party/boto/s3/resumable_download_handler.py +0 -339
- data/vendor/depot_tools/third_party/boto/s3/tagging.py +0 -71
- data/vendor/depot_tools/third_party/boto/s3/user.py +0 -49
- data/vendor/depot_tools/third_party/boto/s3/website.py +0 -237
- data/vendor/depot_tools/third_party/boto/services/__init__.py +0 -23
- data/vendor/depot_tools/third_party/boto/services/bs.py +0 -179
- data/vendor/depot_tools/third_party/boto/services/message.py +0 -58
- data/vendor/depot_tools/third_party/boto/services/result.py +0 -136
- data/vendor/depot_tools/third_party/boto/services/service.py +0 -161
- data/vendor/depot_tools/third_party/boto/services/servicedef.py +0 -91
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.cfg +0 -43
- data/vendor/depot_tools/third_party/boto/services/sonofmmm.py +0 -81
- data/vendor/depot_tools/third_party/boto/services/submit.py +0 -88
- data/vendor/depot_tools/third_party/boto/ses/__init__.py +0 -54
- data/vendor/depot_tools/third_party/boto/ses/connection.py +0 -521
- data/vendor/depot_tools/third_party/boto/ses/exceptions.py +0 -77
- data/vendor/depot_tools/third_party/boto/storage_uri.py +0 -835
- data/vendor/depot_tools/third_party/boto/sts/__init__.py +0 -55
- data/vendor/depot_tools/third_party/boto/sts/connection.py +0 -207
- data/vendor/depot_tools/third_party/boto/sts/credentials.py +0 -215
- data/vendor/depot_tools/third_party/boto/utils.py +0 -927
- data/vendor/depot_tools/third_party/colorama/README.txt +0 -304
- data/vendor/depot_tools/third_party/fancy_urllib/README +0 -22
- data/vendor/depot_tools/third_party/fancy_urllib/__init__.py +0 -460
- data/vendor/depot_tools/third_party/logilab/README.chromium +0 -6
- data/vendor/depot_tools/third_party/logilab/__init__.py +0 -0
- data/vendor/depot_tools/third_party/logilab/astroid/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/logilab/astroid/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/astroid/__init__.py +0 -136
- data/vendor/depot_tools/third_party/logilab/astroid/__pkginfo__.py +0 -42
- data/vendor/depot_tools/third_party/logilab/astroid/arguments.py +0 -233
- data/vendor/depot_tools/third_party/logilab/astroid/as_string.py +0 -548
- data/vendor/depot_tools/third_party/logilab/astroid/astpeephole.py +0 -86
- data/vendor/depot_tools/third_party/logilab/astroid/bases.py +0 -636
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_builtin_inference.py +0 -336
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_dateutil.py +0 -15
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_gi.py +0 -195
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_mechanize.py +0 -18
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_nose.py +0 -82
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_numpy.py +0 -62
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_pytest.py +0 -76
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_qt.py +0 -44
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_six.py +0 -288
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_ssl.py +0 -65
- data/vendor/depot_tools/third_party/logilab/astroid/brain/brain_stdlib.py +0 -473
- data/vendor/depot_tools/third_party/logilab/astroid/builder.py +0 -263
- data/vendor/depot_tools/third_party/logilab/astroid/context.py +0 -81
- data/vendor/depot_tools/third_party/logilab/astroid/decorators.py +0 -75
- data/vendor/depot_tools/third_party/logilab/astroid/exceptions.py +0 -71
- data/vendor/depot_tools/third_party/logilab/astroid/inference.py +0 -359
- data/vendor/depot_tools/third_party/logilab/astroid/manager.py +0 -267
- data/vendor/depot_tools/third_party/logilab/astroid/mixins.py +0 -147
- data/vendor/depot_tools/third_party/logilab/astroid/modutils.py +0 -741
- data/vendor/depot_tools/third_party/logilab/astroid/node_classes.py +0 -1053
- data/vendor/depot_tools/third_party/logilab/astroid/nodes.py +0 -87
- data/vendor/depot_tools/third_party/logilab/astroid/objects.py +0 -186
- data/vendor/depot_tools/third_party/logilab/astroid/protocols.py +0 -470
- data/vendor/depot_tools/third_party/logilab/astroid/raw_building.py +0 -390
- data/vendor/depot_tools/third_party/logilab/astroid/rebuilder.py +0 -989
- data/vendor/depot_tools/third_party/logilab/astroid/scoped_nodes.py +0 -1716
- data/vendor/depot_tools/third_party/logilab/astroid/test_utils.py +0 -201
- data/vendor/depot_tools/third_party/logilab/astroid/transforms.py +0 -96
- data/vendor/depot_tools/third_party/logilab/astroid/util.py +0 -89
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/LICENSE +0 -19
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/__init__.py +0 -20
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/cext.c +0 -1421
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/compat.py +0 -9
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/simple.py +0 -246
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/slots.py +0 -414
- data/vendor/depot_tools/third_party/logilab/lazy_object_proxy/utils.py +0 -13
- data/vendor/depot_tools/third_party/logilab/wrapt/LICENSE +0 -24
- data/vendor/depot_tools/third_party/logilab/wrapt/README.chromium +0 -11
- data/vendor/depot_tools/third_party/logilab/wrapt/__init__.py +0 -19
- data/vendor/depot_tools/third_party/logilab/wrapt/_wrappers.c +0 -2729
- data/vendor/depot_tools/third_party/logilab/wrapt/arguments.py +0 -96
- data/vendor/depot_tools/third_party/logilab/wrapt/decorators.py +0 -512
- data/vendor/depot_tools/third_party/logilab/wrapt/importer.py +0 -228
- data/vendor/depot_tools/third_party/logilab/wrapt/wrappers.py +0 -901
- data/vendor/depot_tools/third_party/mock/LICENSE.txt +0 -26
- data/vendor/depot_tools/third_party/mock/README.chromium +0 -24
- data/vendor/depot_tools/third_party/mock/__init__.py +0 -2366
- data/vendor/depot_tools/third_party/oauth2client/LICENSE +0 -202
- data/vendor/depot_tools/third_party/oauth2client/MODIFICATIONS.diff +0 -66
- data/vendor/depot_tools/third_party/oauth2client/README.chromium +0 -15
- data/vendor/depot_tools/third_party/oauth2client/__init__.py +0 -5
- data/vendor/depot_tools/third_party/oauth2client/anyjson.py +0 -32
- data/vendor/depot_tools/third_party/oauth2client/appengine.py +0 -963
- data/vendor/depot_tools/third_party/oauth2client/client.py +0 -1363
- data/vendor/depot_tools/third_party/oauth2client/clientsecrets.py +0 -153
- data/vendor/depot_tools/third_party/oauth2client/crypt.py +0 -377
- data/vendor/depot_tools/third_party/oauth2client/django_orm.py +0 -134
- data/vendor/depot_tools/third_party/oauth2client/file.py +0 -124
- data/vendor/depot_tools/third_party/oauth2client/gce.py +0 -90
- data/vendor/depot_tools/third_party/oauth2client/keyring_storage.py +0 -109
- data/vendor/depot_tools/third_party/oauth2client/locked_file.py +0 -373
- data/vendor/depot_tools/third_party/oauth2client/multistore_file.py +0 -465
- data/vendor/depot_tools/third_party/oauth2client/old_run.py +0 -160
- data/vendor/depot_tools/third_party/oauth2client/tools.py +0 -243
- data/vendor/depot_tools/third_party/oauth2client/util.py +0 -196
- data/vendor/depot_tools/third_party/oauth2client/xsrfutil.py +0 -113
- data/vendor/depot_tools/third_party/protobuf26/README.chromium +0 -23
- data/vendor/depot_tools/third_party/protobuf26/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/compiler/plugin_pb2.py +0 -184
- data/vendor/depot_tools/third_party/protobuf26/descriptor.py +0 -849
- data/vendor/depot_tools/third_party/protobuf26/descriptor_database.py +0 -137
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pb2.py +0 -1522
- data/vendor/depot_tools/third_party/protobuf26/descriptor_pool.py +0 -643
- data/vendor/depot_tools/third_party/protobuf26/internal/__init__.py +0 -0
- data/vendor/depot_tools/third_party/protobuf26/internal/api_implementation.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/containers.py +0 -269
- data/vendor/depot_tools/third_party/protobuf26/internal/cpp_message.py +0 -663
- data/vendor/depot_tools/third_party/protobuf26/internal/decoder.py +0 -831
- data/vendor/depot_tools/third_party/protobuf26/internal/encoder.py +0 -788
- data/vendor/depot_tools/third_party/protobuf26/internal/enum_type_wrapper.py +0 -89
- data/vendor/depot_tools/third_party/protobuf26/internal/message_listener.py +0 -78
- data/vendor/depot_tools/third_party/protobuf26/internal/python_message.py +0 -1247
- data/vendor/depot_tools/third_party/protobuf26/internal/type_checkers.py +0 -328
- data/vendor/depot_tools/third_party/protobuf26/internal/wire_format.py +0 -268
- data/vendor/depot_tools/third_party/protobuf26/message.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/message_factory.py +0 -155
- data/vendor/depot_tools/third_party/protobuf26/reflection.py +0 -205
- data/vendor/depot_tools/third_party/protobuf26/service.py +0 -226
- data/vendor/depot_tools/third_party/protobuf26/service_reflection.py +0 -284
- data/vendor/depot_tools/third_party/protobuf26/symbol_database.py +0 -185
- data/vendor/depot_tools/third_party/protobuf26/text_encoding.py +0 -110
- data/vendor/depot_tools/third_party/protobuf26/text_format.py +0 -873
- data/vendor/depot_tools/third_party/pylint.py +0 -37
- data/vendor/depot_tools/third_party/pylint/LICENSE.txt +0 -340
- data/vendor/depot_tools/third_party/pylint/README.chromium +0 -30
- data/vendor/depot_tools/third_party/pylint/__init__.py +0 -46
- data/vendor/depot_tools/third_party/pylint/__main__.py +0 -3
- data/vendor/depot_tools/third_party/pylint/__pkginfo__.py +0 -80
- data/vendor/depot_tools/third_party/pylint/checkers/__init__.py +0 -123
- data/vendor/depot_tools/third_party/pylint/checkers/async.py +0 -82
- data/vendor/depot_tools/third_party/pylint/checkers/base.py +0 -2010
- data/vendor/depot_tools/third_party/pylint/checkers/classes.py +0 -1120
- data/vendor/depot_tools/third_party/pylint/checkers/design_analysis.py +0 -348
- data/vendor/depot_tools/third_party/pylint/checkers/exceptions.py +0 -369
- data/vendor/depot_tools/third_party/pylint/checkers/format.py +0 -993
- data/vendor/depot_tools/third_party/pylint/checkers/imports.py +0 -654
- data/vendor/depot_tools/third_party/pylint/checkers/logging.py +0 -258
- data/vendor/depot_tools/third_party/pylint/checkers/misc.py +0 -105
- data/vendor/depot_tools/third_party/pylint/checkers/newstyle.py +0 -169
- data/vendor/depot_tools/third_party/pylint/checkers/python3.py +0 -591
- data/vendor/depot_tools/third_party/pylint/checkers/raw_metrics.py +0 -129
- data/vendor/depot_tools/third_party/pylint/checkers/similar.py +0 -371
- data/vendor/depot_tools/third_party/pylint/checkers/spelling.py +0 -264
- data/vendor/depot_tools/third_party/pylint/checkers/stdlib.py +0 -280
- data/vendor/depot_tools/third_party/pylint/checkers/strings.py +0 -618
- data/vendor/depot_tools/third_party/pylint/checkers/typecheck.py +0 -974
- data/vendor/depot_tools/third_party/pylint/checkers/utils.py +0 -741
- data/vendor/depot_tools/third_party/pylint/checkers/variables.py +0 -1191
- data/vendor/depot_tools/third_party/pylint/config.py +0 -820
- data/vendor/depot_tools/third_party/pylint/epylint.py +0 -181
- data/vendor/depot_tools/third_party/pylint/extensions/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pylint/extensions/check_docs.py +0 -311
- data/vendor/depot_tools/third_party/pylint/extensions/check_elif.py +0 -62
- data/vendor/depot_tools/third_party/pylint/graph.py +0 -179
- data/vendor/depot_tools/third_party/pylint/gui.py +0 -531
- data/vendor/depot_tools/third_party/pylint/interfaces.py +0 -102
- data/vendor/depot_tools/third_party/pylint/lint.py +0 -1381
- data/vendor/depot_tools/third_party/pylint/pyreverse/__init__.py +0 -5
- data/vendor/depot_tools/third_party/pylint/pyreverse/diadefslib.py +0 -230
- data/vendor/depot_tools/third_party/pylint/pyreverse/diagrams.py +0 -258
- data/vendor/depot_tools/third_party/pylint/pyreverse/inspector.py +0 -372
- data/vendor/depot_tools/third_party/pylint/pyreverse/main.py +0 -147
- data/vendor/depot_tools/third_party/pylint/pyreverse/utils.py +0 -210
- data/vendor/depot_tools/third_party/pylint/pyreverse/vcgutils.py +0 -198
- data/vendor/depot_tools/third_party/pylint/pyreverse/writer.py +0 -198
- data/vendor/depot_tools/third_party/pylint/reporters/__init__.py +0 -149
- data/vendor/depot_tools/third_party/pylint/reporters/guireporter.py +0 -27
- data/vendor/depot_tools/third_party/pylint/reporters/html.py +0 -108
- data/vendor/depot_tools/third_party/pylint/reporters/json.py +0 -64
- data/vendor/depot_tools/third_party/pylint/reporters/text.py +0 -237
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/__init__.py +0 -106
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/html_writer.py +0 -93
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/nodes.py +0 -181
- data/vendor/depot_tools/third_party/pylint/reporters/ureports/text_writer.py +0 -99
- data/vendor/depot_tools/third_party/pylint/testutils.py +0 -414
- data/vendor/depot_tools/third_party/pylint/utils.py +0 -1148
- data/vendor/depot_tools/third_party/pymox/COPYING +0 -202
- data/vendor/depot_tools/third_party/pymox/MANIFEST.in +0 -5
- data/vendor/depot_tools/third_party/pymox/README +0 -56
- data/vendor/depot_tools/third_party/pymox/__init__.py +0 -0
- data/vendor/depot_tools/third_party/pymox/mox.py +0 -1643
- data/vendor/depot_tools/third_party/pymox/mox_test.py +0 -1708
- data/vendor/depot_tools/third_party/pymox/mox_test_helper.py +0 -76
- data/vendor/depot_tools/third_party/pymox/setup.py +0 -14
- data/vendor/depot_tools/third_party/pymox/stubout.py +0 -142
- data/vendor/depot_tools/third_party/pymox/stubout_test.py +0 -47
- data/vendor/depot_tools/third_party/pymox/stubout_testee.py +0 -2
- data/vendor/depot_tools/third_party/simplejson/LICENSE.txt +0 -19
- data/vendor/depot_tools/third_party/simplejson/PKG-INFO +0 -29
- data/vendor/depot_tools/third_party/simplejson/__init__.py +0 -437
- data/vendor/depot_tools/third_party/simplejson/decoder.py +0 -421
- data/vendor/depot_tools/third_party/simplejson/encoder.py +0 -501
- data/vendor/depot_tools/third_party/simplejson/ordered_dict.py +0 -119
- data/vendor/depot_tools/third_party/simplejson/scanner.py +0 -77
- data/vendor/depot_tools/third_party/simplejson/tool.py +0 -39
- data/vendor/depot_tools/third_party/upload.py +0 -2565
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
Most of the tests require a local Rietveld server.
|
|
2
|
-
|
|
3
|
-
To set this up:
|
|
4
|
-
Method 1: Let the presubmit script do the work for you.
|
|
5
|
-
$ git cl presubmit
|
|
6
|
-
|
|
7
|
-
Method 2: Manual.
|
|
8
|
-
1) Check out a copy of Rietveld:
|
|
9
|
-
$ svn checkout http://rietveld.googlecode.com/svn/trunk/ rietveld
|
|
10
|
-
(Use git-svn if you must, but man is it slow.)
|
|
11
|
-
2) Get the Google App Engine SDK:
|
|
12
|
-
http://code.google.com/appengine/downloads.html
|
|
13
|
-
3) To run Rietveld you will need Django 1.0, which is not included
|
|
14
|
-
with the App Engine SDK. Go to http://www.djangoproject.com/download ,
|
|
15
|
-
download a Django from the 1.0 series (it's in the sidebar on the right),
|
|
16
|
-
untar it, then
|
|
17
|
-
$ export PYTHONPATH=`pwd`/Django-1.0.4
|
|
18
|
-
4) Run Rietveld:
|
|
19
|
-
$ /path/to/appengine/sdk/dev_appserver.py /path/to/rietveld
|
|
20
|
-
(If using one of the App Engine launchers, be sure to use port 8080
|
|
21
|
-
for this project.)
|
|
22
|
-
|
|
23
|
-
And then, finally, run the tests.
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# Copyright 2013 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
|
-
|
|
6
|
-
"""Wraps gclient calls with annotated output.
|
|
7
|
-
|
|
8
|
-
Note that you will have to use -- to stop option parsing for gclient flags.
|
|
9
|
-
|
|
10
|
-
To run `gclient sync --gclientfile=.gclient` and annotate got_v8_revision:
|
|
11
|
-
`annotated_gclient.py --revision-mapping='{"src/v8": "got_v8_revision"}' --
|
|
12
|
-
sync --gclientfile=.gclient`
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
import contextlib
|
|
16
|
-
import json
|
|
17
|
-
import optparse
|
|
18
|
-
import os
|
|
19
|
-
import subprocess
|
|
20
|
-
import sys
|
|
21
|
-
import tempfile
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
@contextlib.contextmanager
|
|
25
|
-
def temp_filename(suffix='', prefix='tmp'):
|
|
26
|
-
output_fd, output_file = tempfile.mkstemp(suffix=suffix, prefix=prefix)
|
|
27
|
-
os.close(output_fd)
|
|
28
|
-
|
|
29
|
-
yield output_file
|
|
30
|
-
|
|
31
|
-
try:
|
|
32
|
-
os.remove(output_file)
|
|
33
|
-
except OSError as e:
|
|
34
|
-
print 'Error cleaning up temp file %s: %s' % (output_file, e)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def parse_got_revision(filename, revision_mapping):
|
|
38
|
-
result = {}
|
|
39
|
-
with open(filename) as f:
|
|
40
|
-
data = json.load(f)
|
|
41
|
-
|
|
42
|
-
for path, info in data['solutions'].iteritems():
|
|
43
|
-
# gclient json paths always end with a slash
|
|
44
|
-
path = path.rstrip('/')
|
|
45
|
-
if path in revision_mapping:
|
|
46
|
-
propname = revision_mapping[path]
|
|
47
|
-
result[propname] = info['revision']
|
|
48
|
-
|
|
49
|
-
return result
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def emit_buildprops(got_revisions):
|
|
53
|
-
for prop, revision in got_revisions.iteritems():
|
|
54
|
-
print '@@@SET_BUILD_PROPERTY@%s@%s@@@' % (prop, json.dumps(revision))
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def main():
|
|
58
|
-
parser = optparse.OptionParser(
|
|
59
|
-
description=('Runs gclient and annotates the output with any '
|
|
60
|
-
'got_revisions.'))
|
|
61
|
-
parser.add_option('--revision-mapping', default='{}',
|
|
62
|
-
help='json dict of directory-to-property mappings.')
|
|
63
|
-
parser.add_option('--suffix', default='gclient',
|
|
64
|
-
help='tempfile suffix')
|
|
65
|
-
opts, args = parser.parse_args()
|
|
66
|
-
|
|
67
|
-
revision_mapping = json.loads(opts.revision_mapping)
|
|
68
|
-
|
|
69
|
-
if not args:
|
|
70
|
-
parser.error('Must provide arguments to gclient.')
|
|
71
|
-
|
|
72
|
-
if any(a.startswith('--output-json') for a in args):
|
|
73
|
-
parser.error('Can\'t call annotated_gclient with --output-json.')
|
|
74
|
-
|
|
75
|
-
with temp_filename(opts.suffix) as f:
|
|
76
|
-
cmd = ['gclient']
|
|
77
|
-
cmd.extend(args)
|
|
78
|
-
cmd.extend(['--output-json', f])
|
|
79
|
-
p = subprocess.Popen(cmd)
|
|
80
|
-
p.wait()
|
|
81
|
-
|
|
82
|
-
if p.returncode == 0:
|
|
83
|
-
revisions = parse_got_revision(f, revision_mapping)
|
|
84
|
-
emit_buildprops(revisions)
|
|
85
|
-
return p.returncode
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if __name__ == '__main__':
|
|
89
|
-
sys.exit(main())
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 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
|
-
"""Ensures that all depot_tools talks directly to appengine to avoid SNI."""
|
|
6
|
-
|
|
7
|
-
import urlparse
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
mapping = {
|
|
11
|
-
'codereview.chromium.org': 'chromiumcodereview.appspot.com',
|
|
12
|
-
'crashpad.chromium.org': 'crashpad-home.appspot.com',
|
|
13
|
-
'bugs.chromium.org': 'monorail-prod.appspot.com',
|
|
14
|
-
'bugs-staging.chromium.org': 'monorail-staging.appspot.com',
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def MapUrl(url):
|
|
19
|
-
parts = list(urlparse.urlsplit(url))
|
|
20
|
-
new_netloc = mapping.get(parts[1])
|
|
21
|
-
if new_netloc:
|
|
22
|
-
parts[1] = new_netloc
|
|
23
|
-
return urlparse.urlunsplit(parts)
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# CIPD manifest for Windows tools.
|
|
2
|
-
#
|
|
3
|
-
# We must install anything that we want included on PATH to a different
|
|
4
|
-
# subdirectory than Git, as Git's msys bash strips its root directory
|
|
5
|
-
# from PATH, hence the subdirs.
|
|
6
|
-
#
|
|
7
|
-
# If any paths or package layouts change, updates will be required in
|
|
8
|
-
# "win_tools.bat" and "win_tools.py" templates.
|
|
9
|
-
#
|
|
10
|
-
# "win_tools.bat" has a hard requirement that the Python package contains the
|
|
11
|
-
# string "cpython" and ends with the CIPD tag "version:VERSION". It uses this
|
|
12
|
-
# to extract VERSION.
|
|
13
|
-
|
|
14
|
-
$VerifiedPlatform windows-386 windows-amd64
|
|
15
|
-
|
|
16
|
-
@Subdir python
|
|
17
|
-
infra/python/cpython/windows-386 version:2.7.6
|
|
18
|
-
|
|
19
|
-
@Subdir git
|
|
20
|
-
infra/git/windows-${arch} version:2.21.0.chromium16
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# CIPD manifest for Windows tools.
|
|
2
|
-
#
|
|
3
|
-
# We must install anything that we want included on PATH to a different
|
|
4
|
-
# subdirectory than Git, as Git's msys bash strips its root directory
|
|
5
|
-
# from PATH, hence the subdirs.
|
|
6
|
-
#
|
|
7
|
-
# If any paths or package layouts change, updates will be required in
|
|
8
|
-
# "win_tools.bat" and "win_tools.py" templates.
|
|
9
|
-
#
|
|
10
|
-
# "win_tools.bat" has a hard requirement that the Python package contains the
|
|
11
|
-
# string "cpython" and ends with the CIPD tag "version:VERSION". It uses this
|
|
12
|
-
# to extract VERSION.
|
|
13
|
-
|
|
14
|
-
$VerifiedPlatform windows-386 windows-amd64
|
|
15
|
-
|
|
16
|
-
@Subdir python
|
|
17
|
-
infra/python/cpython/${platform} version:2.7.13.chromium7
|
|
18
|
-
|
|
19
|
-
@Subdir git
|
|
20
|
-
infra/git/windows-${arch} version:2.21.0.chromium16
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# Copyright (c) 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
|
-
|
|
6
|
-
"""Tool for interacting with Buildbucket.
|
|
7
|
-
|
|
8
|
-
Usage:
|
|
9
|
-
$ depot-tools-auth login https://cr-buildbucket.appspot.com
|
|
10
|
-
$ buildbucket.py \
|
|
11
|
-
put \
|
|
12
|
-
--bucket master.tryserver.chromium.linux \
|
|
13
|
-
--builder my-builder \
|
|
14
|
-
|
|
15
|
-
Puts a build into buildbucket for my-builder on tryserver.chromium.linux.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
import argparse
|
|
19
|
-
import json
|
|
20
|
-
import urlparse
|
|
21
|
-
import os
|
|
22
|
-
import sys
|
|
23
|
-
import time
|
|
24
|
-
|
|
25
|
-
from third_party import httplib2
|
|
26
|
-
|
|
27
|
-
import auth
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
BUILDBUCKET_URL = 'https://cr-buildbucket.appspot.com'
|
|
31
|
-
BUILDBUCKET_API_URL = urlparse.urljoin(
|
|
32
|
-
BUILDBUCKET_URL,
|
|
33
|
-
'_ah/api/buildbucket/v1/builds',
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def add_common_arguments(parser):
|
|
38
|
-
parser.add_argument(
|
|
39
|
-
'--response-json',
|
|
40
|
-
help=(
|
|
41
|
-
'A path to which the response JSON will be written. '
|
|
42
|
-
'If no valid JSON is received, nothing will be written.'
|
|
43
|
-
)
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def main(argv):
|
|
48
|
-
parser = argparse.ArgumentParser()
|
|
49
|
-
parser.add_argument(
|
|
50
|
-
'-v',
|
|
51
|
-
'--verbose',
|
|
52
|
-
action='store_true',
|
|
53
|
-
)
|
|
54
|
-
subparsers = parser.add_subparsers(dest='command')
|
|
55
|
-
|
|
56
|
-
get_parser = subparsers.add_parser('get')
|
|
57
|
-
add_common_arguments(get_parser)
|
|
58
|
-
get_parser.add_argument(
|
|
59
|
-
'--id',
|
|
60
|
-
help='The ID of the build to get the status of.',
|
|
61
|
-
required=True,
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
put_parser = subparsers.add_parser('put')
|
|
65
|
-
add_common_arguments(put_parser)
|
|
66
|
-
put_parser.add_argument(
|
|
67
|
-
'-b',
|
|
68
|
-
'--bucket',
|
|
69
|
-
help=(
|
|
70
|
-
'The bucket to schedule the build on. Typically the master name, e.g.'
|
|
71
|
-
' master.tryserver.chromium.linux.'
|
|
72
|
-
),
|
|
73
|
-
required=True,
|
|
74
|
-
)
|
|
75
|
-
put_parser.add_argument(
|
|
76
|
-
'-c',
|
|
77
|
-
'--changes',
|
|
78
|
-
help='A flie to load a JSON list of changes dicts from.',
|
|
79
|
-
)
|
|
80
|
-
put_parser.add_argument(
|
|
81
|
-
'-n',
|
|
82
|
-
'--builder-name',
|
|
83
|
-
help='The builder to schedule the build on.',
|
|
84
|
-
required=True,
|
|
85
|
-
)
|
|
86
|
-
put_parser.add_argument(
|
|
87
|
-
'-p',
|
|
88
|
-
'--properties',
|
|
89
|
-
help=(
|
|
90
|
-
'A file to load a JSON dict of properties from. Use "-" to pipe JSON '
|
|
91
|
-
'from another command.'
|
|
92
|
-
),
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
retry_parser = subparsers.add_parser('retry')
|
|
96
|
-
add_common_arguments(retry_parser)
|
|
97
|
-
retry_parser.add_argument(
|
|
98
|
-
'--id',
|
|
99
|
-
help='The ID of the build to retry.',
|
|
100
|
-
required=True,
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
args = parser.parse_args()
|
|
104
|
-
|
|
105
|
-
body = None
|
|
106
|
-
|
|
107
|
-
if args.command == 'get':
|
|
108
|
-
method = 'GET'
|
|
109
|
-
url = '%s/%s' % (BUILDBUCKET_API_URL, args.id)
|
|
110
|
-
elif args.command == 'put':
|
|
111
|
-
changes = []
|
|
112
|
-
if args.changes:
|
|
113
|
-
try:
|
|
114
|
-
with open(args.changes) as fp:
|
|
115
|
-
changes.extend(json.load(fp))
|
|
116
|
-
except (TypeError, ValueError):
|
|
117
|
-
sys.stderr.write('%s contained invalid JSON list.\n' % args.changes)
|
|
118
|
-
raise
|
|
119
|
-
|
|
120
|
-
properties = {}
|
|
121
|
-
if args.properties:
|
|
122
|
-
try:
|
|
123
|
-
# Allow using pipes to stream properties from another command, e.g.
|
|
124
|
-
# echo '{"foo": "bar", "baz": 42}' | buildbucket.py -p -
|
|
125
|
-
if args.properties == '-':
|
|
126
|
-
properties.update(json.load(sys.stdin))
|
|
127
|
-
else:
|
|
128
|
-
with open(args.properties) as fp:
|
|
129
|
-
properties.update(json.load(fp))
|
|
130
|
-
except (TypeError, ValueError):
|
|
131
|
-
sys.stderr.write('%s contained invalid JSON dict.\n' % args.properties)
|
|
132
|
-
raise
|
|
133
|
-
|
|
134
|
-
body = json.dumps({
|
|
135
|
-
'bucket': args.bucket,
|
|
136
|
-
'parameters_json': json.dumps({
|
|
137
|
-
'builder_name': args.builder_name,
|
|
138
|
-
'changes': changes,
|
|
139
|
-
'properties': properties,
|
|
140
|
-
}),
|
|
141
|
-
})
|
|
142
|
-
method = 'PUT'
|
|
143
|
-
url = BUILDBUCKET_API_URL
|
|
144
|
-
elif args.command == 'retry':
|
|
145
|
-
method = 'PUT'
|
|
146
|
-
url = '%s/%s/retry' % (BUILDBUCKET_API_URL, args.id)
|
|
147
|
-
|
|
148
|
-
authenticator = auth.get_authenticator_for_host(
|
|
149
|
-
BUILDBUCKET_URL,
|
|
150
|
-
auth.make_auth_config(use_oauth2=True),
|
|
151
|
-
)
|
|
152
|
-
http = authenticator.authorize(httplib2.Http())
|
|
153
|
-
http.force_exception_to_status_code = True
|
|
154
|
-
|
|
155
|
-
if args.verbose:
|
|
156
|
-
print 'Request URL:', url
|
|
157
|
-
print 'Request method:', method
|
|
158
|
-
print 'Request body:', body
|
|
159
|
-
|
|
160
|
-
response, content = http.request(
|
|
161
|
-
url,
|
|
162
|
-
method,
|
|
163
|
-
body=body,
|
|
164
|
-
headers={'Content-Type': 'application/json'},
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
if args.verbose:
|
|
168
|
-
print 'Response:', response
|
|
169
|
-
print 'Content:', content
|
|
170
|
-
|
|
171
|
-
try:
|
|
172
|
-
content_json = json.loads(content)
|
|
173
|
-
if args.response_json:
|
|
174
|
-
with open(args.response_json, 'w') as response_json_file:
|
|
175
|
-
response_json_file.write(content)
|
|
176
|
-
build_url = content_json['build']['url']
|
|
177
|
-
except (ValueError, TypeError, KeyError):
|
|
178
|
-
pass
|
|
179
|
-
else:
|
|
180
|
-
print 'Build: %s' % build_url
|
|
181
|
-
|
|
182
|
-
return response.status != 200
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
if __name__ == '__main__':
|
|
186
|
-
sys.exit(main(sys.argv))
|
|
@@ -1,431 +0,0 @@
|
|
|
1
|
-
# coding=utf8
|
|
2
|
-
# Copyright (c) 2012 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
|
-
"""Manages a project checkout.
|
|
6
|
-
|
|
7
|
-
Includes support only for git.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
import fnmatch
|
|
11
|
-
import logging
|
|
12
|
-
import os
|
|
13
|
-
import re
|
|
14
|
-
import shutil
|
|
15
|
-
import subprocess
|
|
16
|
-
import sys
|
|
17
|
-
import tempfile
|
|
18
|
-
|
|
19
|
-
# The configparser module was renamed in Python 3.
|
|
20
|
-
try:
|
|
21
|
-
import configparser
|
|
22
|
-
except ImportError:
|
|
23
|
-
import ConfigParser as configparser
|
|
24
|
-
|
|
25
|
-
import patch
|
|
26
|
-
import scm
|
|
27
|
-
import subprocess2
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if sys.platform in ('cygwin', 'win32'):
|
|
31
|
-
# Disable timeouts on Windows since we can't have shells with timeouts.
|
|
32
|
-
GLOBAL_TIMEOUT = None
|
|
33
|
-
FETCH_TIMEOUT = None
|
|
34
|
-
else:
|
|
35
|
-
# Default timeout of 15 minutes.
|
|
36
|
-
GLOBAL_TIMEOUT = 15*60
|
|
37
|
-
# Use a larger timeout for checkout since it can be a genuinely slower
|
|
38
|
-
# operation.
|
|
39
|
-
FETCH_TIMEOUT = 30*60
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def get_code_review_setting(path, key,
|
|
43
|
-
codereview_settings_file='codereview.settings'):
|
|
44
|
-
"""Parses codereview.settings and return the value for the key if present.
|
|
45
|
-
|
|
46
|
-
Don't cache the values in case the file is changed."""
|
|
47
|
-
# TODO(maruel): Do not duplicate code.
|
|
48
|
-
settings = {}
|
|
49
|
-
try:
|
|
50
|
-
settings_file = open(os.path.join(path, codereview_settings_file), 'r')
|
|
51
|
-
try:
|
|
52
|
-
for line in settings_file.readlines():
|
|
53
|
-
if not line or line.startswith('#'):
|
|
54
|
-
continue
|
|
55
|
-
if not ':' in line:
|
|
56
|
-
# Invalid file.
|
|
57
|
-
return None
|
|
58
|
-
k, v = line.split(':', 1)
|
|
59
|
-
settings[k.strip()] = v.strip()
|
|
60
|
-
finally:
|
|
61
|
-
settings_file.close()
|
|
62
|
-
except IOError:
|
|
63
|
-
return None
|
|
64
|
-
return settings.get(key, None)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def align_stdout(stdout):
|
|
68
|
-
"""Returns the aligned output of multiple stdouts."""
|
|
69
|
-
output = ''
|
|
70
|
-
for item in stdout:
|
|
71
|
-
item = item.strip()
|
|
72
|
-
if not item:
|
|
73
|
-
continue
|
|
74
|
-
output += ''.join(' %s\n' % line for line in item.splitlines())
|
|
75
|
-
return output
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
class PatchApplicationFailed(Exception):
|
|
79
|
-
"""Patch failed to be applied."""
|
|
80
|
-
def __init__(self, errors, verbose):
|
|
81
|
-
super(PatchApplicationFailed, self).__init__(errors, verbose)
|
|
82
|
-
self.errors = errors
|
|
83
|
-
self.verbose = verbose
|
|
84
|
-
|
|
85
|
-
def __str__(self):
|
|
86
|
-
out = []
|
|
87
|
-
for e in self.errors:
|
|
88
|
-
p, status = e
|
|
89
|
-
if p and p.filename:
|
|
90
|
-
out.append('Failed to apply patch for %s:' % p.filename)
|
|
91
|
-
if status:
|
|
92
|
-
out.append(status)
|
|
93
|
-
if p and self.verbose:
|
|
94
|
-
out.append('Patch: %s' % p.dump())
|
|
95
|
-
return '\n'.join(out)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
class CheckoutBase(object):
|
|
99
|
-
# Set to None to have verbose output.
|
|
100
|
-
VOID = subprocess2.VOID
|
|
101
|
-
|
|
102
|
-
def __init__(self, root_dir, project_name, post_processors):
|
|
103
|
-
"""
|
|
104
|
-
Args:
|
|
105
|
-
post_processor: list of lambda(checkout, patches) to call on each of the
|
|
106
|
-
modified files.
|
|
107
|
-
"""
|
|
108
|
-
super(CheckoutBase, self).__init__()
|
|
109
|
-
self.root_dir = root_dir
|
|
110
|
-
self.project_name = project_name
|
|
111
|
-
if self.project_name is None:
|
|
112
|
-
self.project_path = self.root_dir
|
|
113
|
-
else:
|
|
114
|
-
self.project_path = os.path.join(self.root_dir, self.project_name)
|
|
115
|
-
# Only used for logging purposes.
|
|
116
|
-
self._last_seen_revision = None
|
|
117
|
-
self.post_processors = post_processors
|
|
118
|
-
assert self.root_dir
|
|
119
|
-
assert self.project_path
|
|
120
|
-
assert os.path.isabs(self.project_path)
|
|
121
|
-
|
|
122
|
-
def get_settings(self, key):
|
|
123
|
-
return get_code_review_setting(self.project_path, key)
|
|
124
|
-
|
|
125
|
-
def prepare(self, revision):
|
|
126
|
-
"""Checks out a clean copy of the tree and removes any local modification.
|
|
127
|
-
|
|
128
|
-
This function shouldn't throw unless the remote repository is inaccessible,
|
|
129
|
-
there is no free disk space or hard issues like that.
|
|
130
|
-
|
|
131
|
-
Args:
|
|
132
|
-
revision: The revision it should sync to, SCM specific.
|
|
133
|
-
"""
|
|
134
|
-
raise NotImplementedError()
|
|
135
|
-
|
|
136
|
-
def apply_patch(self, patches, post_processors=None, verbose=False):
|
|
137
|
-
"""Applies a patch and returns the list of modified files.
|
|
138
|
-
|
|
139
|
-
This function should throw patch.UnsupportedPatchFormat or
|
|
140
|
-
PatchApplicationFailed when relevant.
|
|
141
|
-
|
|
142
|
-
Args:
|
|
143
|
-
patches: patch.PatchSet object.
|
|
144
|
-
"""
|
|
145
|
-
raise NotImplementedError()
|
|
146
|
-
|
|
147
|
-
def commit(self, commit_message, user):
|
|
148
|
-
"""Commits the patch upstream, while impersonating 'user'."""
|
|
149
|
-
raise NotImplementedError()
|
|
150
|
-
|
|
151
|
-
def revisions(self, rev1, rev2):
|
|
152
|
-
"""Returns the count of revisions from rev1 to rev2, e.g. len(]rev1, rev2]).
|
|
153
|
-
|
|
154
|
-
If rev2 is None, it means 'HEAD'.
|
|
155
|
-
|
|
156
|
-
Returns None if there is no link between the two.
|
|
157
|
-
"""
|
|
158
|
-
raise NotImplementedError()
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
class GitCheckout(CheckoutBase):
|
|
162
|
-
"""Manages a git checkout."""
|
|
163
|
-
def __init__(self, root_dir, project_name, remote_branch, git_url,
|
|
164
|
-
commit_user, post_processors=None):
|
|
165
|
-
super(GitCheckout, self).__init__(root_dir, project_name, post_processors)
|
|
166
|
-
self.git_url = git_url
|
|
167
|
-
self.commit_user = commit_user
|
|
168
|
-
self.remote_branch = remote_branch
|
|
169
|
-
# The working branch where patches will be applied. It will track the
|
|
170
|
-
# remote branch.
|
|
171
|
-
self.working_branch = 'working_branch'
|
|
172
|
-
# There is no reason to not hardcode origin.
|
|
173
|
-
self.remote = 'origin'
|
|
174
|
-
# There is no reason to not hardcode master.
|
|
175
|
-
self.master_branch = 'master'
|
|
176
|
-
|
|
177
|
-
def prepare(self, revision):
|
|
178
|
-
"""Resets the git repository in a clean state.
|
|
179
|
-
|
|
180
|
-
Checks it out if not present and deletes the working branch.
|
|
181
|
-
"""
|
|
182
|
-
assert self.remote_branch
|
|
183
|
-
assert self.git_url
|
|
184
|
-
|
|
185
|
-
if not os.path.isdir(self.project_path):
|
|
186
|
-
# Clone the repo if the directory is not present.
|
|
187
|
-
logging.info(
|
|
188
|
-
'Checking out %s in %s', self.project_name, self.project_path)
|
|
189
|
-
self._check_call_git(
|
|
190
|
-
['clone', self.git_url, '-b', self.remote_branch, self.project_path],
|
|
191
|
-
cwd=None, timeout=FETCH_TIMEOUT)
|
|
192
|
-
else:
|
|
193
|
-
# Throw away all uncommitted changes in the existing checkout.
|
|
194
|
-
self._check_call_git(['checkout', self.remote_branch])
|
|
195
|
-
self._check_call_git(
|
|
196
|
-
['reset', '--hard', '--quiet',
|
|
197
|
-
'%s/%s' % (self.remote, self.remote_branch)])
|
|
198
|
-
|
|
199
|
-
if revision:
|
|
200
|
-
try:
|
|
201
|
-
# Look if the commit hash already exist. If so, we can skip a
|
|
202
|
-
# 'git fetch' call.
|
|
203
|
-
revision = self._check_output_git(['rev-parse', revision]).rstrip()
|
|
204
|
-
except subprocess.CalledProcessError:
|
|
205
|
-
self._check_call_git(
|
|
206
|
-
['fetch', self.remote, self.remote_branch, '--quiet'])
|
|
207
|
-
revision = self._check_output_git(['rev-parse', revision]).rstrip()
|
|
208
|
-
self._check_call_git(['checkout', '--force', '--quiet', revision])
|
|
209
|
-
else:
|
|
210
|
-
branches, active = self._branches()
|
|
211
|
-
if active != self.master_branch:
|
|
212
|
-
self._check_call_git(
|
|
213
|
-
['checkout', '--force', '--quiet', self.master_branch])
|
|
214
|
-
self._sync_remote_branch()
|
|
215
|
-
|
|
216
|
-
if self.working_branch in branches:
|
|
217
|
-
self._call_git(['branch', '-D', self.working_branch])
|
|
218
|
-
return self._get_head_commit_hash()
|
|
219
|
-
|
|
220
|
-
def _sync_remote_branch(self):
|
|
221
|
-
"""Syncs the remote branch."""
|
|
222
|
-
# We do a 'git pull origin master:refs/remotes/origin/master' instead of
|
|
223
|
-
# 'git pull origin master' because from the manpage for git-pull:
|
|
224
|
-
# A parameter <ref> without a colon is equivalent to <ref>: when
|
|
225
|
-
# pulling/fetching, so it merges <ref> into the current branch without
|
|
226
|
-
# storing the remote branch anywhere locally.
|
|
227
|
-
remote_tracked_path = 'refs/remotes/%s/%s' % (
|
|
228
|
-
self.remote, self.remote_branch)
|
|
229
|
-
self._check_call_git(
|
|
230
|
-
['pull', self.remote,
|
|
231
|
-
'%s:%s' % (self.remote_branch, remote_tracked_path),
|
|
232
|
-
'--quiet'])
|
|
233
|
-
|
|
234
|
-
def _get_head_commit_hash(self):
|
|
235
|
-
"""Gets the current revision (in unicode) from the local branch."""
|
|
236
|
-
return unicode(self._check_output_git(['rev-parse', 'HEAD']).strip())
|
|
237
|
-
|
|
238
|
-
def apply_patch(self, patches, post_processors=None, verbose=False):
|
|
239
|
-
"""Applies a patch on 'working_branch' and switches to it.
|
|
240
|
-
|
|
241
|
-
The changes remain staged on the current branch.
|
|
242
|
-
"""
|
|
243
|
-
post_processors = post_processors or self.post_processors or []
|
|
244
|
-
# It this throws, the checkout is corrupted. Maybe worth deleting it and
|
|
245
|
-
# trying again?
|
|
246
|
-
if self.remote_branch:
|
|
247
|
-
self._check_call_git(
|
|
248
|
-
['checkout', '-b', self.working_branch, '-t', self.remote_branch,
|
|
249
|
-
'--quiet'])
|
|
250
|
-
|
|
251
|
-
errors = []
|
|
252
|
-
for index, p in enumerate(patches):
|
|
253
|
-
stdout = []
|
|
254
|
-
try:
|
|
255
|
-
filepath = os.path.join(self.project_path, p.filename)
|
|
256
|
-
if p.is_delete:
|
|
257
|
-
if (not os.path.exists(filepath) and
|
|
258
|
-
any(p1.source_filename == p.filename for p1 in patches[0:index])):
|
|
259
|
-
# The file was already deleted if a prior patch with file rename
|
|
260
|
-
# was already processed because 'git apply' did it for us.
|
|
261
|
-
pass
|
|
262
|
-
else:
|
|
263
|
-
stdout.append(self._check_output_git(['rm', p.filename]))
|
|
264
|
-
assert(not os.path.exists(filepath))
|
|
265
|
-
stdout.append('Deleted.')
|
|
266
|
-
else:
|
|
267
|
-
dirname = os.path.dirname(p.filename)
|
|
268
|
-
full_dir = os.path.join(self.project_path, dirname)
|
|
269
|
-
if dirname and not os.path.isdir(full_dir):
|
|
270
|
-
os.makedirs(full_dir)
|
|
271
|
-
stdout.append('Created missing directory %s.' % dirname)
|
|
272
|
-
if p.is_binary:
|
|
273
|
-
content = p.get()
|
|
274
|
-
with open(filepath, 'wb') as f:
|
|
275
|
-
f.write(content)
|
|
276
|
-
stdout.append('Added binary file %d bytes' % len(content))
|
|
277
|
-
cmd = ['add', p.filename]
|
|
278
|
-
if verbose:
|
|
279
|
-
cmd.append('--verbose')
|
|
280
|
-
stdout.append(self._check_output_git(cmd))
|
|
281
|
-
else:
|
|
282
|
-
# No need to do anything special with p.is_new or if not
|
|
283
|
-
# p.diff_hunks. git apply manages all that already.
|
|
284
|
-
cmd = ['apply', '--index', '-3', '-p%s' % p.patchlevel]
|
|
285
|
-
if verbose:
|
|
286
|
-
cmd.append('--verbose')
|
|
287
|
-
stdout.append(self._check_output_git(cmd, stdin=p.get(True)))
|
|
288
|
-
for post in post_processors:
|
|
289
|
-
post(self, p)
|
|
290
|
-
if verbose:
|
|
291
|
-
print p.filename
|
|
292
|
-
print align_stdout(stdout)
|
|
293
|
-
except OSError, e:
|
|
294
|
-
errors.append((p, '%s%s' % (align_stdout(stdout), e)))
|
|
295
|
-
except subprocess.CalledProcessError, e:
|
|
296
|
-
errors.append((p,
|
|
297
|
-
'While running %s;\n%s%s' % (
|
|
298
|
-
' '.join(e.cmd),
|
|
299
|
-
align_stdout(stdout),
|
|
300
|
-
align_stdout([getattr(e, 'stdout', '')]))))
|
|
301
|
-
if errors:
|
|
302
|
-
raise PatchApplicationFailed(errors, verbose)
|
|
303
|
-
found_files = self._check_output_git(
|
|
304
|
-
['-c', 'core.quotePath=false', 'diff', '--ignore-submodules',
|
|
305
|
-
'--name-only', '--staged']).splitlines(False)
|
|
306
|
-
if sorted(patches.filenames) != sorted(found_files):
|
|
307
|
-
extra_files = sorted(set(found_files) - set(patches.filenames))
|
|
308
|
-
unpatched_files = sorted(set(patches.filenames) - set(found_files))
|
|
309
|
-
if extra_files:
|
|
310
|
-
print 'Found extra files: %r' % (extra_files,)
|
|
311
|
-
if unpatched_files:
|
|
312
|
-
print 'Found unpatched files: %r' % (unpatched_files,)
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
def commit(self, commit_message, user):
|
|
316
|
-
"""Commits, updates the commit message and pushes."""
|
|
317
|
-
# TODO(hinoka): CQ no longer uses this, I think its deprecated.
|
|
318
|
-
# Delete this.
|
|
319
|
-
assert self.commit_user
|
|
320
|
-
assert isinstance(commit_message, unicode)
|
|
321
|
-
current_branch = self._check_output_git(
|
|
322
|
-
['rev-parse', '--abbrev-ref', 'HEAD']).strip()
|
|
323
|
-
assert current_branch == self.working_branch
|
|
324
|
-
|
|
325
|
-
commit_cmd = ['commit', '-m', commit_message]
|
|
326
|
-
if user and user != self.commit_user:
|
|
327
|
-
# We do not have the first or last name of the user, grab the username
|
|
328
|
-
# from the email and call it the original author's name.
|
|
329
|
-
# TODO(rmistry): Do not need the below if user is already in
|
|
330
|
-
# "Name <email>" format.
|
|
331
|
-
name = user.split('@')[0]
|
|
332
|
-
commit_cmd.extend(['--author', '%s <%s>' % (name, user)])
|
|
333
|
-
self._check_call_git(commit_cmd)
|
|
334
|
-
|
|
335
|
-
# Push to the remote repository.
|
|
336
|
-
self._check_call_git(
|
|
337
|
-
['push', 'origin', '%s:%s' % (self.working_branch, self.remote_branch),
|
|
338
|
-
'--quiet'])
|
|
339
|
-
# Get the revision after the push.
|
|
340
|
-
revision = self._get_head_commit_hash()
|
|
341
|
-
# Switch back to the remote_branch and sync it.
|
|
342
|
-
self._check_call_git(['checkout', self.remote_branch])
|
|
343
|
-
self._sync_remote_branch()
|
|
344
|
-
# Delete the working branch since we are done with it.
|
|
345
|
-
self._check_call_git(['branch', '-D', self.working_branch])
|
|
346
|
-
|
|
347
|
-
return revision
|
|
348
|
-
|
|
349
|
-
def _check_call_git(self, args, **kwargs):
|
|
350
|
-
kwargs.setdefault('cwd', self.project_path)
|
|
351
|
-
kwargs.setdefault('stdout', self.VOID)
|
|
352
|
-
kwargs.setdefault('timeout', GLOBAL_TIMEOUT)
|
|
353
|
-
return subprocess2.check_call_out(['git'] + args, **kwargs)
|
|
354
|
-
|
|
355
|
-
def _call_git(self, args, **kwargs):
|
|
356
|
-
"""Like check_call but doesn't throw on failure."""
|
|
357
|
-
kwargs.setdefault('cwd', self.project_path)
|
|
358
|
-
kwargs.setdefault('stdout', self.VOID)
|
|
359
|
-
kwargs.setdefault('timeout', GLOBAL_TIMEOUT)
|
|
360
|
-
return subprocess2.call(['git'] + args, **kwargs)
|
|
361
|
-
|
|
362
|
-
def _check_output_git(self, args, **kwargs):
|
|
363
|
-
kwargs.setdefault('cwd', self.project_path)
|
|
364
|
-
kwargs.setdefault('timeout', GLOBAL_TIMEOUT)
|
|
365
|
-
return subprocess2.check_output(
|
|
366
|
-
['git'] + args, stderr=subprocess2.STDOUT, **kwargs)
|
|
367
|
-
|
|
368
|
-
def _branches(self):
|
|
369
|
-
"""Returns the list of branches and the active one."""
|
|
370
|
-
out = self._check_output_git(['branch']).splitlines(False)
|
|
371
|
-
branches = [l[2:] for l in out]
|
|
372
|
-
active = None
|
|
373
|
-
for l in out:
|
|
374
|
-
if l.startswith('*'):
|
|
375
|
-
active = l[2:]
|
|
376
|
-
break
|
|
377
|
-
return branches, active
|
|
378
|
-
|
|
379
|
-
def revisions(self, rev1, rev2):
|
|
380
|
-
"""Returns the number of actual commits between both hash."""
|
|
381
|
-
self._fetch_remote()
|
|
382
|
-
|
|
383
|
-
rev2 = rev2 or '%s/%s' % (self.remote, self.remote_branch)
|
|
384
|
-
# Revision range is ]rev1, rev2] and ordering matters.
|
|
385
|
-
try:
|
|
386
|
-
out = self._check_output_git(
|
|
387
|
-
['log', '--format="%H"' , '%s..%s' % (rev1, rev2)])
|
|
388
|
-
except subprocess.CalledProcessError:
|
|
389
|
-
return None
|
|
390
|
-
return len(out.splitlines())
|
|
391
|
-
|
|
392
|
-
def _fetch_remote(self):
|
|
393
|
-
"""Fetches the remote without rebasing."""
|
|
394
|
-
# git fetch is always verbose even with -q, so redirect its output.
|
|
395
|
-
self._check_output_git(['fetch', self.remote, self.remote_branch],
|
|
396
|
-
timeout=FETCH_TIMEOUT)
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
class ReadOnlyCheckout(object):
|
|
400
|
-
"""Converts a checkout into a read-only one."""
|
|
401
|
-
def __init__(self, checkout, post_processors=None):
|
|
402
|
-
super(ReadOnlyCheckout, self).__init__()
|
|
403
|
-
self.checkout = checkout
|
|
404
|
-
self.post_processors = (post_processors or []) + (
|
|
405
|
-
self.checkout.post_processors or [])
|
|
406
|
-
|
|
407
|
-
def prepare(self, revision):
|
|
408
|
-
return self.checkout.prepare(revision)
|
|
409
|
-
|
|
410
|
-
def get_settings(self, key):
|
|
411
|
-
return self.checkout.get_settings(key)
|
|
412
|
-
|
|
413
|
-
def apply_patch(self, patches, post_processors=None, verbose=False):
|
|
414
|
-
return self.checkout.apply_patch(
|
|
415
|
-
patches, post_processors or self.post_processors, verbose)
|
|
416
|
-
|
|
417
|
-
def commit(self, message, user): # pylint: disable=no-self-use
|
|
418
|
-
logging.info('Would have committed for %s with message: %s' % (
|
|
419
|
-
user, message))
|
|
420
|
-
return 'FAKE'
|
|
421
|
-
|
|
422
|
-
def revisions(self, rev1, rev2):
|
|
423
|
-
return self.checkout.revisions(rev1, rev2)
|
|
424
|
-
|
|
425
|
-
@property
|
|
426
|
-
def project_name(self):
|
|
427
|
-
return self.checkout.project_name
|
|
428
|
-
|
|
429
|
-
@property
|
|
430
|
-
def project_path(self):
|
|
431
|
-
return self.checkout.project_path
|