Skip to content

Commit fe5c9d6

Browse files
committed
Merge remote-tracking branch 'djmattyg007/branches_are_references'
2 parents 617dd34 + 14bcce0 commit fe5c9d6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

pygit2/repository.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ def checkout(self, refname=None, **kwargs):
263263
return self.checkout_head(**kwargs)
264264

265265
# Case 3: Reference
266-
if type(refname) is Reference:
266+
if isinstance(refname, Reference):
267267
reference = refname
268268
refname = refname.name
269269
else:

test/test_repository.py

+19
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,25 @@ def test_checkout_ref(self):
236236
self.assertTrue('new' in head.tree)
237237
self.assertTrue('bye.txt' not in self.repo.status())
238238

239+
def test_checkout_branch(self):
240+
branch_i18n = self.repo.lookup_branch('i18n')
241+
242+
# checkout i18n with conflicts and default strategy should
243+
# not be possible
244+
self.assertRaises(pygit2.GitError, self.repo.checkout, branch_i18n)
245+
246+
# checkout i18n with GIT_CHECKOUT_FORCE
247+
head = self.repo.head
248+
head = self.repo[head.target]
249+
self.assertTrue('new' not in head.tree)
250+
self.repo.checkout(branch_i18n, strategy=pygit2.GIT_CHECKOUT_FORCE)
251+
252+
head = self.repo.head
253+
head = self.repo[head.target]
254+
self.assertEqual(head.hex, branch_i18n.target.hex)
255+
self.assertTrue('new' in head.tree)
256+
self.assertTrue('bye.txt' not in self.repo.status())
257+
239258
def test_checkout_index(self):
240259
# some changes to working dir
241260
with open(os.path.join(self.repo.workdir, 'hello.txt'), 'w') as f:

0 commit comments

Comments
 (0)