Skip to content

Commit

Permalink
merge, pull: add '--(no-)log' command line option
Browse files Browse the repository at this point in the history
These are the command line option equivalents of the 'merge.log' config
variable.

The patch also updates documentation and bash completion accordingly, and
adds a test.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
SZEDER Gábor authored and Junio C Hamano committed Apr 13, 2008
1 parent 6cd9cfe commit efb779f
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 7 deletions.
9 changes: 9 additions & 0 deletions Documentation/merge-options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,15 @@
Synonyms to --stat and --no-stat; these are deprecated and will be
removed in the future.

--log::
In addition to branch names, populate the log message with
one-line descriptions from the actual commits that are being
merged.

--no-log::
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
Expand Down
2 changes: 1 addition & 1 deletion contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,7 @@ _git_merge ()
;;
--*)
__gitcomp "
--no-commit --no-stat --squash --strategy
--no-commit --no-stat --log --no-log --squash --strategy
"
return
esac
Expand Down
8 changes: 6 additions & 2 deletions git-merge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ stat show a diffstat at the end of the merge
n,no-stat don't show a diffstat at the end of the merge
summary (synonym to --stat)
no-summary (synonym to --no-stat)
log add list of one-line log to merge commit message
no-log don't add list of one-line log to 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)
Expand Down Expand Up @@ -39,7 +41,7 @@ use_strategies=

allow_fast_forward=t
allow_trivial_merge=t
squash= no_commit=
squash= no_commit= log_arg=

dropsave() {
rm -f -- "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/MERGE_MSG" \
Expand Down Expand Up @@ -154,6 +156,8 @@ parse_config () {
show_diffstat=false ;;
--stat|--summary)
show_diffstat=t ;;
--log|--no-log)
log_arg=$1 ;;
--squash)
test "$allow_fast_forward" = t ||
die "You cannot combine --squash with --no-ff."
Expand Down Expand Up @@ -261,7 +265,7 @@ else
merge_name=$(for remote
do
merge_name "$remote"
done | git fmt-merge-msg
done | git fmt-merge-msg $log_arg
)
merge_msg="${merge_msg:+$merge_msg$LF$LF}$merge_name"
fi
Expand Down
8 changes: 5 additions & 3 deletions git-pull.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ cd_to_toplevel
test -z "$(git ls-files -u)" ||
die "You are in the middle of a conflicted merge."

strategy_args= no_stat= no_commit= squash= no_ff=
strategy_args= no_stat= no_commit= squash= no_ff= log_arg=
curr_branch=$(git symbolic-ref -q HEAD)
curr_branch_short=$(echo "$curr_branch" | sed "s|refs/heads/||")
rebase=$(git config --bool branch.$curr_branch_short.rebase)
Expand All @@ -27,6 +27,8 @@ do
no_stat=-n ;;
--stat|--summary)
no_stat=$1 ;;
--log|--no-log)
log_arg=$1 ;;
--no-c|--no-co|--no-com|--no-comm|--no-commi|--no-commit)
no_commit=--no-commit ;;
--c|--co|--com|--comm|--commi|--commit)
Expand Down Expand Up @@ -170,9 +172,9 @@ then
exit
fi

merge_name=$(git fmt-merge-msg <"$GIT_DIR/FETCH_HEAD") || exit
merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit
test true = "$rebase" &&
exec git-rebase $strategy_args --onto $merge_head \
${oldremoteref:-$merge_head}
exec git-merge $no_stat $no_commit $squash $no_ff $strategy_args \
exec git-merge $no_stat $no_commit $squash $no_ff $log_arg $strategy_args \
"$merge_name" HEAD $merge_head
16 changes: 15 additions & 1 deletion t/t7600-merge.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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.nolog &&
echo "* commit 'c3':" >msg.log &&
echo " commit 3" >>msg.log &&
echo >>msg.log
}

verify_diff() {
Expand Down Expand Up @@ -456,6 +460,16 @@ test_expect_success 'merge c0 with c1 (ff overrides no-ff)' '
verify_head $c1
'

test_expect_success 'merge log message' '
git reset --hard c0 &&
git merge --no-log c2 &&
git show -s --pretty=format:%b HEAD >msg.act &&
verify_diff msg.nolog msg.act "[OOPS] bad merge log message" &&
git merge --log c3 &&
git show -s --pretty=format:%b HEAD >msg.act &&
verify_diff msg.log msg.act "[OOPS] bad merge log message"
'

test_debug 'gitk --all'

test_done

0 comments on commit efb779f

Please sign in to comment.