Merge branch 'js/http-mb' into next

* js/http-mb:
  http-push: avoid fork() by calling merge_bases() directly
  Allow config file to specify Signed-off-by identity in format-patch.
  Fix crash when GIT_DIR is invalid
This commit is contained in:
Junio C Hamano
2006-08-04 19:14:46 -07:00
3 changed files with 8 additions and 43 deletions

View File

@@ -257,6 +257,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
char message_id[1024];
char ref_message_id[1024];
setup_ident();
git_config(git_format_config);
init_revisions(&rev, prefix);
rev.commit_format = CMIT_FMT_EMAIL;
@@ -306,7 +307,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
!strcmp(argv[i], "-s")) {
const char *committer;
const char *endpos;
setup_ident();
committer = git_committer_info(1);
endpos = strchr(committer, '>');
if (!endpos)

View File

@@ -2182,49 +2182,14 @@ static void fetch_symref(const char *path, char **symref, unsigned char *sha1)
static int verify_merge_base(unsigned char *head_sha1, unsigned char *branch_sha1)
{
int pipe_fd[2];
pid_t merge_base_pid;
char line[PATH_MAX + 20];
unsigned char merge_sha1[20];
int verified = 0;
struct commit *head = lookup_commit(head_sha1);
struct commit *branch = lookup_commit(branch_sha1);
struct commit_list *merge_bases = get_merge_bases(head, branch, 1);
if (pipe(pipe_fd) < 0)
die("Verify merge base: pipe failed");
if (merge_bases && !merge_bases->next && merge_bases->item == branch)
return 1;
merge_base_pid = fork();
if (!merge_base_pid) {
static const char *args[] = {
"merge-base",
"-a",
NULL,
NULL,
NULL
};
args[2] = strdup(sha1_to_hex(head_sha1));
args[3] = sha1_to_hex(branch_sha1);
dup2(pipe_fd[1], 1);
close(pipe_fd[0]);
close(pipe_fd[1]);
execv_git_cmd(args);
die("merge-base setup failed");
}
if (merge_base_pid < 0)
die("merge-base fork failed");
dup2(pipe_fd[0], 0);
close(pipe_fd[0]);
close(pipe_fd[1]);
while (fgets(line, sizeof(line), stdin) != NULL) {
if (get_sha1_hex(line, merge_sha1))
die("expected sha1, got garbage:\n %s", line);
if (!memcmp(branch_sha1, merge_sha1, 20)) {
verified = 1;
break;
}
}
return verified;
return 0;
}
static int delete_remote_branch(char *pattern, int force)

View File

@@ -184,7 +184,7 @@ const char *setup_git_directory_gently(int *nongit_ok)
}
return NULL;
bad_dir_environ:
if (!nongit_ok) {
if (nongit_ok) {
*nongit_ok = 1;
return NULL;
}