Subject: Re: [PATCH 04/12] remote.c: provide per-branch pushremote name

From: Jeff King <[email-masked]>
Date: Thu, 7 May 2015 05:38:37 -0400

On Tue, May 05, 2015 at 03:48:29PM -0400, Eric Sunshine wrote:

> > Yeah, it's just that it goes in the opposite direction I was trying for,
> > which is to have as little code as possible in the wrapper functions (in
> > fact, I think after my changes you could even bump the read_config()
> > call into remote_get_1; before my changes, it depended on the pushremote
> > config being set before the call).
> 
> I also noticed that read_config() could be moved into remote_get_1().
> In fact, with that change, then the wrappers really do collapse nicely
> to 1-liners, so the "clever" function pointer approach probably is
> cleaner; and it's nicely generalized over the previous round with the
> boolean argument to remote_get_1().

I ended up with this patch, which will go right after the one we're
discussing:

-- >8 --
Subject: remote.c: hoist read_config into remote_get_1

Before the previous commit, we had to make sure that
read_config() was called before entering remote_get_1,
because we needed to pass pushremote_name by value. But now
that we pass a function, we can let remote_get_1 handle
loading the config itself, turning our wrappers into true
one-liners.

Signed-off-by: Jeff King <[email-masked]>
---
 remote.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/remote.c b/remote.c
index a91d063..e6b29b3 100644
--- a/remote.c
+++ b/remote.c
@@ -718,6 +718,8 @@ static struct remote *remote_get_1(const char *name,
 	struct remote *ret;
 	int name_given = 0;
 
+	read_config();
+
 	if (name)
 		name_given = 1;
 	else
@@ -741,13 +743,11 @@ static struct remote *remote_get_1(const char *name,
 
 struct remote *remote_get(const char *name)
 {
-	read_config();
 	return remote_get_1(name, remote_for_branch);
 }
 
 struct remote *pushremote_get(const char *name)
 {
-	read_config();
 	return remote_get_1(name, pushremote_for_branch);
 }
 
-- 
2.4.0.488.gf55b16a