summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-01-15 18:05:48 +0100
committerSebastian Thiel <byronimo@gmail.com>2015-01-15 18:05:48 +0100
commit26fc5866f6ed994f3b9d859a3255b10d04ee653d (patch)
tree7d6b4ed1befafca80f8eca9304ed1b637521b877
parent508807e59ce9d6c3574d314d502e82238e3e606c (diff)
downloadgitpython-26fc5866f6ed994f3b9d859a3255b10d04ee653d.tar.gz
Verified that it apparently is impossible to add empty submodules using git-python.
This is the case with `git submodule add` as well. This makes sense as an empty git repository doesn't have a commit, which needs to be specified as SHA in the parent repositories tree entry for the respective submodule. When manually adding the empty submodule to the .gitmodules file, git-python will throw another error related to the inability to find the submodule in the index. Even if an iteration would be possible, git-python would now throw a BadName exception, which clearly indicates that the 'HEAD' revision is invalid (as it doesn't point to any commit). Fixes #152 Fixes #105
-rw-r--r--git/test/test_submodule.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/git/test/test_submodule.py b/git/test/test_submodule.py
index 75edf6e5..2be0e795 100644
--- a/git/test/test_submodule.py
+++ b/git/test/test_submodule.py
@@ -1,19 +1,21 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+import shutil
+import sys
+import os
+
+import git
from git.test.lib import (
TestBase,
with_rw_repo
)
+from gitdb.test.lib import with_rw_directory
from git.exc import InvalidGitRepositoryError
from git.objects.submodule.base import Submodule
from git.objects.submodule.root import RootModule, RootUpdateProgress
from git.util import to_native_path_linux, join_path_native
from git.compat import string_types
-import shutil
-import git
-import sys
-import os
from nose import SkipTest
@@ -597,3 +599,17 @@ class TestSubmodule(TestBase):
self.failUnlessRaises(ValueError, rwrepo.create_submodule, 'fail', os.path.expanduser('~'))
self.failUnlessRaises(ValueError, rwrepo.create_submodule, 'fail-too',
rwrepo.working_tree_dir + os.path.sep)
+
+ @with_rw_directory
+ def test_add_empty_repo(self, rwdir):
+ parent_dir = os.path.join(rwdir, 'parent')
+ os.mkdir(parent_dir)
+ empty_repo_dir = os.path.join(rwdir, 'empty-repo')
+
+ parent = git.Repo.init(parent_dir)
+ git.Repo.init(empty_repo_dir)
+
+ for checkout_mode in range(2):
+ self.failUnlessRaises(ValueError, parent.create_submodule, 'empty', 'empty',
+ url=empty_repo_dir, no_checkout=checkout_mode)
+ # end for each checkout mode