It was determined on the mailing list, that it makes more sense for a "squash" to keep the author of the first commit as the author for the result of the squash. Make it so. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- On Sat, 29 Sep 2007, Junio C Hamano wrote: > Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > > > On Sat, 29 Sep 2007, Avi Kivity wrote: > > > >> > > Can we make "amend" like squash, except that it keeps the > >> > > first commit's authorship instead of the second? I often > >> > > merge a commit with some minor fix that comes later, and > >> > > usually want to keep the original author record. > > > > Thinking about this again... Maybe it is a better semantics > > anyway? What do others think? > > I never thought about whose commit the squashed ones become > before this thread, but making squash quack as if "commit > --amend" was done after running "cherry-pick -n" the second and > later ones feels like the most natural semantics to me. Here you are. Documentation/git-rebase.txt | 2 +- git-rebase--interactive.sh | 2 +- t/t3404-rebase-interactive.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 0858fa8..e8e7579 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -298,7 +298,7 @@ rebasing. If you want to fold two or more commits into one, replace the command "pick" with "squash" for the second and subsequent commit. If the commits had different authors, it will attribute the squashed commit to -the author of the last commit. +the author of the first commit. In both cases, or when a "pick" does not succeed (because of merge errors), the loop will stop to let you fix things, and you can continue diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 7a5aaa5..050140d 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -276,9 +276,9 @@ do_next () { esac failed=f + author_script=$(get_author_ident_from_commit HEAD) output git reset --soft HEAD^ pick_one -n $sha1 || failed=t - author_script=$(get_author_ident_from_commit $sha1) echo "$author_script" > "$DOTEST"/author-script case $failed in f) diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index f2214dd..1113904 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -180,7 +180,7 @@ test_expect_success 'squash' ' ' test_expect_success 'retain authorship when squashing' ' - git show HEAD | grep "^Author: Nitfol" + git show HEAD | grep "^Author: Twerp Snog" ' test_expect_success 'preserve merges with -p' ' -- 1.5.3.2.1102.g9487 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html