summaryrefslogtreecommitdiffstats
path: root/git_command.py
diff options
context:
space:
mode:
Diffstat (limited to 'git_command.py')
-rw-r--r--git_command.py25
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: