diff options
Diffstat (limited to 'git_command.py')
-rw-r--r-- | git_command.py | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/git_command.py b/git_command.py index 95db91f2..5d73c281 100644 --- a/git_command.py +++ b/git_command.py | |||
@@ -169,7 +169,8 @@ class GitCommand(object): | |||
169 | disable_editor=False, | 169 | disable_editor=False, |
170 | ssh_proxy=None, | 170 | ssh_proxy=None, |
171 | cwd=None, | 171 | cwd=None, |
172 | gitdir=None): | 172 | gitdir=None, |
173 | objdir=None): | ||
173 | env = self._GetBasicEnv() | 174 | env = self._GetBasicEnv() |
174 | 175 | ||
175 | if disable_editor: | 176 | if disable_editor: |
@@ -194,13 +195,24 @@ class GitCommand(object): | |||
194 | cwd = project.worktree | 195 | cwd = project.worktree |
195 | if not gitdir: | 196 | if not gitdir: |
196 | gitdir = project.gitdir | 197 | gitdir = project.gitdir |
198 | # Git on Windows wants its paths only using / for reliability. | ||
199 | if platform_utils.isWindows(): | ||
200 | if objdir: | ||
201 | objdir = objdir.replace('\\', '/') | ||
202 | if gitdir: | ||
203 | gitdir = gitdir.replace('\\', '/') | ||
204 | |||
205 | if objdir: | ||
206 | # Set to the place we want to save the objects. | ||
207 | env['GIT_OBJECT_DIRECTORY'] = objdir | ||
208 | if gitdir: | ||
209 | # Allow git to search the original place in case of local or unique refs | ||
210 | # that git will attempt to resolve even if we aren't fetching them. | ||
211 | env['GIT_ALTERNATE_OBJECT_DIRECTORIES'] = gitdir + '/objects' | ||
197 | 212 | ||
198 | command = [GIT] | 213 | command = [GIT] |
199 | if bare: | 214 | if bare: |
200 | if gitdir: | 215 | if gitdir: |
201 | # Git on Windows wants its paths only using / for reliability. | ||
202 | if platform_utils.isWindows(): | ||
203 | gitdir = gitdir.replace('\\', '/') | ||
204 | env[GIT_DIR] = gitdir | 216 | env[GIT_DIR] = gitdir |
205 | cwd = None | 217 | cwd = None |
206 | command.append(cmdv[0]) | 218 | command.append(cmdv[0]) |
@@ -234,6 +246,11 @@ class GitCommand(object): | |||
234 | dbg += ': export GIT_DIR=%s\n' % env[GIT_DIR] | 246 | dbg += ': export GIT_DIR=%s\n' % env[GIT_DIR] |
235 | LAST_GITDIR = env[GIT_DIR] | 247 | LAST_GITDIR = env[GIT_DIR] |
236 | 248 | ||
249 | if 'GIT_OBJECT_DIRECTORY' in env: | ||
250 | dbg += ': export GIT_OBJECT_DIRECTORY=%s\n' % env['GIT_OBJECT_DIRECTORY'] | ||
251 | if 'GIT_ALTERNATE_OBJECT_DIRECTORIES' in env: | ||
252 | dbg += ': export GIT_ALTERNATE_OBJECT_DIRECTORIES=%s\n' % env['GIT_ALTERNATE_OBJECT_DIRECTORIES'] | ||
253 | |||
237 | dbg += ': ' | 254 | dbg += ': ' |
238 | dbg += ' '.join(command) | 255 | dbg += ' '.join(command) |
239 | if stdin == subprocess.PIPE: | 256 | if stdin == subprocess.PIPE: |