Make git-clone respect branch.autosetuprebase
When git-clone creates an initial branch it was not checking the branch.autosetuprebase configuration option (which may exist in ~/.gitconfig). Refactor the code used by "git branch" to create a new branch, and use it instead of the insufficiently duplicated code in builtin-clone. Changes are partly, and the test is mostly, based on the previous work by Pat Notz. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -20,6 +20,7 @@
|
||||
#include "dir.h"
|
||||
#include "pack-refs.h"
|
||||
#include "sigchain.h"
|
||||
#include "branch.h"
|
||||
|
||||
/*
|
||||
* Overall FIXMEs:
|
||||
@ -350,19 +351,6 @@ static struct ref *write_remote_refs(const struct ref *refs,
|
||||
return local_refs;
|
||||
}
|
||||
|
||||
static void install_branch_config(const char *local,
|
||||
const char *origin,
|
||||
const char *remote)
|
||||
{
|
||||
struct strbuf key = STRBUF_INIT;
|
||||
strbuf_addf(&key, "branch.%s.remote", local);
|
||||
git_config_set(key.buf, origin);
|
||||
strbuf_reset(&key);
|
||||
strbuf_addf(&key, "branch.%s.merge", local);
|
||||
git_config_set(key.buf, remote);
|
||||
strbuf_release(&key);
|
||||
}
|
||||
|
||||
int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int use_local_hardlinks = 1;
|
||||
@ -553,7 +541,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
remote_head = NULL;
|
||||
option_no_checkout = 1;
|
||||
if (!option_bare)
|
||||
install_branch_config("master", option_origin,
|
||||
install_branch_config(0, "master", option_origin,
|
||||
"refs/heads/master");
|
||||
}
|
||||
|
||||
@ -583,7 +571,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
|
||||
head_points_at->peer_ref->name,
|
||||
reflog_msg.buf);
|
||||
|
||||
install_branch_config(head, option_origin,
|
||||
install_branch_config(0, head, option_origin,
|
||||
head_points_at->name);
|
||||
}
|
||||
} else if (remote_head) {
|
||||
|
Reference in New Issue
Block a user