libv8 6.2.414.42.1 → 6.3.292.48.0beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/libv8/version.rb +1 -1
- data/vendor/depot_tools/PRESUBMIT.py +38 -0
- data/vendor/depot_tools/bootstrap/win/manifest.txt +3 -1
- data/vendor/depot_tools/bootstrap/win/manifest_bleeding_edge.txt +2 -0
- data/vendor/depot_tools/checkout.py +1 -1
- data/vendor/depot_tools/cipd_manifest.txt +1 -1
- data/vendor/depot_tools/gclient_scm.py +23 -14
- data/vendor/depot_tools/gerrit_util.py +15 -10
- data/vendor/depot_tools/git_cl.py +23 -11
- data/vendor/depot_tools/git_drover.py +2 -1
- data/vendor/depot_tools/git_upstream_diff.py +2 -1
- data/vendor/depot_tools/gsutil.py +1 -1
- data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
- data/vendor/depot_tools/presubmit_canned_checks.py +8 -1
- data/vendor/depot_tools/presubmit_support.py +2 -1
- data/vendor/depot_tools/recipes/README.recipes.md +56 -43
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/__init__.py +1 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/api.py +1 -4
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.expected/basic_luci.json +105 -0
- data/vendor/depot_tools/recipes/recipe_modules/bot_update/examples/full.py +5 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/__init__.py +6 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/api.py +25 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/basic_luci.json +75 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.expected/win.json +12 -0
- data/vendor/depot_tools/recipes/recipe_modules/depot_tools/examples/full.py +10 -1
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/api.py +13 -11
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch.json +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_git_patch_luci.json +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_rietveld_patch.json +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_rietveld_patch_new.json +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch.json +2 -0
- data/vendor/depot_tools/recipes/recipe_modules/tryserver/examples/full.expected/with_wrong_patch_new.json +2 -0
- data/vendor/depot_tools/recipes/trigger_recipe_roller.txt +1 -0
- data/vendor/depot_tools/roll_dep.py +116 -78
- data/vendor/depot_tools/scm.py +6 -4
- data/vendor/depot_tools/split_cl.py +45 -18
- metadata +7 -5
- data/patches/0005-avoid-constructor-inheritance-due-to-compilation-iss.patch +0 -81
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61c3bf8a873f670cef6d2846cb09c8e6e8837160
|
4
|
+
data.tar.gz: 3ab377edad709714dfc61f7be3f37f3801ce1b3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8645f9ffc99b2b8226880f664f088e76f49038138ed73984d546f88fb2a4bb07f659eb7540aa2694442cc6ea7327fbf39283c86d4c459ef44dd87bbecdc86fb6
|
7
|
+
data.tar.gz: 3fdcabaa1d2e7bebd1439a79a79fd0e52ffeebda196fd5b595895314e3128e0ae43a49b1fa17602ffdc1274db1df0eac5a4300f15a777aeaaafc122da70fdc6c
|
data/CHANGELOG.md
CHANGED
data/lib/libv8/version.rb
CHANGED
@@ -12,6 +12,16 @@ import fnmatch
|
|
12
12
|
import os
|
13
13
|
|
14
14
|
|
15
|
+
ENSURE_FILE_TEMPLATE = r'''
|
16
|
+
$VerifiedPlatform linux-386 linux-amd64 linux-arm64 linux-armv6l linux-mips64
|
17
|
+
$VerifiedPlatform linux-ppc64 linux-ppc64le linux-s390x
|
18
|
+
$VerifiedPlatform mac-amd64
|
19
|
+
$VerifiedPlatform windows-386 windows-amd64
|
20
|
+
|
21
|
+
%s %s
|
22
|
+
'''
|
23
|
+
|
24
|
+
|
15
25
|
def DepotToolsPylint(input_api, output_api):
|
16
26
|
"""Gather all the pylint logic into one place to make it self-contained."""
|
17
27
|
white_list = [
|
@@ -59,6 +69,34 @@ def CommonChecks(input_api, output_api, tests_to_black_list):
|
|
59
69
|
tests.extend(unit_tests)
|
60
70
|
else:
|
61
71
|
print('Warning: not running unit tests on Windows')
|
72
|
+
|
73
|
+
# Validate CIPD manifests.
|
74
|
+
root = input_api.os_path.normpath(
|
75
|
+
input_api.os_path.abspath(input_api.PresubmitLocalPath()))
|
76
|
+
rel_file = lambda rel: input_api.os_path.join(root, rel)
|
77
|
+
cipd_manifests = set(rel_file(input_api.os_path.join(*x)) for x in (
|
78
|
+
('cipd_manifest.txt',),
|
79
|
+
('bootstrap', 'win', 'manifest.txt'),
|
80
|
+
('bootstrap', 'win', 'manifest_bleeding_edge.txt'),
|
81
|
+
|
82
|
+
# Also generate a file for the cipd client itself.
|
83
|
+
('cipd_client_version',),
|
84
|
+
))
|
85
|
+
affected_manifests = input_api.AffectedFiles(
|
86
|
+
include_deletes=False,
|
87
|
+
file_filter=lambda x:
|
88
|
+
input_api.os_path.normpath(x.AbsoluteLocalPath()) in cipd_manifests)
|
89
|
+
for path in affected_manifests:
|
90
|
+
path = path.AbsoluteLocalPath()
|
91
|
+
if path.endswith('.txt'):
|
92
|
+
tests.append(input_api.canned_checks.CheckCIPDManifest(
|
93
|
+
input_api, output_api, path=path))
|
94
|
+
else:
|
95
|
+
pkg = 'infra/tools/cipd/${platform}'
|
96
|
+
ver = input_api.ReadFile(path)
|
97
|
+
tests.append(input_api.canned_checks.CheckCIPDManifest(
|
98
|
+
input_api, output_api, content=ENSURE_FILE_TEMPLATE % (pkg, ver)))
|
99
|
+
|
62
100
|
results.extend(input_api.RunTests(tests))
|
63
101
|
return results
|
64
102
|
|
@@ -11,8 +11,10 @@
|
|
11
11
|
# string "cpython" and ends with the CIPD tag "version:VERSION". It uses this
|
12
12
|
# to extract VERSION.
|
13
13
|
|
14
|
+
$VerifiedPlatform windows-386 windows-amd64
|
15
|
+
|
14
16
|
@Subdir python
|
15
17
|
infra/python/cpython/windows-386 version:2.7.6
|
16
18
|
|
17
19
|
@Subdir git
|
18
|
-
infra/git
|
20
|
+
infra/git/windows-${arch} version:2.15.1.2.chromium12
|
@@ -301,7 +301,7 @@ class GitCheckout(CheckoutBase):
|
|
301
301
|
if errors:
|
302
302
|
raise PatchApplicationFailed(errors, verbose)
|
303
303
|
found_files = self._check_output_git(
|
304
|
-
['diff', '--ignore-submodules',
|
304
|
+
['-c', 'core.quotePath=false', 'diff', '--ignore-submodules',
|
305
305
|
'--name-only', '--staged']).splitlines(False)
|
306
306
|
if sorted(patches.filenames) != sorted(found_files):
|
307
307
|
extra_files = sorted(set(found_files) - set(patches.filenames))
|
@@ -11,7 +11,7 @@ $VerifiedPlatform windows-386 windows-amd64
|
|
11
11
|
infra/tools/luci/vpython/${platform} git_revision:a3d636052088db3daa48413b3e209eed4f5cb4ad
|
12
12
|
|
13
13
|
# LUCI editor
|
14
|
-
infra/tools/luci/led/${platform} git_revision:
|
14
|
+
infra/tools/luci/led/${platform} git_revision:54b6b3102fbb15ca3e3bd762ff3df7b08057d653
|
15
15
|
|
16
16
|
# Mac toolchain installer
|
17
17
|
infra/tools/mac_toolchain/${os=mac}-${arch} git_revision:2b69be6203f56a970202d9b5984557c0453b4eb0
|
@@ -270,12 +270,19 @@ class GitWrapper(SCMWrapper):
|
|
270
270
|
# time-stamp of the currently checked out revision.
|
271
271
|
return self._Capture(['log', '-n', '1', '--format=%ai'])
|
272
272
|
|
273
|
+
def _GetDiffFilenames(self, base):
|
274
|
+
"""Returns the names of files modified since base."""
|
275
|
+
return self._Capture(
|
276
|
+
# Filter to remove base if it is None.
|
277
|
+
filter(bool, ['-c', 'core.quotePath=false', 'diff', '--name-only', base])
|
278
|
+
).split()
|
279
|
+
|
273
280
|
def diff(self, options, _args, _file_list):
|
274
281
|
try:
|
275
282
|
merge_base = [self._Capture(['merge-base', 'HEAD', self.remote])]
|
276
283
|
except subprocess2.CalledProcessError:
|
277
284
|
merge_base = []
|
278
|
-
self._Run(['diff'] + merge_base, options)
|
285
|
+
self._Run(['-c', 'core.quotePath=false', 'diff'] + merge_base, options)
|
279
286
|
|
280
287
|
def pack(self, _options, _args, _file_list):
|
281
288
|
"""Generates a patch file which can be applied to the root of the
|
@@ -305,7 +312,8 @@ class GitWrapper(SCMWrapper):
|
|
305
312
|
# actually in a broken state here. The index will have both 'a' and 'A',
|
306
313
|
# but only one of them will exist on the disk. To progress, we delete
|
307
314
|
# everything that status thinks is modified.
|
308
|
-
output = self._Capture([
|
315
|
+
output = self._Capture([
|
316
|
+
'-c', 'core.quotePath=false', 'status', '--porcelain'], strip=False)
|
309
317
|
for line in output.splitlines():
|
310
318
|
# --porcelain (v1) looks like:
|
311
319
|
# XY filename
|
@@ -324,7 +332,8 @@ class GitWrapper(SCMWrapper):
|
|
324
332
|
self._Fetch(options, prune=True, quiet=options.verbose)
|
325
333
|
self._Scrub(revision, options)
|
326
334
|
if file_list is not None:
|
327
|
-
files = self._Capture(
|
335
|
+
files = self._Capture(
|
336
|
+
['-c', 'core.quotePath=false', 'ls-files']).splitlines()
|
328
337
|
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
|
329
338
|
|
330
339
|
def _DisableHooks(self):
|
@@ -358,7 +367,6 @@ class GitWrapper(SCMWrapper):
|
|
358
367
|
self.Print('FAILED to break lock: %s: %s' % (to_break, ex))
|
359
368
|
raise
|
360
369
|
|
361
|
-
|
362
370
|
def update(self, options, args, file_list):
|
363
371
|
"""Runs git to update or transparently checkout the working copy.
|
364
372
|
|
@@ -440,7 +448,8 @@ class GitWrapper(SCMWrapper):
|
|
440
448
|
self._DeleteOrMove(options.force)
|
441
449
|
self._Clone(revision, url, options)
|
442
450
|
if file_list is not None:
|
443
|
-
files = self._Capture(
|
451
|
+
files = self._Capture(
|
452
|
+
['-c', 'core.quotePath=false', 'ls-files']).splitlines()
|
444
453
|
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
|
445
454
|
if not verbose:
|
446
455
|
# Make the output a little prettier. It's nice to have some whitespace
|
@@ -625,8 +634,7 @@ class GitWrapper(SCMWrapper):
|
|
625
634
|
raise gclient_utils.Error(switch_error)
|
626
635
|
else:
|
627
636
|
# case 3 - the default case
|
628
|
-
rebase_files = self.
|
629
|
-
['diff', upstream_branch, '--name-only']).split()
|
637
|
+
rebase_files = self._GetDiffFilenames(upstream_branch)
|
630
638
|
if verbose:
|
631
639
|
self.Print('Trying fast-forward merge to branch : %s' % upstream_branch)
|
632
640
|
try:
|
@@ -719,7 +727,8 @@ class GitWrapper(SCMWrapper):
|
|
719
727
|
# merge-base by default), so doesn't include untracked files. So we use
|
720
728
|
# 'git ls-files --directory --others --exclude-standard' here directly.
|
721
729
|
paths = scm.GIT.Capture(
|
722
|
-
['
|
730
|
+
['-c', 'core.quotePath=false', 'ls-files',
|
731
|
+
'--directory', '--others', '--exclude-standard'],
|
723
732
|
self.checkout_path)
|
724
733
|
for path in (p for p in paths.splitlines() if p.endswith('/')):
|
725
734
|
full_path = os.path.join(self.checkout_path, path)
|
@@ -729,7 +738,6 @@ class GitWrapper(SCMWrapper):
|
|
729
738
|
|
730
739
|
return self._Capture(['rev-parse', '--verify', 'HEAD'])
|
731
740
|
|
732
|
-
|
733
741
|
def revert(self, options, _args, file_list):
|
734
742
|
"""Reverts local modifications.
|
735
743
|
|
@@ -763,7 +771,7 @@ class GitWrapper(SCMWrapper):
|
|
763
771
|
return self.update(options, [], file_list)
|
764
772
|
|
765
773
|
if file_list is not None:
|
766
|
-
files = self.
|
774
|
+
files = self._GetDiffFilenames(deps_revision)
|
767
775
|
|
768
776
|
self._Scrub(deps_revision, options)
|
769
777
|
self._Run(['clean', '-f', '-d'], options)
|
@@ -788,10 +796,11 @@ class GitWrapper(SCMWrapper):
|
|
788
796
|
merge_base = [self._Capture(['merge-base', 'HEAD', self.remote])]
|
789
797
|
except subprocess2.CalledProcessError:
|
790
798
|
merge_base = []
|
791
|
-
self._Run(
|
792
|
-
|
799
|
+
self._Run(
|
800
|
+
['-c', 'core.quotePath=false', 'diff', '--name-status'] + merge_base,
|
801
|
+
options, stdout=self.out_fh, always=options.verbose)
|
793
802
|
if file_list is not None:
|
794
|
-
files = self.
|
803
|
+
files = self._GetDiffFilenames(merge_base[0] if merge_base else None)
|
795
804
|
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
|
796
805
|
|
797
806
|
def GetUsableRev(self, rev, options):
|
@@ -956,7 +965,7 @@ class GitWrapper(SCMWrapper):
|
|
956
965
|
branch=None, printed_path=False, merge=False):
|
957
966
|
"""Attempt to rebase onto either upstream or, if specified, newbase."""
|
958
967
|
if files is not None:
|
959
|
-
files.extend(self.
|
968
|
+
files.extend(self._GetDiffFilenames(upstream))
|
960
969
|
revision = upstream
|
961
970
|
if newbase:
|
962
971
|
revision = newbase
|
@@ -30,7 +30,9 @@ import gclient_utils
|
|
30
30
|
from third_party import httplib2
|
31
31
|
|
32
32
|
LOGGER = logging.getLogger()
|
33
|
-
|
33
|
+
# With a starting sleep time of 1 second, 2^n exponential backoff, and six
|
34
|
+
# total tries, the sleep time between the first and last tries will be 31s.
|
35
|
+
TRY_LIMIT = 6
|
34
36
|
|
35
37
|
|
36
38
|
# Controls the transport protocol used to communicate with gerrit.
|
@@ -258,13 +260,6 @@ class GceAuthenticator(Authenticator):
|
|
258
260
|
def _get(url, **kwargs):
|
259
261
|
next_delay_sec = 1
|
260
262
|
for i in xrange(TRY_LIMIT):
|
261
|
-
if i > 0:
|
262
|
-
# Retry server error status codes.
|
263
|
-
LOGGER.info('Encountered server error; retrying after %d second(s).',
|
264
|
-
next_delay_sec)
|
265
|
-
time.sleep(next_delay_sec)
|
266
|
-
next_delay_sec *= 2
|
267
|
-
|
268
263
|
p = urlparse.urlparse(url)
|
269
264
|
c = GetConnectionObject(protocol=p.scheme)
|
270
265
|
resp, contents = c.request(url, 'GET', **kwargs)
|
@@ -272,6 +267,15 @@ class GceAuthenticator(Authenticator):
|
|
272
267
|
if resp.status < httplib.INTERNAL_SERVER_ERROR:
|
273
268
|
return (resp, contents)
|
274
269
|
|
270
|
+
# Retry server error status codes.
|
271
|
+
LOGGER.warn('Encountered server error')
|
272
|
+
if TRY_LIMIT - i > 1:
|
273
|
+
LOGGER.info('Will retry in %d seconds (%d more times)...',
|
274
|
+
next_delay_sec, TRY_LIMIT - i - 1)
|
275
|
+
time.sleep(next_delay_sec)
|
276
|
+
next_delay_sec *= 2
|
277
|
+
|
278
|
+
|
275
279
|
@classmethod
|
276
280
|
def _get_token_dict(cls):
|
277
281
|
if cls._token_cache:
|
@@ -341,7 +345,7 @@ def ReadHttpResponse(conn, accept_statuses=frozenset([200])):
|
|
341
345
|
Common additions include 204, 400, and 404.
|
342
346
|
Returns: A string buffer containing the connection's reply.
|
343
347
|
"""
|
344
|
-
sleep_time =
|
348
|
+
sleep_time = 1
|
345
349
|
for idx in range(TRY_LIMIT):
|
346
350
|
response, contents = conn.request(**conn.req_params)
|
347
351
|
|
@@ -377,7 +381,8 @@ def ReadHttpResponse(conn, accept_statuses=frozenset([200])):
|
|
377
381
|
conn.req_params['uri'],
|
378
382
|
http_version, http_version, response.status, response.reason)
|
379
383
|
if TRY_LIMIT - idx > 1:
|
380
|
-
LOGGER.
|
384
|
+
LOGGER.info('Will retry in %d seconds (%d more times)...',
|
385
|
+
sleep_time, TRY_LIMIT - idx - 1)
|
381
386
|
time.sleep(sleep_time)
|
382
387
|
sleep_time = sleep_time * 2
|
383
388
|
if response.status not in accept_statuses:
|
@@ -716,14 +716,18 @@ def write_try_results_json(output_file, builds):
|
|
716
716
|
"""
|
717
717
|
|
718
718
|
def convert_build_dict(build):
|
719
|
+
"""Extracts some of the information from one build dict."""
|
720
|
+
parameters = json.loads(build.get('parameters_json', '{}')) or {}
|
719
721
|
return {
|
720
722
|
'buildbucket_id': build.get('id'),
|
721
|
-
'status': build.get('status'),
|
722
|
-
'result': build.get('result'),
|
723
723
|
'bucket': build.get('bucket'),
|
724
|
-
'builder_name':
|
725
|
-
|
724
|
+
'builder_name': parameters.get('builder_name'),
|
725
|
+
'created_ts': build.get('created_ts'),
|
726
|
+
'experimental': build.get('experimental'),
|
726
727
|
'failure_reason': build.get('failure_reason'),
|
728
|
+
'result': build.get('result'),
|
729
|
+
'status': build.get('status'),
|
730
|
+
'tags': build.get('tags'),
|
727
731
|
'url': build.get('url'),
|
728
732
|
}
|
729
733
|
|
@@ -2574,7 +2578,9 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
|
|
2574
2578
|
|
2575
2579
|
def GetMostRecentPatchset(self):
|
2576
2580
|
data = self._GetChangeDetail(['CURRENT_REVISION'])
|
2577
|
-
|
2581
|
+
patchset = data['revisions'][data['current_revision']]['_number']
|
2582
|
+
self.SetPatchset(patchset)
|
2583
|
+
return patchset
|
2578
2584
|
|
2579
2585
|
def FetchDescription(self, force=False):
|
2580
2586
|
data = self._GetChangeDetail(['CURRENT_REVISION', 'CURRENT_COMMIT'],
|
@@ -3877,8 +3883,8 @@ class _GitCookiesChecker(object):
|
|
3877
3883
|
|
3878
3884
|
@staticmethod
|
3879
3885
|
def _parse_identity(identity):
|
3880
|
-
"""Parses identity "git-<
|
3881
|
-
# Special case:
|
3886
|
+
"""Parses identity "git-<username>.domain" into <username> and domain."""
|
3887
|
+
# Special case: usernames that contain ".", which are generally not
|
3882
3888
|
# distinguishable from sub-domains. But we do know typical domains:
|
3883
3889
|
if identity.endswith('.chromium.org'):
|
3884
3890
|
domain = 'chromium.org'
|
@@ -4427,7 +4433,7 @@ def CMDstatus(parser, args):
|
|
4427
4433
|
if issueid:
|
4428
4434
|
print(issueid)
|
4429
4435
|
elif options.field == 'patch':
|
4430
|
-
patchset = cl.
|
4436
|
+
patchset = cl.GetMostRecentPatchset()
|
4431
4437
|
if patchset:
|
4432
4438
|
print(patchset)
|
4433
4439
|
elif options.field == 'status':
|
@@ -5050,6 +5056,10 @@ def CMDsplit(parser, args):
|
|
5050
5056
|
"$directory will be replaced by each CL's directory.")
|
5051
5057
|
parser.add_option("-c", "--comment", dest="comment_file",
|
5052
5058
|
help="A text file containing a CL comment.")
|
5059
|
+
parser.add_option("-n", "--dry-run", dest="dry_run", action='store_true',
|
5060
|
+
default=False,
|
5061
|
+
help="List the files and reviewers for each CL that would "
|
5062
|
+
"be created, but don't create branches or CLs.")
|
5053
5063
|
options, _ = parser.parse_args(args)
|
5054
5064
|
|
5055
5065
|
if not options.description_file:
|
@@ -5059,7 +5069,7 @@ def CMDsplit(parser, args):
|
|
5059
5069
|
return CMDupload(OptionParser(), args)
|
5060
5070
|
|
5061
5071
|
return split_cl.SplitCl(options.description_file, options.comment_file,
|
5062
|
-
Changelist, WrappedCMDupload)
|
5072
|
+
Changelist, WrappedCMDupload, options.dry_run)
|
5063
5073
|
|
5064
5074
|
|
5065
5075
|
@subcommand.usage('DEPRECATED')
|
@@ -5357,7 +5367,8 @@ def PushToGitWithAutoRebase(remote, branch, original_description,
|
|
5357
5367
|
print('Your patch doesn\'t apply cleanly to \'%s\' HEAD @ %s, '
|
5358
5368
|
'the following files have merge conflicts:' %
|
5359
5369
|
(branch, parent_hash))
|
5360
|
-
print(RunGit(['
|
5370
|
+
print(RunGit(['-c', 'core.quotePath=false', 'diff',
|
5371
|
+
'--name-status', '--diff-filter=U']).strip())
|
5361
5372
|
print('Please rebase your patch and try again.')
|
5362
5373
|
RunGitWithCode(['cherry-pick', '--abort'])
|
5363
5374
|
break
|
@@ -5878,7 +5889,8 @@ def CMDowners(parser, args):
|
|
5878
5889
|
def BuildGitDiffCmd(diff_type, upstream_commit, args):
|
5879
5890
|
"""Generates a diff command."""
|
5880
5891
|
# Generate diff for the current branch's changes.
|
5881
|
-
diff_cmd = ['
|
5892
|
+
diff_cmd = ['-c', 'core.quotePath=false', 'diff',
|
5893
|
+
'--no-ext-diff', '--no-prefix', diff_type,
|
5882
5894
|
upstream_commit, '--']
|
5883
5895
|
|
5884
5896
|
if args:
|
@@ -262,7 +262,8 @@ class _Drover(object):
|
|
262
262
|
# Files that have been deleted between branch and cherry-pick will not have
|
263
263
|
# their skip-worktree bit set so set it manually for those files to avoid
|
264
264
|
# git status incorrectly listing them as unstaged deletes.
|
265
|
-
repo_status = self._run_git_command(
|
265
|
+
repo_status = self._run_git_command(
|
266
|
+
['-c', 'core.quotePath=false', 'status', '--porcelain']).splitlines()
|
266
267
|
extra_files = [f[3:] for f in repo_status if f[:2] == ' D']
|
267
268
|
if extra_files:
|
268
269
|
self._run_git_command_with_stdin(
|
@@ -34,7 +34,8 @@ def main(args):
|
|
34
34
|
print 'fatal: No upstream configured for branch \'%s\'' % opts.branch
|
35
35
|
return 1
|
36
36
|
|
37
|
-
cmd = [git.GIT_EXE, '
|
37
|
+
cmd = [git.GIT_EXE, '-c', 'core.quotePath=false',
|
38
|
+
'diff', '--patience', '-C', '-C']
|
38
39
|
if opts.wordwise:
|
39
40
|
cmd += ['--word-diff=color', r'--word-diff-regex=(\w+|[^[:space:]])']
|
40
41
|
cmd += [git.get_or_create_merge_base(opts.branch, par)]
|
@@ -156,7 +156,7 @@ def parse_args():
|
|
156
156
|
bin_dir = os.environ.get('DEPOT_TOOLS_GSUTIL_BIN_DIR', DEFAULT_BIN_DIR)
|
157
157
|
|
158
158
|
parser = argparse.ArgumentParser()
|
159
|
-
parser.add_argument('--force-version', default='4.
|
159
|
+
parser.add_argument('--force-version', default='4.28')
|
160
160
|
parser.add_argument('--clean', action='store_true',
|
161
161
|
help='Clear any existing gsutil package, forcing a new download.')
|
162
162
|
parser.add_argument('--fallback', default=DEFAULT_FALLBACK_GSUTIL)
|
@@ -1165,15 +1165,22 @@ def CheckCIPDManifest(input_api, output_api, path=None, content=None):
|
|
1165
1165
|
if path:
|
1166
1166
|
assert content is None, 'Cannot provide both "path" and "content".'
|
1167
1167
|
cmd += ['-ensure-file', path]
|
1168
|
+
name = 'Check CIPD manifest %r' % path
|
1168
1169
|
elif content:
|
1169
1170
|
assert path is None, 'Cannot provide both "path" and "content".'
|
1170
1171
|
cmd += ['-ensure-file=-']
|
1171
1172
|
kwargs['stdin'] = content
|
1173
|
+
# quick and dirty parser to extract checked packages.
|
1174
|
+
packages = [
|
1175
|
+
l.split()[0] for l in (ll.strip() for ll in content.splitlines())
|
1176
|
+
if ' ' in l and not l.startswith('$')
|
1177
|
+
]
|
1178
|
+
name = 'Check CIPD packages from string: %r' % (packages,)
|
1172
1179
|
else:
|
1173
1180
|
raise Exception('Exactly one of "path" or "content" must be provided.')
|
1174
1181
|
|
1175
1182
|
return input_api.Command(
|
1176
|
-
|
1183
|
+
name,
|
1177
1184
|
cmd,
|
1178
1185
|
kwargs,
|
1179
1186
|
output_api.PresubmitError)
|