static GIT_PATH_FUNC(rebase_path_amend, "rebase-merge/amend")
/*
* When we stop at a given patch via the "edit" command, this file contains
- * the abbreviated commit name of the corresponding patch.
+ * the commit object name of the corresponding patch.
*/
static GIT_PATH_FUNC(rebase_path_stopped_sha, "rebase-merge/stopped-sha")
/*
struct trailer_info info;
size_t i;
int found_sob = 0, found_sob_last = 0;
+ char saved_char;
opts.no_divider = 1;
+ if (ignore_footer) {
+ saved_char = sb->buf[sb->len - ignore_footer];
+ sb->buf[sb->len - ignore_footer] = '\0';
+ }
+
trailer_info_get(&info, sb->buf, &opts);
+ if (ignore_footer)
+ sb->buf[sb->len - ignore_footer] = saved_char;
+
if (info.trailer_start == info.trailer_end)
return 0;
* interactive rebase: in that case, we will want to retain the
* author metadata.
*/
-static int run_git_commit(struct repository *r,
- const char *defmsg,
+static int run_git_commit(const char *defmsg,
struct replay_opts *opts,
unsigned int flags)
{
if (is_rebase_i(opts) && oid)
if (write_rebase_head(oid))
return -1;
- return run_git_commit(r, msg_file, opts, flags);
+ return run_git_commit(msg_file, opts, flags);
}
return res;
*check_todo = !!(flags & EDIT_MSG);
if (!res && reword) {
fast_forward_edit:
- res = run_git_commit(r, NULL, opts, EDIT_MSG |
+ res = run_git_commit(NULL, opts, EDIT_MSG |
VERIFY_MSG | AMEND_MSG |
(flags & ALLOW_EMPTY));
*check_todo = 1;
{
struct strbuf buf = STRBUF_INIT;
struct rev_info log_tree_opt;
- const char *subject, *p;
+ const char *subject;
+ char hex[GIT_MAX_HEXSZ + 1];
int res = 0;
- p = short_commit_name(commit);
- if (write_message(p, strlen(p), rebase_path_stopped_sha(), 1) < 0)
+ oid_to_hex_r(hex, &commit->object.oid);
+ if (write_message(hex, strlen(hex), rebase_path_stopped_sha(), 1) < 0)
return -1;
res |= write_rebase_head(&commit->object.oid);
* command needs to be rescheduled).
*/
fast_forward_edit:
- ret = !!run_git_commit(r, git_path_merge_msg(r), opts,
+ ret = !!run_git_commit(git_path_merge_msg(r), opts,
run_commit_flags);
leave_merge:
return 0;
}
- if (run_git_commit(r, final_fixup ? NULL : rebase_path_message(),
+ if (run_git_commit(final_fixup ? NULL : rebase_path_message(),
opts, flags))
return error(_("could not commit staged changes."));
unlink(rebase_path_amend());
opts->committer_name =
xmemdupz(id.name_begin, id.name_end - id.name_begin);
opts->committer_email =
- xmemdupz(id.mail_begin, id.mail_end - id.mail_end);
+ xmemdupz(id.mail_begin, id.mail_end - id.mail_begin);
return 0;
}
if (read_oneliner(&buf, rebase_path_stopped_sha(),
READ_ONELINER_SKIP_IF_EMPTY) &&
- !get_oid_committish(buf.buf, &oid))
+ !get_oid_hex(buf.buf, &oid))
record_in_rewritten(&oid, peek_command(&todo_list, 0));
strbuf_release(&buf);
}