Move deny_non_fast_forwards handling completely into receive-pack.
authorShawn Pearce <spearce@spearce.org>
Mon, 30 Oct 2006 22:35:18 +0000 (17:35 -0500)
committerJunio C Hamano <junkio@cox.net>
Tue, 31 Oct 2006 03:35:16 +0000 (19:35 -0800)
The 'receive.denynonfastforwards' option has nothing to do with
the repository format version.  Since receive-pack already uses
git_config to initialize itself before executing any updates we
can use the normal configuration strategy and isolate the receive
specific variables away from the core variables.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
cache.h
environment.c
receive-pack.c
setup.c

diff --git a/cache.h b/cache.h
index d0a1657292f5b47b7e345a87877d9b8894a80860..f4f7be19167151d79504fbbe8d44951cca7a6a9b 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -188,7 +188,6 @@ extern int prefer_symlink_refs;
 extern int log_all_ref_updates;
 extern int warn_ambiguous_refs;
 extern int shared_repository;
-extern int deny_non_fast_forwards;
 extern const char *apply_default_whitespace;
 extern int zlib_compression_level;
 
index 63b1d155be1aca2f9fe7aad5f747c06b9102fd60..84d870ca4eca6e202bcbec388e9a299b887f9a12 100644 (file)
@@ -20,7 +20,6 @@ int warn_ambiguous_refs = 1;
 int repository_format_version;
 char git_commit_encoding[MAX_ENCODING_LENGTH] = "utf-8";
 int shared_repository = PERM_UMASK;
-int deny_non_fast_forwards = 0;
 const char *apply_default_whitespace;
 int zlib_compression_level = Z_DEFAULT_COMPRESSION;
 int pager_in_use;
index ea2dbd4e3398ca90823dcd453cbb52c5dcea135c..f2b1c29bd763fcfec45be05e9f56b7c4f5503995 100644 (file)
@@ -9,11 +9,25 @@ static const char receive_pack_usage[] = "git-receive-pack <git-dir>";
 
 static const char *unpacker[] = { "unpack-objects", NULL };
 
+static int deny_non_fast_forwards = 0;
 static int report_status;
 
 static char capabilities[] = "report-status";
 static int capabilities_sent;
 
+static int receive_pack_config(const char *var, const char *value)
+{
+       git_default_config(var, value);
+
+       if (strcmp(var, "receive.denynonfastforwards") == 0)
+       {
+               deny_non_fast_forwards = git_config_bool(var, value);
+               return 0;
+       }
+
+       return 0;
+}
+
 static int show_ref(const char *path, const unsigned char *sha1)
 {
        if (capabilities_sent)
@@ -338,6 +352,8 @@ int main(int argc, char **argv)
        if(!enter_repo(dir, 0))
                die("'%s': unable to chdir or not a git archive", dir);
 
+       git_config(receive_pack_config);
+
        write_head_info();
 
        /* EOF */
diff --git a/setup.c b/setup.c
index 9a46a58a4a34a345eb9f9b623a255c9bcba4c757..2afdba414a073705440f887593a1b5daa1023758 100644 (file)
--- a/setup.c
+++ b/setup.c
@@ -244,8 +244,6 @@ int check_repository_format_version(const char *var, const char *value)
                repository_format_version = git_config_int(var, value);
        else if (strcmp(var, "core.sharedrepository") == 0)
                shared_repository = git_config_perm(var, value);
-       else if (strcmp(var, "receive.denynonfastforwards") == 0)
-               deny_non_fast_forwards = git_config_bool(var, value);
        return 0;
 }