diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2016-08-15 13:56:58 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-08-25 23:03:47 +0100 |
commit | 979c735678e49a5b579dbfdc3d478aef8183531f (patch) | |
tree | bad94e7e3e326b843a02861ffc7fd9d8277984a8 | |
parent | 618a2ede75b6b360974b9c74b046f4bf75bd8e17 (diff) | |
download | poky-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.py | 9 |
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""" |
7 | import os | ||
8 | |||
7 | from oeqa.utils.commands import runCmd | 9 | from oeqa.utils.commands import runCmd |
8 | 10 | ||
9 | 11 | ||
@@ -13,9 +15,12 @@ class GitError(Exception): | |||
13 | 15 | ||
14 | class GitRepo(object): | 16 | class 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): |