summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKostis Anagnostopoulos <ankostis@gmail.com>2016-10-16 02:44:37 +0200
committerKostis Anagnostopoulos <ankostis@gmail.com>2016-10-16 03:04:36 +0200
commitb2efa1b19061ad6ed9d683ba98a88b18bff3bfd9 (patch)
treedcdafa0214e9d2eb84f285c4afddd056f65b1f00
parent4486bcbbf49ad0eacf2d8229fb0e7e3432f440d9 (diff)
downloadgitpython-b2efa1b19061ad6ed9d683ba98a88b18bff3bfd9.tar.gz
cygwin, #533: FIX submodules detection (~10TCs fixed)
+ Decygpath sm's `.git` file contents. + Polish another path in `git add`; actually no main-code changes, just a replace \-->/ on a relative(!) path to make cygwin-git to work. - REGRESSION `test_git_submodules_and_add_sm_with_new_commit` asks for user/email settings. - Cygwin TCs failing: - PY2: err: 2, fail: 1 - PY3: err: 2, fail: 1
-rw-r--r--git/repo/base.py2
-rw-r--r--git/repo/fun.py6
-rw-r--r--git/test/test_repo.py2
3 files changed, 7 insertions, 3 deletions
diff --git a/git/repo/base.py b/git/repo/base.py
index 20b3fa27..21d129e9 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -109,7 +109,7 @@ class Repo(object):
:raise InvalidGitRepositoryError:
:raise NoSuchPathError:
:return: git.Repo """
- if path and Git.is_cygwin():
+ if Git.is_cygwin():
path = decygpath(path)
epath = _expand_path(path or os.getcwd())
diff --git a/git/repo/fun.py b/git/repo/fun.py
index 5fe8682d..7ea45e6b 100644
--- a/git/repo/fun.py
+++ b/git/repo/fun.py
@@ -6,13 +6,14 @@ from git.compat import xrange
from git.exc import WorkTreeRepositoryUnsupported
from git.objects import Object
from git.refs import SymbolicReference
-from git.util import hex_to_bin, bin_to_hex
+from git.util import hex_to_bin, bin_to_hex, decygpath
from gitdb.exc import (
BadObject,
BadName,
)
import os.path as osp
+from git.cmd import Git
__all__ = ('rev_parse', 'is_git_dir', 'touch', 'find_git_dir', 'name_to_object', 'short_to_long', 'deref_tag',
@@ -59,6 +60,9 @@ def find_git_dir(d):
else:
if content.startswith('gitdir: '):
path = content[8:]
+ if Git.is_cygwin():
+ ## Cygwin creates submodules prefixed with `/cygdrive/...` suffixes.
+ path = decygpath(path)
if not osp.isabs(path):
path = osp.join(osp.dirname(d), path)
return find_git_dir(path)
diff --git a/git/test/test_repo.py b/git/test/test_repo.py
index 11c720e9..95bc8a96 100644
--- a/git/test/test_repo.py
+++ b/git/test/test_repo.py
@@ -310,7 +310,7 @@ class TestRepo(TestBase):
assert rwrepo.is_dirty(path="git") is True
assert rwrepo.is_dirty(path="doc") is False
- rwrepo.git.add(osp.join("git", "util.py"))
+ rwrepo.git.add(Git.polish_url(osp.join("git", "util.py")))
assert rwrepo.is_dirty(index=False, path="git") is False
assert rwrepo.is_dirty(path="git") is True