Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit65c07d6

Browse files
author
Sandy Carter
committed
Implement is_ancestor
Wrap `git merge-base --is-ancestor` into its own function because it actsas a boolean check unlike base `git merge-base call`
1 parentf360ecd commit65c07d6

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

‎git/repo/base.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,21 @@ def merge_base(self, *rev, **kwargs):
504504

505505
returnres
506506

507+
defis_ancestor(self,ancestor_rev,rev):
508+
"""Check if a commit is an ancestor of another
509+
510+
:param ancestor_rev: Rev which should be an ancestor
511+
:param rev: Rev to test against ancestor_rev
512+
:return: ``True``, ancestor_rev is an accestor to rev.
513+
"""
514+
try:
515+
self.git.merge_base(ancestor_rev,rev,is_ancestor=True)
516+
exceptGitCommandErroraserr:
517+
iferr.status==1:
518+
returnFalse
519+
raise
520+
returnTrue
521+
507522
def_get_daemon_export(self):
508523
filename=join(self.git_dir,self.DAEMON_EXPORT_FILE)
509524
returnos.path.exists(filename)

‎git/test/test_repo.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
importsys
4343
importtempfile
4444
importshutil
45+
importitertools
4546
fromioimportBytesIO
4647

4748

@@ -765,3 +766,16 @@ def test_merge_base(self):
765766

766767
# Test for no merge base - can't do as we have
767768
self.failUnlessRaises(GitCommandError,repo.merge_base,c1,'ffffff')
769+
770+
deftest_is_ancestor(self):
771+
repo=self.rorepo
772+
c1='f6aa8d1'
773+
c2='763ef75'
774+
self.assertTrue(repo.is_ancestor(c1,c1))
775+
self.assertTrue(repo.is_ancestor("master","master"))
776+
self.assertTrue(repo.is_ancestor(c1,c2))
777+
self.assertTrue(repo.is_ancestor(c1,"master"))
778+
self.assertFalse(repo.is_ancestor(c2,c1))
779+
self.assertFalse(repo.is_ancestor("master",c1))
780+
fori,jinitertools.permutations([c1,'ffffff',''],r=2):
781+
self.assertRaises(GitCommandError,repo.is_ancestor,i,j)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp