mirror of
git://git.yoctoproject.org/layerindex-web.git
synced 2025-07-05 13:14:46 +02:00
layerindex/utils.py: add is_commit_ancestor check
Add a helper function to check if a given SHA1 hash is an ancestor in the currently checked out branch, using: git merge-branch --is-ancestor <commit> HEAD NOTE: This will not match commits which have been cherry-picked. Signed-off-by: Tim Orling <tim.orling@konsulko.com>
This commit is contained in:
parent
4dd7f0ee8f
commit
ee30a2e037
|
@ -229,6 +229,28 @@ def explode_dep_versions2(bitbakepath, deps):
|
||||||
import bb.utils
|
import bb.utils
|
||||||
return bb.utils.explode_dep_versions2(deps)
|
return bb.utils.explode_dep_versions2(deps)
|
||||||
|
|
||||||
|
def is_commit_ancestor(repodir, commit, logger):
|
||||||
|
"""
|
||||||
|
Check if the given SHA1 hash is an ancestor in the currently checked out branch.
|
||||||
|
NOTE: This will not match commits which have been cherry-picked.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# check if commit is a sha1 hash
|
||||||
|
if re.match('[0-9a-f]{40}', commit):
|
||||||
|
# check if the commit is an ancestor
|
||||||
|
contained = runcmd(['git', 'merge-base', '--is-ancestor', '%s' % commit, 'HEAD'], repodir, logger=logger)
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
raise Exception('is_commit_ancestor: "commit" must be a SHA1 hash')
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
if e.returncode == 1:
|
||||||
|
# commit is not an ancestor
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
raise e
|
||||||
|
except Exception as esc:
|
||||||
|
logger.warn(esc)
|
||||||
|
|
||||||
def checkout_repo(repodir, commit, logger, force=False):
|
def checkout_repo(repodir, commit, logger, force=False):
|
||||||
"""
|
"""
|
||||||
Check out a revision in a repository, ensuring that untracked/uncommitted
|
Check out a revision in a repository, ensuring that untracked/uncommitted
|
||||||
|
|
Loading…
Reference in New Issue
Block a user