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: |
