commit: e2fe77b0831451db82d025538228cf54d5f898ea
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Fri May 15 19:00:20 2015 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Fri May 15 19:00:20 2015 +0000
URL:
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=e2fe77b0
Add text to sync.py and fix some small things in it
tbc/pym/sync.py | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/tbc/pym/sync.py b/tbc/pym/sync.py
index 2622b25..f9e4cda 100644
--- a/tbc/pym/sync.py
+++ b/tbc/pym/sync.py
@@ -14,19 +14,23 @@ from tbc.sqlquerys import get_config_id, add_tbc_logs,
get_config_all_info, get_
from tbc.readconf import read_config_settings
def git_repos_list(session, myportdb):
+ # get repo tree from portage
repo_trees_list = myportdb.porttrees
+ repo_dir_list = []
+ # append repo dirs to a list
for repo_dir in repo_trees_list:
- repo_dir_list = []
repo_dir_list.append(repo_dir)
return repo_dir_list
def git_fetch(session, git_repo, config_id):
+ # setup repo, fetch it and return repo
repo = Repository(git_repo)
remote = repo.remotes["origin"]
remote.fetch()
return repo
def git_merge(session, repo, config_id):
+ # check what of type merge we need to do and do it
remote_master_id =
repo.lookup_reference('refs/remotes/origin/master').target
merge_result, _ = repo.merge_analysis(remote_master_id)
if merge_result & GIT_MERGE_ANALYSIS_UP_TO_DATE:
@@ -65,6 +69,7 @@ def git_sync_main(session):
log_msg = "Waiting for Guest to be idel"
add_tbc_logs(session, log_msg, "info", config_id)
guestid_list = []
+ # check if the guests is idel
for config in get_config_all_info(session):
if not config.Host:
guestid_list.append(config.ConfigId)
@@ -77,12 +82,15 @@ def git_sync_main(session):
GuestBusy = False
else:
time.sleep(30)
+ #remove the needed base profile clone
try:
os.remove(mysettings['PORTDIR'] + "/profiles/config/parent")
os.rmdir(mysettings['PORTDIR'] + "/profiles/config")
except:
pass
+ # check git diffs witch Manifests get updated and pass that to a dict
+ # fetch and merge the repo
repo_cp_dict = {}
for repo_dir in git_repos_list(session, myportdb):
attr = {}
@@ -91,11 +99,10 @@ def git_sync_main(session):
merge_result, _ = repo.merge_analysis(remote_master_id)
if not merge_result & GIT_MERGE_ANALYSIS_UP_TO_DATE:
git_merge(session, repo, config_id)
- out = repo.diff('HEAD', 'HEAD^')
- repo_diff = out.patch
+ repo_diff = repo.diff('HEAD', 'HEAD^')
cp_list = []
reponame = myportdb.getRepositoryName(repo_dir)
- for diff_line in repo_diff.splitlines():
+ for diff_line in repo_diff.patch.splitlines():
if re.search("Manifest", diff_line) and
re.search("^diff --git", diff_line):
diff_line2 = re.split(' ',
re.sub('[a-b]/', '', re.sub('diff --git ', '', diff_line)))
if diff_line2[0] == diff_line2[1] or
"Manifest" in diff_line2[0]:
@@ -110,8 +117,7 @@ def git_sync_main(session):
log_msg = "Repo is up to date"
add_tbc_logs(session, log_msg, "info", config_id)
- # Need to add a config dir so we can use profiles/base for reading the
tree.
- # We may allready have the dir on local repo when we sync.
+ # Need to add a clone of profiles/base for reading the tree
try:
os.mkdir(mysettings['PORTDIR'] + "/profiles/config", 0o777)
with open(mysettings['PORTDIR'] + "/profiles/config/parent",
"w") as f:
@@ -119,14 +125,16 @@ def git_sync_main(session):
f.close()
except:
pass
+
log_msg = "Repo sync ... Done."
add_tbc_logs(session, log_msg, "info", config_id)
return repo_cp_dict
def git_pull(session, git_repo, config_id):
+ # do a gitt pull
log_msg = "Git pull"
add_tbc_logs(session, log_msg, "info", config_id)
- reop = git_fetch(session, git_repo, config_id)
+ repo = git_fetch(session, git_repo, config_id)
git_merge(session, repo, config_id)
log_msg = "Git pull ... Done"
add_tbc_logs(session, log_msg, "info", config_id)