repos: also move version control call out of config.py

Signed-off-by: Henning Schild <henning.schild@siemens.com>
This commit is contained in:
Henning Schild 2018-01-05 16:00:25 +01:00 committed by Daniel Wagner
parent 941fa38a2d
commit b5b2766b24
2 changed files with 20 additions and 12 deletions

View File

@ -49,7 +49,7 @@ except ImportError:
return platform.dist()[0]
from .repos import Repo
from .libkas import run_cmd, repos_fetch
from .libkas import repos_fetch
__license__ = 'MIT'
__copyright__ = 'Copyright (c) Siemens AG, 2017'
@ -193,17 +193,8 @@ class Config:
if url is None:
# No git operation on repository
if path is None:
# In-tree configuration
path = os.path.dirname(self.filename)
(ret, output) = run_cmd(['git',
'rev-parse',
'--show-toplevel'],
cwd=path,
env=self.environ,
fail=False,
liveupdate=False)
if ret == 0:
path = output.strip()
path = Repo.get_root_path(os.path.dirname(self.filename),
self.environ)
logging.info('Using %s as root for repository %s', path,
name)

View File

@ -155,3 +155,20 @@ class Repo:
run_cmd(['git', 'checkout', '-q',
'{refspec}'.format(refspec=self.refspec)],
cwd=self.path)
@staticmethod
def get_root_path(path, environ):
"""
Check if path is a version control repo and return its root path.
"""
(ret, output) = run_cmd(['git',
'rev-parse',
'--show-toplevel'],
cwd=path,
env=environ,
fail=False,
liveupdate=False)
if ret == 0:
return output.strip()
return path