This sets up the existing backend early, so that other code which
reads refs is reading from the right place.

Signed-off-by: David Turner <dtur...@twopensource.com>
---
 config.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/config.c b/config.c
index b95ac3a..6cea884 100644
--- a/config.c
+++ b/config.c
@@ -11,6 +11,7 @@
 #include "strbuf.h"
 #include "quote.h"
 #include "hashmap.h"
+#include "refs.h"
 #include "string-list.h"
 #include "utf8.h"
 
@@ -1207,6 +1208,29 @@ int git_config_early(config_fn_t fn, void *data, const 
char *repo_config)
        }
 
        if (repo_config && !access_or_die(repo_config, R_OK, 0)) {
+               char *storage = NULL;
+
+               /*
+                * make sure we always read the ref storage config
+                * from the extensions section on startup
+                */
+               ret += git_config_from_file(ref_storage_backend_config,
+                                           repo_config, &storage);
+
+               register_ref_storage_backends();
+               if (!storage)
+                       storage = xstrdup("");
+
+               if (!*storage ||
+                   !strcmp(storage, "files")) {
+                       /* default backend, nothing to do */
+                       free(storage);
+               } else {
+                       if (set_ref_storage_backend(ref_storage_backend))
+                               die(_("Unknown ref storage backend %s"),
+                                   ref_storage_backend);
+               }
+
                ret += git_config_from_file(fn, repo_config, data);
                found += 1;
        }
-- 
2.4.2.767.g62658d5-twtrsrc

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to