Fix --signoff in builtin-commit differently.
Introduce fmt_name() specifically meant for formatting the name and
email pair, to add signed-off-by value. This reverts parts of
13208572fb
(builtin-commit: fix --signoff)
so that an empty datestamp string given to fmt_ident() by mistake will
error out as before.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b5b644a93a
commit
d9ccfe7711
@ -346,11 +346,9 @@ static int prepare_log_message(const char *index_file, const char *prefix)
|
|||||||
|
|
||||||
strbuf_init(&sob, 0);
|
strbuf_init(&sob, 0);
|
||||||
strbuf_addstr(&sob, sign_off_header);
|
strbuf_addstr(&sob, sign_off_header);
|
||||||
strbuf_addstr(&sob, fmt_ident(getenv("GIT_COMMITTER_NAME"),
|
strbuf_addstr(&sob, fmt_name(getenv("GIT_COMMITTER_NAME"),
|
||||||
getenv("GIT_COMMITTER_EMAIL"),
|
getenv("GIT_COMMITTER_EMAIL")));
|
||||||
"", 1));
|
|
||||||
strbuf_addch(&sob, '\n');
|
strbuf_addch(&sob, '\n');
|
||||||
|
|
||||||
for (i = sb.len - 1; i > 0 && sb.buf[i - 1] != '\n'; i--)
|
for (i = sb.len - 1; i > 0 && sb.buf[i - 1] != '\n'; i--)
|
||||||
; /* do nothing */
|
; /* do nothing */
|
||||||
if (prefixcmp(sb.buf + i, sob.buf)) {
|
if (prefixcmp(sb.buf + i, sob.buf)) {
|
||||||
|
1
cache.h
1
cache.h
@ -444,6 +444,7 @@ enum date_mode parse_date_format(const char *format);
|
|||||||
extern const char *git_author_info(int);
|
extern const char *git_author_info(int);
|
||||||
extern const char *git_committer_info(int);
|
extern const char *git_committer_info(int);
|
||||||
extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int);
|
extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int);
|
||||||
|
extern const char *fmt_name(const char *name, const char *email);
|
||||||
|
|
||||||
struct checkout {
|
struct checkout {
|
||||||
const char *base_dir;
|
const char *base_dir;
|
||||||
|
34
ident.c
34
ident.c
@ -192,12 +192,14 @@ static const char *env_hint =
|
|||||||
"Omit --global to set the identity only in this repository.\n"
|
"Omit --global to set the identity only in this repository.\n"
|
||||||
"\n";
|
"\n";
|
||||||
|
|
||||||
const char *fmt_ident(const char *name, const char *email,
|
static const char *fmt_ident_1(const char *name, const char *email,
|
||||||
const char *date_str, int error_on_no_name)
|
const char *date_str, int flag)
|
||||||
{
|
{
|
||||||
static char buffer[1000];
|
static char buffer[1000];
|
||||||
char date[50];
|
char date[50];
|
||||||
int i;
|
int i;
|
||||||
|
int error_on_no_name = !!(flag & 01);
|
||||||
|
int name_addr_only = !!(flag & 02);
|
||||||
|
|
||||||
setup_ident();
|
setup_ident();
|
||||||
if (!name)
|
if (!name)
|
||||||
@ -224,24 +226,36 @@ const char *fmt_ident(const char *name, const char *email,
|
|||||||
}
|
}
|
||||||
|
|
||||||
strcpy(date, git_default_date);
|
strcpy(date, git_default_date);
|
||||||
if (date_str) {
|
if (!name_addr_only && date_str)
|
||||||
if (*date_str)
|
parse_date(date_str, date, sizeof(date));
|
||||||
parse_date(date_str, date, sizeof(date));
|
|
||||||
else
|
|
||||||
date[0] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
i = copy(buffer, sizeof(buffer), 0, name);
|
i = copy(buffer, sizeof(buffer), 0, name);
|
||||||
i = add_raw(buffer, sizeof(buffer), i, " <");
|
i = add_raw(buffer, sizeof(buffer), i, " <");
|
||||||
i = copy(buffer, sizeof(buffer), i, email);
|
i = copy(buffer, sizeof(buffer), i, email);
|
||||||
i = add_raw(buffer, sizeof(buffer), i, date[0] ? "> " : ">");
|
if (!name_addr_only) {
|
||||||
i = copy(buffer, sizeof(buffer), i, date);
|
i = add_raw(buffer, sizeof(buffer), i, "> ");
|
||||||
|
i = copy(buffer, sizeof(buffer), i, date);
|
||||||
|
} else {
|
||||||
|
i = add_raw(buffer, sizeof(buffer), i, ">");
|
||||||
|
}
|
||||||
if (i >= sizeof(buffer))
|
if (i >= sizeof(buffer))
|
||||||
die("Impossibly long personal identifier");
|
die("Impossibly long personal identifier");
|
||||||
buffer[i] = 0;
|
buffer[i] = 0;
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *fmt_ident(const char *name, const char *email,
|
||||||
|
const char *date_str, int error_on_no_name)
|
||||||
|
{
|
||||||
|
int flag = (error_on_no_name ? 01 : 0);
|
||||||
|
return fmt_ident_1(name, email, date_str, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *fmt_name(const char *name, const char *email)
|
||||||
|
{
|
||||||
|
return fmt_ident_1(name, email, NULL, 03);
|
||||||
|
}
|
||||||
|
|
||||||
const char *git_author_info(int error_on_no_name)
|
const char *git_author_info(int error_on_no_name)
|
||||||
{
|
{
|
||||||
return fmt_ident(getenv("GIT_AUTHOR_NAME"),
|
return fmt_ident(getenv("GIT_AUTHOR_NAME"),
|
||||||
|
Loading…
Reference in New Issue
Block a user