From cb70c9a533eabd731f4ff8395aeadccca495d8e9 Mon Sep 17 00:00:00 2001 From: Frantisek Hrbata Date: Tue, 8 Dec 2020 14:06:46 +0100 Subject: [PATCH] git-mr-create: store mr tags to separate ref Tags which cannot be changed, like base, commits or commits count, are stored under new mr ref. Also don't store commit subjects and other info in tags. Let's get them directly from git in mrlib.load_tags. Signed-off-by: Frantisek Hrbata --- git-mr-create | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/git-mr-create b/git-mr-create index b29080c..1e59b2a 100755 --- a/git-mr-create +++ b/git-mr-create @@ -50,8 +50,11 @@ if mr == base: user = mrlib.get_user() tmpdir = tempfile.TemporaryDirectory() +mrtags = dict() tags = dict() -mrlib.add_tag(tags, mr, mrlib.rev_zero, "B", user, base) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "M", user, mr) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "B", user, base) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "A", user, user) if args.stdin: desc = sys.stdin.read() @@ -84,34 +87,35 @@ if not ae: sys.exit("No git user.email found.") at = int(time.time()) -mrlib.add_tag(tags, mr, mrlib.rev_zero, "AN", user, an) -mrlib.add_tag(tags, mr, mrlib.rev_zero, "AE", user, ae) -mrlib.add_tag(tags, mr, mrlib.rev_zero, "AT", user, at) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "AN", user, an) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "AE", user, ae) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "AT", user, at) mrlib.add_tag(tags, mr, mrlib.rev_zero, "S", user, subj) if desc: mrlib.add_tag(tags, mr, mrlib.rev_zero, "D", user, desc) -fmt = "--format=format:%H s %s%n%H an %an%n%H ae %ae%n%H at %at" +fmt = "--format=format:%H" rv, out, err = mrlib.run(["git", "log", fmt, "{}..{}".format(base, mr)]) commits = list() -for line in out.split("\n"): - commit,tag,value= line.split(None, 2) +for commit in out.split("\n"): + commits.insert(0, commit) - if commit not in commits: - commits.insert(0, commit) - - mrlib.add_tag(tags, mr, commit, tag, user, value) - -mrlib.add_tag(tags, mr, mrlib.rev_zero, "CC", user, str(len(commits))) -mrlib.add_tag(tags, mr, mrlib.rev_zero, "C", user, " ".join(commits)) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "CC", user, str(len(commits))) +mrlib.add_tag(mrtags, mr, mrlib.rev_zero, "C", user, " ".join(commits)) tagsfn = "{}/tags".format(tmpdir.name) with open(tagsfn, 'w+') as f: mrlib.store_user_tags(tags, mr, user, f) +mrtagsfn = "{}/mrtags".format(tmpdir.name) +with open(mrtagsfn, 'w+') as f: + mrlib.store_user_tags(mrtags, mr, user, f) + tagssha = mrlib.commit_file(tagsfn, "tags", "Initial tags for MR {}".format(mr)) +mrtagssha = mrlib.commit_file(mrtagsfn, "tags", "MR base tags {}".format(mr)) mrlib.update_ref("refs/mrs/{}/{}/head".format(mr, user), mr, oldrev=mrlib.rev_zero) mrlib.update_ref("refs/mrs/{}/{}/tags".format(mr, user), tagssha, oldrev=mrlib.rev_zero) +mrlib.update_ref("refs/mrs/{}/{}/mr".format(mr, user), mrtagssha, oldrev=mrlib.rev_zero) -- 1.7.10.4