diff options
Diffstat (limited to 'repo')
-rwxr-xr-x | repo | 47 |
1 files changed, 39 insertions, 8 deletions
@@ -10,6 +10,7 @@ copy of repo in the checkout. | |||
10 | 10 | ||
11 | from __future__ import print_function | 11 | from __future__ import print_function |
12 | 12 | ||
13 | import datetime | ||
13 | import os | 14 | import os |
14 | import platform | 15 | import platform |
15 | import subprocess | 16 | import subprocess |
@@ -478,6 +479,39 @@ def _CheckGitVersion(): | |||
478 | raise CloneFailure() | 479 | raise CloneFailure() |
479 | 480 | ||
480 | 481 | ||
482 | def SetGitTrace2ParentSid(env=None): | ||
483 | """Set up GIT_TRACE2_PARENT_SID for git tracing.""" | ||
484 | # We roughly follow the format git itself uses in trace2/tr2_sid.c. | ||
485 | # (1) Be unique (2) be valid filename (3) be fixed length. | ||
486 | # | ||
487 | # Since we always export this variable, we try to avoid more expensive calls. | ||
488 | # e.g. We don't attempt hostname lookups or hashing the results. | ||
489 | if env is None: | ||
490 | env = os.environ | ||
491 | |||
492 | KEY = 'GIT_TRACE2_PARENT_SID' | ||
493 | |||
494 | now = datetime.datetime.utcnow() | ||
495 | value = 'repo-%s-P%08x' % (now.strftime('%Y%m%dT%H%M%SZ'), os.getpid()) | ||
496 | |||
497 | # If it's already set, then append ourselves. | ||
498 | if KEY in env: | ||
499 | value = env[KEY] + '/' + value | ||
500 | |||
501 | _setenv(KEY, value, env=env) | ||
502 | |||
503 | |||
504 | def _setenv(key, value, env=None): | ||
505 | """Set |key| in the OS environment |env| to |value|.""" | ||
506 | if env is None: | ||
507 | env = os.environ | ||
508 | # Environment handling across systems is messy. | ||
509 | try: | ||
510 | env[key] = value | ||
511 | except UnicodeEncodeError: | ||
512 | env[key] = value.encode() | ||
513 | |||
514 | |||
481 | def NeedSetupGnuPG(): | 515 | def NeedSetupGnuPG(): |
482 | if not os.path.isdir(home_dot_repo): | 516 | if not os.path.isdir(home_dot_repo): |
483 | return True | 517 | return True |
@@ -514,10 +548,7 @@ def SetupGnuPG(quiet): | |||
514 | sys.exit(1) | 548 | sys.exit(1) |
515 | 549 | ||
516 | env = os.environ.copy() | 550 | env = os.environ.copy() |
517 | try: | 551 | _setenv('GNUPGHOME', gpg_dir, env) |
518 | env['GNUPGHOME'] = gpg_dir | ||
519 | except UnicodeEncodeError: | ||
520 | env['GNUPGHOME'] = gpg_dir.encode() | ||
521 | 552 | ||
522 | cmd = ['gpg', '--import'] | 553 | cmd = ['gpg', '--import'] |
523 | try: | 554 | try: |
@@ -723,10 +754,7 @@ def _Verify(cwd, branch, quiet): | |||
723 | print(file=sys.stderr) | 754 | print(file=sys.stderr) |
724 | 755 | ||
725 | env = os.environ.copy() | 756 | env = os.environ.copy() |
726 | try: | 757 | _setenv('GNUPGHOME', gpg_dir, env) |
727 | env['GNUPGHOME'] = gpg_dir | ||
728 | except UnicodeEncodeError: | ||
729 | env['GNUPGHOME'] = gpg_dir.encode() | ||
730 | 758 | ||
731 | cmd = [GIT, 'tag', '-v', cur] | 759 | cmd = [GIT, 'tag', '-v', cur] |
732 | proc = subprocess.Popen(cmd, | 760 | proc = subprocess.Popen(cmd, |
@@ -901,6 +929,9 @@ def _SetDefaultsTo(gitdir): | |||
901 | def main(orig_args): | 929 | def main(orig_args): |
902 | cmd, opt, args = _ParseArguments(orig_args) | 930 | cmd, opt, args = _ParseArguments(orig_args) |
903 | 931 | ||
932 | # We run this early as we run some git commands ourselves. | ||
933 | SetGitTrace2ParentSid() | ||
934 | |||
904 | repo_main, rel_repo_dir = None, None | 935 | repo_main, rel_repo_dir = None, None |
905 | # Don't use the local repo copy, make sure to switch to the gitc client first. | 936 | # Don't use the local repo copy, make sure to switch to the gitc client first. |
906 | if cmd != 'gitc-init': | 937 | if cmd != 'gitc-init': |