Skip to content

Commit 51bee7a

Browse files
dbtsaiviiryalindblombrHyukjinKwon
committed
[SPARK-25018][INFRA] Use Co-authored-by and Signed-off-by git trailer in merge_spark_pr.py
## What changes were proposed in this pull request? In [Linux community](https://git.wiki.kernel.org/index.php/CommitMessageConventions), `Co-authored-by` and `Signed-off-by` git trailer have been used for awhile. Until recently, Github adopted `Co-authored-by` to include the work of co-authors in the profile contributions graph and the repository's statistics. It's a convention for recognizing multiple authors, and can encourage people to collaborate in OSS communities. Git provides a command line tools to read the metadata to know who commits the code to upstream, but it's not as easy as having `Signed-off-by` as part of the message so developers can find who is the relevant committers who can help with certain part of the codebase easier. For a single author PR, I purpose to use `Authored-by` and `Signed-off-by`, so the message will look like ``` Authored-by: Author's name <authorexample.com> Signed-off-by: Committer's name <committerexample.com> ``` For a multi-author PR, I purpose to use `Lead-authored-by:` and `Co-authored-by:` for the lead author and co-authors. The message will look like ``` Lead-authored-by: Lead Author's name <leadauthorexample.com> Co-authored-by: CoAuthor's name <coauthorexample.com> Signed-off-by: Committer's name <committerexample.com> ``` It's also useful to include `Reviewed-by:` to give credits to the people who participate on the code reviewing. We can add this in the next iteration. Closes apache#21991 from dbtsai/script. Lead-authored-by: DB Tsai <[email protected]> Co-authored-by: Liang-Chi Hsieh <[email protected]> Co-authored-by: Brian Lindblom <[email protected]> Co-authored-by: hyukjinkwon <[email protected]> Signed-off-by: hyukjinkwon <[email protected]>
1 parent 18b6ec1 commit 51bee7a

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

dev/merge_spark_pr.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ def merge_pr(pr_num, target_ref, title, body, pr_repo_desc):
142142
distinct_authors[0])
143143
if primary_author == "":
144144
primary_author = distinct_authors[0]
145+
else:
146+
# When primary author is specified manually, de-dup it from author list and
147+
# put it at the head of author list.
148+
distinct_authors = list(filter(lambda x: x != primary_author, distinct_authors))
149+
distinct_authors.insert(0, primary_author)
145150

146151
commits = run_cmd(['git', 'log', 'HEAD..%s' % pr_branch_name,
147152
'--pretty=format:%h [%an] %s']).split("\n\n")
@@ -154,20 +159,25 @@ def merge_pr(pr_num, target_ref, title, body, pr_repo_desc):
154159
# to people every time someone creates a public fork of Spark.
155160
merge_message_flags += ["-m", body.replace("@", "")]
156161

157-
authors = "\n".join(["Author: %s" % a for a in distinct_authors])
158-
159-
merge_message_flags += ["-m", authors]
162+
committer_name = run_cmd("git config --get user.name").strip()
163+
committer_email = run_cmd("git config --get user.email").strip()
160164

161165
if had_conflicts:
162-
committer_name = run_cmd("git config --get user.name").strip()
163-
committer_email = run_cmd("git config --get user.email").strip()
164166
message = "This patch had conflicts when merged, resolved by\nCommitter: %s <%s>" % (
165167
committer_name, committer_email)
166168
merge_message_flags += ["-m", message]
167169

168170
# The string "Closes #%s" string is required for GitHub to correctly close the PR
169171
merge_message_flags += ["-m", "Closes #%s from %s." % (pr_num, pr_repo_desc)]
170172

173+
authors = "Authored-by:" if len(distinct_authors) == 1 else "Lead-authored-by:"
174+
authors += " %s" % (distinct_authors.pop(0))
175+
if len(distinct_authors) > 0:
176+
authors += "\n" + "\n".join(["Co-authored-by: %s" % a for a in distinct_authors])
177+
authors += "\n" + "Signed-off-by: %s <%s>" % (committer_name, committer_email)
178+
179+
merge_message_flags += ["-m", authors]
180+
171181
run_cmd(['git', 'commit', '--author="%s"' % primary_author] + merge_message_flags)
172182

173183
continue_maybe("Merge complete (local ref %s). Push to %s?" % (

0 commit comments

Comments
 (0)