diff options
-rw-r--r-- | git_command.py | 13 | ||||
-rw-r--r-- | tests/test_git_command.py | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/git_command.py b/git_command.py index a4081f45..dc542c36 100644 --- a/git_command.py +++ b/git_command.py | |||
@@ -134,6 +134,7 @@ class UserAgent(object): | |||
134 | 134 | ||
135 | _os = None | 135 | _os = None |
136 | _repo_ua = None | 136 | _repo_ua = None |
137 | _git_ua = None | ||
137 | 138 | ||
138 | @property | 139 | @property |
139 | def os(self): | 140 | def os(self): |
@@ -165,6 +166,17 @@ class UserAgent(object): | |||
165 | 166 | ||
166 | return self._repo_ua | 167 | return self._repo_ua |
167 | 168 | ||
169 | @property | ||
170 | def git(self): | ||
171 | """The UA when running git.""" | ||
172 | if self._git_ua is None: | ||
173 | self._git_ua = 'git/%s (%s) git-repo/%s' % ( | ||
174 | git.version_tuple().full, | ||
175 | self.os, | ||
176 | RepoSourceVersion()) | ||
177 | |||
178 | return self._git_ua | ||
179 | |||
168 | user_agent = UserAgent() | 180 | user_agent = UserAgent() |
169 | 181 | ||
170 | def git_require(min_version, fail=False, msg=''): | 182 | def git_require(min_version, fail=False, msg=''): |
@@ -214,6 +226,7 @@ class GitCommand(object): | |||
214 | if 'GIT_ALLOW_PROTOCOL' not in env: | 226 | if 'GIT_ALLOW_PROTOCOL' not in env: |
215 | _setenv(env, 'GIT_ALLOW_PROTOCOL', | 227 | _setenv(env, 'GIT_ALLOW_PROTOCOL', |
216 | 'file:git:http:https:ssh:persistent-http:persistent-https:sso:rpc') | 228 | 'file:git:http:https:ssh:persistent-http:persistent-https:sso:rpc') |
229 | _setenv(env, 'GIT_HTTP_USER_AGENT', user_agent.git) | ||
217 | 230 | ||
218 | if project: | 231 | if project: |
219 | if not cwd: | 232 | if not cwd: |
diff --git a/tests/test_git_command.py b/tests/test_git_command.py index 5ceb0b33..51171a32 100644 --- a/tests/test_git_command.py +++ b/tests/test_git_command.py | |||
@@ -68,3 +68,11 @@ class UserAgentUnitTest(unittest.TestCase): | |||
68 | # the general form. | 68 | # the general form. |
69 | m = re.match(r'^git-repo/[^ ]+ ([^ ]+) git/[^ ]+ Python/[0-9.]+', ua) | 69 | m = re.match(r'^git-repo/[^ ]+ ([^ ]+) git/[^ ]+ Python/[0-9.]+', ua) |
70 | self.assertIsNotNone(m) | 70 | self.assertIsNotNone(m) |
71 | |||
72 | def test_smoke_git(self): | ||
73 | """Make sure git UA returns something useful.""" | ||
74 | ua = git_command.user_agent.git | ||
75 | # We can't dive too deep because of OS/tool differences, but we can check | ||
76 | # the general form. | ||
77 | m = re.match(r'^git/[^ ]+ ([^ ]+) git-repo/[^ ]+', ua) | ||
78 | self.assertIsNotNone(m) | ||