summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>2016-08-15 13:56:58 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-08-25 23:03:47 +0100
commit979c735678e49a5b579dbfdc3d478aef8183531f (patch)
treebad94e7e3e326b843a02861ffc7fd9d8277984a8
parent618a2ede75b6b360974b9c74b046f4bf75bd8e17 (diff)
downloadpoky-979c735678e49a5b579dbfdc3d478aef8183531f.tar.gz
oeqa.utils.git.GitRepo: new arg to require topdir
Add a new 'is_topdir' argument to the GitRepo init method which validates that the given path is the top directory of a Git repository. Without this argument GitRepo also accepts subdirectories of a Git repository (in which case GitRepo will point to the parent directory that is the top directory of this repository) which may have undesired in some cases. (From OE-Core rev: 044c81bd916fbe7140d184eb103f74786cfef604) Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oeqa/utils/git.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/meta/lib/oeqa/utils/git.py b/meta/lib/oeqa/utils/git.py
index 0fc8112321..ca84680118 100644
--- a/meta/lib/oeqa/utils/git.py
+++ b/meta/lib/oeqa/utils/git.py
@@ -4,6 +4,8 @@
4# Released under the MIT license (see COPYING.MIT) 4# Released under the MIT license (see COPYING.MIT)
5# 5#
6"""Git repository interactions""" 6"""Git repository interactions"""
7import os
8
7from oeqa.utils.commands import runCmd 9from oeqa.utils.commands import runCmd
8 10
9 11
@@ -13,9 +15,12 @@ class GitError(Exception):
13 15
14class GitRepo(object): 16class GitRepo(object):
15 """Class representing a Git repository clone""" 17 """Class representing a Git repository clone"""
16 def __init__(self, cwd): 18 def __init__(self, path, is_topdir=False):
17 self.top_dir = self._run_git_cmd_at(['rev-parse', '--show-toplevel'], 19 self.top_dir = self._run_git_cmd_at(['rev-parse', '--show-toplevel'],
18 cwd) 20 path)
21 realpath = os.path.realpath(path)
22 if is_topdir and realpath != self.top_dir:
23 raise GitError("{} is not a Git top directory".format(realpath))
19 24
20 @staticmethod 25 @staticmethod
21 def _run_git_cmd_at(git_args, cwd, **kwargs): 26 def _run_git_cmd_at(git_args, cwd, **kwargs):