Skip to content
Snippets Groups Projects
Commit 881d72ef authored by Junio C Hamano's avatar Junio C Hamano
Browse files

Merge branch 'js/rebase-stat-unrelated-fix'

"git rebase --stat" to transplant a piece of history onto a totally
unrelated history were not working before and silently showed wrong
result.  With the recent reimplementation in C, it started to instead
die with an error message, as the original logic was not prepared
to cope with this case.  This has now been fixed.

* js/rebase-stat-unrelated-fix:
  rebase --stat: fix when rebasing to an unrelated history
parents 945f6bd1 8797f0f0
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -1503,10 +1503,15 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
if (options.flags & REBASE_DIFFSTAT) {
struct diff_options opts;
 
if (options.flags & REBASE_VERBOSE)
printf(_("Changes from %s to %s:\n"),
oid_to_hex(&merge_base),
oid_to_hex(&options.onto->object.oid));
if (options.flags & REBASE_VERBOSE) {
if (is_null_oid(&merge_base))
printf(_("Changes to %s:\n"),
oid_to_hex(&options.onto->object.oid));
else
printf(_("Changes from %s to %s:\n"),
oid_to_hex(&merge_base),
oid_to_hex(&options.onto->object.oid));
}
 
/* We want color (if set), but no pager */
diff_setup(&opts);
Loading
Loading
@@ -1516,8 +1521,9 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT;
opts.detect_rename = DIFF_DETECT_RENAME;
diff_setup_done(&opts);
diff_tree_oid(&merge_base, &options.onto->object.oid,
"", &opts);
diff_tree_oid(is_null_oid(&merge_base) ?
the_hash_algo->empty_tree : &merge_base,
&options.onto->object.oid, "", &opts);
diffcore_std(&opts);
diff_flush(&opts);
}
Loading
Loading
Loading
Loading
@@ -718,10 +718,16 @@ if test -n "$diffstat"
then
if test -n "$verbose"
then
echo "$(eval_gettext "Changes from \$mb to \$onto:")"
if test -z "$mb"
then
echo "$(eval_gettext "Changes to \$onto:")"
else
echo "$(eval_gettext "Changes from \$mb to \$onto:")"
fi
fi
mb_tree="${mb:-$(git hash-object -t tree /dev/null)}"
# We want color (if set), but no pager
GIT_PAGER='' git diff --stat --summary "$mb" "$onto"
GIT_PAGER='' git diff --stat --summary "$mb_tree" "$onto"
fi
 
test -n "$interactive_rebase" && run_specific_rebase
Loading
Loading
Loading
Loading
@@ -117,4 +117,14 @@ test_expect_success 'GIT_REFLOG_ACTION' '
test_cmp expect actual
'
 
test_expect_success 'rebase -i onto unrelated history' '
git init unrelated &&
test_commit -C unrelated 1 &&
git -C unrelated remote add -f origin "$PWD" &&
git -C unrelated branch --set-upstream-to=origin/master &&
git -C unrelated -c core.editor=true rebase -i -v --stat >actual &&
test_i18ngrep "Changes to " actual &&
test_i18ngrep "5 files changed" actual
'
test_done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment