-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Amend co-authors on a commit? #17
Comments
I don't find it adds much value since this is easily possible with existing commands.
If we increase the functionality with a git command, it can become a slippery slope for supporting more existing commands. Would rather keep git-mob's scope small and focused. |
I followed those git commands to amend co-authors. Unfortunately did not work. The co-authors did not get appended to the end. I had to copy pasta it into the message. Maybe the template does not apply on amend? I agree we should not have this in git mob but I think it will be worked documented here how to amend a commit to add co-authors. I can see it being an issue which should have an easy to find solution. |
Good catch, doesn't look like commit templates apply to amends. 😮 This should be solved for free if we switch over to a git hook (see #22). In the mean time feel free to document it somewhere visible. |
I started working on a prepare-commit-msg hook written in bash. (My team already relies on a bash prepare-commit-msg hook to insert a ticket number, so we need to combine two hooks into one) Unlike the sample in node, this implementation only inserts co-authors that are not already present. You can amend a commit with a new set-of co-authors, and it will selectively append the new co-authors after the old co-authors. Tested only on macOS: # https://github.com/findmypast-oss/git-mob/issues/17#issuecomment-754133882
append_git_mob_co_authors() {
local commit_file="$1"
if [[ "$commit_file" =~ "COMMIT_EDITMSG" ]]; then
local commit_author current_author co_authors missing_co_authors git_message git_comments
commit_author=$(git var GIT_AUTHOR_IDENT | grep -o '^.*>')
current_author="$(git config user.name) <$(git config user.email)>"
co_authors=$(git mob-print | grep '^Co-authored-by')
if [[ "$commit_author" != "$current_author" ]]; then
co_authors=$(echo "$co_authors"; echo "Co-authored-by: $current_author")
fi
commit_file_contents=$(cat "$commit_file")
missing_co_authors="$(comm -1 -3 <(echo "$commit_file_contents" | sort -u) <(echo "$co_authors" | sort -u))"
if [[ -n "$missing_co_authors" ]]; then
git_message=$(echo "$commit_file_contents" | sed '/^#/,$d')
git_comments=$(echo "$commit_file_contents" | sed -n '/^#/,$p')
echo "$git_message" > "$commit_file"
if ! echo "$git_message" | tail -n 1 | grep --quiet '^Co-authored-by'; then
echo -en "\n" >> "$commit_file"
fi
echo "${missing_co_authors}" >> "$commit_file"
echo "$git_comments" >> "$commit_file"
else
echo "git-mob co-author is already present"
fi
fi
}
append_git_mob_co_authors "$1" "$2" (updated 2021-01-14 to fix a lil bug) |
Thanks for sharing @jonsmithers This would be good to add in as an alternative hook and we can list the options in the readme |
Perhaps it is worth having a command in Git Mob to replace the co-authors if there is a mistake. So you would specify all the co-authors for that comment with a command like:
It grabs the latest message ( What are your thoughts about the above? |
Should we make an easy amend feature if a user realises they have committed the wrong or forgotten to add co-authors?
Perhaps something like:
git mob rk di --amend
- this will replace co-authors in the commit?The text was updated successfully, but these errors were encountered: