diff options
author | Markus Lehtonen <markus.lehtonen@linux.intel.com> | 2017-02-03 10:53:32 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-02-15 20:06:41 -0800 |
commit | e3f06659c26c5758c7eeac060283dd8e3bfd7f8f (patch) | |
tree | 909a5d0f10df815d4fdb0b40e4ddd7ebd5e1b04d | |
parent | 69c7907bd9c8ea49d1499a8ef044a89d71c84885 (diff) | |
download | poky-e3f06659c26c5758c7eeac060283dd8e3bfd7f8f.tar.gz |
oeqa.utils.git: support bare repos
[YOCTO #10582]
(From OE-Core rev: a223b4d26c8834485cbec1f10defca42301550f7)
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 | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/meta/lib/oeqa/utils/git.py b/meta/lib/oeqa/utils/git.py index 5dd90e0d83..e0cb3f0db2 100644 --- a/meta/lib/oeqa/utils/git.py +++ b/meta/lib/oeqa/utils/git.py | |||
@@ -16,12 +16,17 @@ class GitError(Exception): | |||
16 | class GitRepo(object): | 16 | class GitRepo(object): |
17 | """Class representing a Git repository clone""" | 17 | """Class representing a Git repository clone""" |
18 | def __init__(self, path, is_topdir=False): | 18 | def __init__(self, path, is_topdir=False): |
19 | self.top_dir = self._run_git_cmd_at(['rev-parse', '--show-toplevel'], | ||
20 | path) | ||
21 | git_dir = self._run_git_cmd_at(['rev-parse', '--git-dir'], path) | 19 | git_dir = self._run_git_cmd_at(['rev-parse', '--git-dir'], path) |
22 | git_dir = git_dir if os.path.isabs(git_dir) else os.path.join(path, git_dir) | 20 | git_dir = git_dir if os.path.isabs(git_dir) else os.path.join(path, git_dir) |
23 | self.git_dir = os.path.realpath(git_dir) | 21 | self.git_dir = os.path.realpath(git_dir) |
24 | 22 | ||
23 | if self._run_git_cmd_at(['rev-parse', '--is-bare-repository'], path) == 'true': | ||
24 | self.bare = True | ||
25 | self.top_dir = self.git_dir | ||
26 | else: | ||
27 | self.bare = False | ||
28 | self.top_dir = self._run_git_cmd_at(['rev-parse', '--show-toplevel'], | ||
29 | path) | ||
25 | realpath = os.path.realpath(path) | 30 | realpath = os.path.realpath(path) |
26 | if is_topdir and realpath != self.top_dir: | 31 | if is_topdir and realpath != self.top_dir: |
27 | raise GitError("{} is not a Git top directory".format(realpath)) | 32 | raise GitError("{} is not a Git top directory".format(realpath)) |
@@ -40,9 +45,12 @@ class GitRepo(object): | |||
40 | return ret.output.strip() | 45 | return ret.output.strip() |
41 | 46 | ||
42 | @staticmethod | 47 | @staticmethod |
43 | def init(path): | 48 | def init(path, bare=False): |
44 | """Initialize a new Git repository""" | 49 | """Initialize a new Git repository""" |
45 | GitRepo._run_git_cmd_at('init', cwd=path) | 50 | cmd = ['init'] |
51 | if bare: | ||
52 | cmd.append('--bare') | ||
53 | GitRepo._run_git_cmd_at(cmd, cwd=path) | ||
46 | return GitRepo(path, is_topdir=True) | 54 | return GitRepo(path, is_topdir=True) |
47 | 55 | ||
48 | def run_cmd(self, git_args, env_update=None): | 56 | def run_cmd(self, git_args, env_update=None): |