зеркало из https://github.com/microsoft/git.git
format-patch --signoff
This resurrects --signoff option to format-patch. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
1361fa3e49
Коммит
cf2251b604
|
@ -150,6 +150,7 @@ int cmd_format_patch(int argc, const char **argv, char **envp)
|
|||
int numbered = 0;
|
||||
int start_number = -1;
|
||||
int keep_subject = 0;
|
||||
char *add_signoff = NULL;
|
||||
|
||||
init_revisions(&rev);
|
||||
rev.commit_format = CMIT_FMT_EMAIL;
|
||||
|
@ -179,11 +180,13 @@ int cmd_format_patch(int argc, const char **argv, char **envp)
|
|||
if (i == argc)
|
||||
die("Need a number for --start-number");
|
||||
start_number = strtol(argv[i], NULL, 10);
|
||||
} else if (!strcmp(argv[i], "-k") ||
|
||||
}
|
||||
else if (!strcmp(argv[i], "-k") ||
|
||||
!strcmp(argv[i], "--keep-subject")) {
|
||||
keep_subject = 1;
|
||||
rev.total = -1;
|
||||
} else if (!strcmp(argv[i], "-o")) {
|
||||
}
|
||||
else if (!strcmp(argv[i], "-o")) {
|
||||
if (argc < 3)
|
||||
die ("Which directory?");
|
||||
if (mkdir(argv[i + 1], 0777) < 0 && errno != EEXIST)
|
||||
|
@ -192,6 +195,16 @@ int cmd_format_patch(int argc, const char **argv, char **envp)
|
|||
output_directory = strdup(argv[i + 1]);
|
||||
i++;
|
||||
}
|
||||
else if (!strcmp(argv[i], "--signoff") ||
|
||||
!strcmp(argv[i], "-s")) {
|
||||
const char *committer = git_committer_info(1);
|
||||
const char *endpos = strchr(committer, '>');
|
||||
if (!endpos)
|
||||
die("bogos committer info %s\n", committer);
|
||||
add_signoff = xmalloc(endpos - committer + 2);
|
||||
memcpy(add_signoff, committer, endpos - committer + 1);
|
||||
add_signoff[endpos - committer + 1] = 0;
|
||||
}
|
||||
else if (!strcmp(argv[i], "--attach"))
|
||||
rev.mime_boundary = git_version_string;
|
||||
else if (!strncmp(argv[i], "--attach=", 9))
|
||||
|
@ -230,6 +243,7 @@ int cmd_format_patch(int argc, const char **argv, char **envp)
|
|||
total = nr;
|
||||
if (numbered)
|
||||
rev.total = total + start_number - 1;
|
||||
rev.add_signoff = add_signoff;
|
||||
while (0 <= --nr) {
|
||||
int shown;
|
||||
commit = list[nr];
|
||||
|
|
35
log-tree.c
35
log-tree.c
|
@ -12,6 +12,37 @@ static void show_parents(struct commit *commit, int abbrev)
|
|||
}
|
||||
}
|
||||
|
||||
static int append_signoff(char *buf, int buf_sz, int at, const char *signoff)
|
||||
{
|
||||
int signoff_len = strlen(signoff);
|
||||
static const char signed_off_by[] = "Signed-off-by: ";
|
||||
char *cp = buf;
|
||||
|
||||
/* Do we have enough space to add it? */
|
||||
if (buf_sz - at <= strlen(signed_off_by) + signoff_len + 2)
|
||||
return at;
|
||||
|
||||
/* First see if we already have the sign-off by the signer */
|
||||
while (1) {
|
||||
cp = strstr(cp, signed_off_by);
|
||||
if (!cp)
|
||||
break;
|
||||
cp += strlen(signed_off_by);
|
||||
if ((cp + signoff_len < buf + at) &&
|
||||
!strncmp(cp, signoff, signoff_len) &&
|
||||
isspace(cp[signoff_len]))
|
||||
return at; /* we already have him */
|
||||
}
|
||||
|
||||
strcpy(buf + at, signed_off_by);
|
||||
at += strlen(signed_off_by);
|
||||
strcpy(buf + at, signoff);
|
||||
at += signoff_len;
|
||||
buf[at++] = '\n';
|
||||
buf[at] = 0;
|
||||
return at;
|
||||
}
|
||||
|
||||
void show_log(struct rev_info *opt, struct log_info *log, const char *sep)
|
||||
{
|
||||
static char this_header[16384];
|
||||
|
@ -111,6 +142,10 @@ void show_log(struct rev_info *opt, struct log_info *log, const char *sep)
|
|||
* And then the pretty-printed message itself
|
||||
*/
|
||||
len = pretty_print_commit(opt->commit_format, commit, ~0u, this_header, sizeof(this_header), abbrev, subject, after_subject);
|
||||
|
||||
if (opt->add_signoff)
|
||||
len = append_signoff(this_header, sizeof(this_header), len,
|
||||
opt->add_signoff);
|
||||
printf("%s%s%s", this_header, extra, sep);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ struct rev_info {
|
|||
struct log_info *loginfo;
|
||||
int nr, total;
|
||||
const char *mime_boundary;
|
||||
const char *add_signoff;
|
||||
|
||||
/* special limits */
|
||||
int max_count;
|
||||
|
|
Загрузка…
Ссылка в новой задаче