These options are basically the command line option equivalents of the 'merge.summary' config variable, and are in sync with the options of 'fmt-merge-msg'. The patch also updates documentation and bash completion accordingly, and adds a test. Signed-off-by: SZEDER Gábor <szeder@xxxxxxxxxx> --- Documentation/merge-options.txt | 9 +++++++++ contrib/completion/git-completion.bash | 3 ++- git-merge.sh | 10 +++++++++- git-pull.sh | 10 +++++++--- t/t7600-merge.sh | 16 +++++++++++++++- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt index edd13a5..ece6040 100644 --- a/Documentation/merge-options.txt +++ b/Documentation/merge-options.txt @@ -5,6 +5,15 @@ -n, \--no-diffstat:: Do not show diffstat at the end of the merge. +--summary:: + In addition to branch names, populate the log message with + one-line descriptions from the actual commits that are being + merged. + +--no-summary:: + Do not list one-line descriptions from the actual commits being + merged. + --no-commit:: Perform the merge but pretend the merge failed and do not autocommit, to give the user a chance to inspect and diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 2e6cad7..8413b29 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -776,7 +776,8 @@ _git_merge () ;; --*) __gitcomp " - --no-commit --no-diffstat --squash --strategy + --no-commit --no-diffstat --summary --no-summary + --squash --strategy " return esac diff --git a/git-merge.sh b/git-merge.sh index 739b466..03bcfb1 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -10,6 +10,10 @@ git-merge [options] <msg> HEAD <remote> -- diffstat show a diffstat at the end of the merge n,no-diffstat don't show a diffstat at the end of the merge +summary put one-line descriptions of the merged commits into + the merge commit message +no-summary don't put one-line descriptions of the merged commits + into the merge commit message squash create a single commit instead of doing a merge commit perform a commit if the merge sucesses (default) ff allow fast forward (default) @@ -152,6 +156,10 @@ parse_config () { show_diffstat=false ;; --diffstat) show_diffstat=t ;; + --summary) + summary_arg=--summary ;; + --no-summary) + summary_arg=--no-summary ;; --squash) test "$allow_fast_forward" = t || die "You cannot combine --squash with --no-ff." @@ -258,7 +266,7 @@ else merge_name=$(for remote do merge_name "$remote" - done | git fmt-merge-msg + done | git fmt-merge-msg $summary_arg ) merge_msg="${merge_msg:+$merge_msg$LF$LF}$merge_name" fi diff --git a/git-pull.sh b/git-pull.sh index 6a46e14..99387c8 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -29,6 +29,10 @@ do --diffstat) no_diffstat=$1 ;; + --no-s|--no-su|--no-sum|--no-summ|--no-summa|--no-summar|--no-summary) + summary_arg=--no-summary ;; + --s|--su|--sum|--summ|--summa|--summar|--summary) + summary_arg=--summary ;; --no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit) no_commit=--no-commit ;; --c|--co|--com|--comm|--commi|--commit) @@ -172,9 +176,9 @@ then exit fi -merge_name=$(git fmt-merge-msg <"$GIT_DIR/FETCH_HEAD") || exit +merge_name=$(git fmt-merge-msg $summary_arg <"$GIT_DIR/FETCH_HEAD") || exit test true = "$rebase" && exec git-rebase $strategy_args --onto $merge_head \ ${oldremoteref:-$merge_head} -exec git-merge $no_diffstat $no_commit $squash $no_ff $strategy_args \ - "$merge_name" HEAD $merge_head +exec git-merge $no_diffstat $no_commit $summary_arg $squash $no_ff \ + $strategy_args "$merge_name" HEAD $merge_head diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index bbbd580..a762d31 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -104,7 +104,11 @@ create_merge_msgs() { git log --no-merges ^HEAD c2 >>squash.1-5 && echo "Squashed commit of the following:" >squash.1-5-9 && echo >>squash.1-5-9 && - git log --no-merges ^HEAD c2 c3 >>squash.1-5-9 + git log --no-merges ^HEAD c2 c3 >>squash.1-5-9 && + echo > msg.nosummary && + echo "* commit 'c3':" >msg.summary && + echo " commit 3" >>msg.summary && + echo >>msg.summary } verify_diff() { @@ -441,6 +445,16 @@ test_expect_success 'merge c0 with c1 (ff overrides no-ff)' ' verify_head $c1 ' +test_expect_success 'merge --summary' ' + git reset --hard c0 && + git merge --no-summary c2 && + git show -s --pretty=format:%b HEAD >msg.act && + verify_diff msg.nosummary msg.act "[OOPS] bad merge summary" && + git merge --summary c3 && + git show -s --pretty=format:%b HEAD >msg.act && + verify_diff msg.summary msg.act "[OOPS] bad merge summary" +' + test_debug 'gitk --all' test_done -- 1.5.5.rc2.38.g3b417 -- 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