Skip to content

Commit e41bf35

Browse files
peffgitster
authored andcommitted
remote.c: drop default_remote_name variable
When we read the remote config from disk, we update a default_remote_name variable if we see branch.*.remote config for the current branch. This isn't wrong, or even all that complicated, but it is a bit simpler (because it reduces our overall state) to just lazily compute the default when we need it. The ulterior motive here is that the push config uses a similar structure, and _is_ much more complicated as a result. That will be simplified in a future patch, and it's more readable if the logic for remotes and push-remotes matches. Note that we also used default_remote_name as a signal that the remote config has been loaded; after this patch, we now use an explicit flag. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 2dfb2e0 commit e41bf35

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

remote.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,8 @@ static int branches_alloc;
4949
static int branches_nr;
5050

5151
static struct branch *current_branch;
52-
static const char *default_remote_name;
5352
static const char *branch_pushremote_name;
5453
static const char *pushremote_name;
55-
static int explicit_default_remote_name;
5654

5755
static struct rewrites rewrites;
5856
static struct rewrites rewrites_push;
@@ -367,12 +365,7 @@ static int handle_config(const char *key, const char *value, void *cb)
367365
return 0;
368366
branch = make_branch(name, subkey - name);
369367
if (!strcmp(subkey, ".remote")) {
370-
if (git_config_string(&branch->remote_name, key, value))
371-
return -1;
372-
if (branch == current_branch) {
373-
default_remote_name = branch->remote_name;
374-
explicit_default_remote_name = 1;
375-
}
368+
return git_config_string(&branch->remote_name, key, value);
376369
} else if (!strcmp(subkey, ".pushremote")) {
377370
if (branch == current_branch)
378371
if (git_config_string(&branch_pushremote_name, key, value))
@@ -501,12 +494,15 @@ static void alias_all_urls(void)
501494

502495
static void read_config(void)
503496
{
497+
static int loaded;
504498
unsigned char sha1[20];
505499
const char *head_ref;
506500
int flag;
507-
if (default_remote_name) /* did this already */
501+
502+
if (loaded)
508503
return;
509-
default_remote_name = "origin";
504+
loaded = 1;
505+
510506
current_branch = NULL;
511507
head_ref = resolve_ref_unsafe("HEAD", 0, sha1, &flag);
512508
if (head_ref && (flag & REF_ISSYMREF) &&
@@ -708,8 +704,11 @@ static struct remote *remote_get_1(const char *name, const char *pushremote_name
708704
name = pushremote_name;
709705
name_given = 1;
710706
} else {
711-
name = default_remote_name;
712-
name_given = explicit_default_remote_name;
707+
if (current_branch && current_branch->remote_name) {
708+
name = current_branch->remote_name;
709+
name_given = 1;
710+
} else
711+
name = "origin";
713712
}
714713
}
715714

0 commit comments

Comments
 (0)