Skip to content

Commit

Permalink
Merge branch 'dk/format-patch-ignore-diff-submodule'
Browse files Browse the repository at this point in the history
Setting diff.submodule to 'log' made "git format-patch" produce
broken patches.

* dk/format-patch-ignore-diff-submodule:
  format-patch: ignore diff.submodule setting
  t4255: test am submodule with diff.submodule
  • Loading branch information
Junio C Hamano committed Feb 11, 2015
2 parents 76c6747 + 339de50 commit 35d28f3
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 1 deletion.
2 changes: 1 addition & 1 deletion builtin/log.c
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ static int git_format_config(const char *var, const char *value, void *cb)
return 0;
}
if (!strcmp(var, "diff.color") || !strcmp(var, "color.diff") ||
!strcmp(var, "color.ui")) {
!strcmp(var, "color.ui") || !strcmp(var, "diff.submodule")) {
return 0;
}
if (!strcmp(var, "format.numbered")) {
Expand Down
72 changes: 72 additions & 0 deletions t/t4255-am-submodule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,76 @@ am_3way () {
KNOWN_FAILURE_NOFF_MERGE_ATTEMPTS_TO_MERGE_REMOVED_SUBMODULE_FILES=1
test_submodule_switch "am_3way"

test_expect_success 'setup diff.submodule' '
test_commit one &&
INITIAL=$(git rev-parse HEAD) &&
git init submodule &&
(
cd submodule &&
test_commit two &&
git rev-parse HEAD >../initial-submodule
) &&
git submodule add ./submodule &&
git commit -m first &&
(
cd submodule &&
test_commit three &&
git rev-parse HEAD >../first-submodule
) &&
git add submodule &&
git commit -m second &&
SECOND=$(git rev-parse HEAD) &&
(
cd submodule &&
git mv two.t four.t &&
git commit -m "second submodule" &&
git rev-parse HEAD >../second-submodule
) &&
test_commit four &&
git add submodule &&
git commit --amend --no-edit &&
THIRD=$(git rev-parse HEAD) &&
git submodule update --init
'

run_test() {
START_COMMIT=$1 &&
EXPECT=$2 &&
# Abort any merges in progress: the previous
# test may have failed, and we should clean up.
test_might_fail git am --abort &&
git reset --hard $START_COMMIT &&
rm -f *.patch &&
git format-patch -1 &&
git reset --hard $START_COMMIT^ &&
git submodule update &&
git am *.patch &&
git submodule update &&
git -C submodule rev-parse HEAD >actual &&
test_cmp $EXPECT actual
}

test_expect_success 'diff.submodule unset' '
test_unconfig diff.submodule &&
run_test $SECOND first-submodule
'

test_expect_success 'diff.submodule unset with extra file' '
test_unconfig diff.submodule &&
run_test $THIRD second-submodule
'

test_expect_success 'diff.submodule=log' '
test_config diff.submodule log &&
run_test $SECOND first-submodule
'

test_expect_success 'diff.submodule=log with extra file' '
test_config diff.submodule log &&
run_test $THIRD second-submodule
'

test_done

0 comments on commit 35d28f3

Please sign in to comment.