Skip to content

Commit d31155e

Browse files
committed
Merge pull request vcstools#76 from tkruse/submodule_updates
fix vcstools#75
2 parents 22f5b7a + c56eac7 commit d31155e

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

src/vcstools/git.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ def checkout(self, url, refname=None, verbose=False, shallow=False):
174174
cmd += ' --depth 1'
175175
if LooseVersion(self.gitversion) >= LooseVersion('1.7.10'):
176176
cmd += ' --no-single-branch'
177-
cmd += ' --recursive %s %s' % (url, self._path)
177+
if refname is None:
178+
# quicker than using _do_update, but undesired when switching branches next
179+
cmd += ' --recursive'
180+
cmd += ' %s %s' % (url, self._path)
178181
value, _, msg = run_shell_command(cmd,
179182
shell=True,
180183
no_filter=True,

test/test_git_subm.py

+19-6
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def setUpClass(self):
6767
# create a "remote" repo
6868
subprocess.check_call("git init", shell=True, cwd=self.remote_path)
6969
subprocess.check_call("touch fixed.txt", shell=True, cwd=self.remote_path)
70-
subprocess.check_call("git add *", shell=True, cwd=self.remote_path)
70+
subprocess.check_call("git add fixed.txt", shell=True, cwd=self.remote_path)
7171
subprocess.check_call("git commit -m initial", shell=True, cwd=self.remote_path)
7272
subprocess.check_call("git tag test_tag", shell=True, cwd=self.remote_path)
7373
subprocess.check_call("git branch test_branch", shell=True, cwd=self.remote_path)
@@ -111,7 +111,7 @@ def setUpClass(self):
111111
subprocess.check_call("git tag last_tag", shell=True, cwd=self.remote_path)
112112

113113
# attach submodule somewhere else in test_branch
114-
subprocess.check_call("git checkout test_branch", shell=True, cwd=self.remote_path)
114+
subprocess.check_call("git checkout master -b test_branch2", shell=True, cwd=self.remote_path)
115115
subprocess.check_call("git submodule add %s %s"%(self.submodule_path, "submodule2"), shell=True, cwd=self.remote_path)
116116
subprocess.check_call("git submodule init", shell=True, cwd=self.remote_path)
117117
subprocess.check_call("git submodule update", shell=True, cwd=self.remote_path)
@@ -142,13 +142,26 @@ def test_checkout_master_with_subs(self):
142142
self.assertTrue(client.checkout(url))
143143
self.assertTrue(client.path_exists())
144144
self.assertTrue(client.detect_presence())
145-
self.assertEqual(client.get_version(), self.version_final)
145+
self.assertEqual(self.version_final, client.get_version())
146146
self.assertTrue(subclient.path_exists())
147147
self.assertTrue(subclient.detect_presence())
148-
self.assertEqual(subclient.get_version(), self.subversion_final)
148+
self.assertEqual(self.subversion_final, subclient.get_version())
149149
self.assertTrue(subsubclient.path_exists())
150150
self.assertTrue(subsubclient.detect_presence())
151-
self.assertEqual(subsubclient.get_version(), self.subsubversion_final)
151+
self.assertEqual(self.subsubversion_final, subsubclient.get_version())
152+
153+
def test_checkout_branch_with_subs(self):
154+
url = self.remote_path
155+
client = GitClient(self.local_path)
156+
subclient = GitClient(self.sublocal_path)
157+
subsubclient = GitClient(self.subsublocal_path)
158+
self.assertFalse(client.path_exists())
159+
self.assertFalse(client.detect_presence())
160+
self.assertTrue(client.checkout(url, refname='test_branch'))
161+
self.assertTrue(client.path_exists())
162+
self.assertTrue(client.detect_presence())
163+
self.assertEqual(self.version_init, client.get_version())
164+
self.assertFalse(subclient.path_exists())
152165

153166
def test_switch_branches(self):
154167
url = self.remote_path
@@ -163,7 +176,7 @@ def test_switch_branches(self):
163176
self.assertTrue(subclient.path_exists())
164177
self.assertTrue(subsubclient.path_exists())
165178
self.assertFalse(subclient2.path_exists())
166-
new_version = "test_branch"
179+
new_version = "test_branch2"
167180
self.assertTrue(client.update(new_version))
168181
self.assertTrue(subclient2.path_exists())
169182

0 commit comments

Comments
 (0)