From: Frantisek Hrbata Date: Tue, 8 Dec 2020 13:06:46 +0000 (+0100) Subject: git-mr-create: store mr tags to separate ref X-Git-Tag: v0.2~63 X-Git-Url: http://www.hrbata.com/gitweb/?a=commitdiff_plain;h=cb70c9a533eabd731f4ff8395aeadccca495d8e9;p=gimrr.git 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 --- 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)