Code

Revert "Make it possible to set up libgit directly (instead of from the environment)"
authorJunio C Hamano <junkio@cox.net>
Sun, 3 Sep 2006 05:58:48 +0000 (22:58 -0700)
committerJunio C Hamano <junkio@cox.net>
Sun, 3 Sep 2006 05:58:48 +0000 (22:58 -0700)
cache.h
commit.c
environment.c
perl/Git.pm
perl/Git.xs
sha1_file.c
sha1_name.c

diff --git a/cache.h b/cache.h
index 2b8fafbd637fb6c7510c198ac4257c08d290311d..af7740258d8d1bf5e44d2233c1fe1c35aa62ec77 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -117,9 +117,6 @@ extern unsigned int active_nr, active_alloc, active_cache_changed;
 extern struct cache_tree *active_cache_tree;
 extern int cache_errno;
 
-extern void setup_git(char *new_git_dir, char *new_git_object_dir,
-                      char *new_git_index_file, char *new_git_graft_file);
-
 #define GIT_DIR_ENVIRONMENT "GIT_DIR"
 #define DEFAULT_GIT_DIR_ENVIRONMENT ".git"
 #define DB_ENVIRONMENT "GIT_OBJECT_DIRECTORY"
index 4d5c0c294568bb67c6e236ff2f45c61d3bdfd790..77f0ca175c66b0ef0b7ac5b24672b106c6f17178 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -163,14 +163,6 @@ int register_commit_graft(struct commit_graft *graft, int ignore_dups)
        return 0;
 }
 
-void free_commit_grafts(void)
-{
-       int pos = commit_graft_nr;
-       while (pos >= 0)
-               free(commit_graft[pos--]);
-       commit_graft_nr = 0;
-}
-
 struct commit_graft *read_graft_line(char *buf, int len)
 {
        /* The format is just "Commit Parent1 Parent2 ...\n" */
@@ -223,18 +215,11 @@ int read_graft_file(const char *graft_file)
 static void prepare_commit_graft(void)
 {
        static int commit_graft_prepared;
-       static char *last_graft_file;
-       char *graft_file = get_graft_file();
-
-       if (last_graft_file) {
-               if (!strcmp(graft_file, last_graft_file))
-                       return;
-               free_commit_grafts();
-       }
-       if (last_graft_file)
-               free(last_graft_file);
-       last_graft_file = strdup(graft_file);
+       char *graft_file;
 
+       if (commit_graft_prepared)
+               return;
+       graft_file = get_graft_file();
        read_graft_file(graft_file);
        commit_graft_prepared = 1;
 }
index 1ce34118dd6df33b60b1ea5e0c75c5fdf4b1aa84..87162b257254434be356b1a579967d51adff1e5f 100644 (file)
@@ -25,61 +25,28 @@ int zlib_compression_level = Z_DEFAULT_COMPRESSION;
 int pager_in_use;
 int pager_use_color = 1;
 
-static int dyn_git_object_dir, dyn_git_index_file, dyn_git_graft_file;
 static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir,
        *git_graft_file;
-
-void setup_git(char *new_git_dir, char *new_git_object_dir,
-               char *new_git_index_file, char *new_git_graft_file)
+static void setup_git_env(void)
 {
-       git_dir = new_git_dir;
+       git_dir = getenv(GIT_DIR_ENVIRONMENT);
        if (!git_dir)
                git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
-
-       if (dyn_git_object_dir)
-               free(git_object_dir);
-       git_object_dir = new_git_object_dir;
+       git_object_dir = getenv(DB_ENVIRONMENT);
        if (!git_object_dir) {
                git_object_dir = xmalloc(strlen(git_dir) + 9);
                sprintf(git_object_dir, "%s/objects", git_dir);
-               dyn_git_object_dir = 1;
-       } else {
-               dyn_git_object_dir = 0;
        }
-
-       if (git_refs_dir)
-               free(git_refs_dir);
        git_refs_dir = xmalloc(strlen(git_dir) + 6);
        sprintf(git_refs_dir, "%s/refs", git_dir);
-
-       if (dyn_git_index_file)
-               free(git_index_file);
-       git_index_file = new_git_index_file;
+       git_index_file = getenv(INDEX_ENVIRONMENT);
        if (!git_index_file) {
                git_index_file = xmalloc(strlen(git_dir) + 7);
                sprintf(git_index_file, "%s/index", git_dir);
-               dyn_git_index_file = 1;
-       } else {
-               dyn_git_index_file = 0;
        }
-
-       if (dyn_git_graft_file)
-               free(git_graft_file);
-       git_graft_file = new_git_graft_file;
-       if (!git_graft_file) {
+       git_graft_file = getenv(GRAFT_ENVIRONMENT);
+       if (!git_graft_file)
                git_graft_file = strdup(git_path("info/grafts"));
-               dyn_git_graft_file = 1;
-       } else {
-               dyn_git_graft_file = 0;
-       }
-}
-
-static void setup_git_env(void)
-{
-       setup_git(getenv(GIT_DIR_ENVIRONMENT),
-                 getenv(DB_ENVIRONMENT),
-                 getenv(INDEX_ENVIRONMENT),
-                 getenv(GRAFT_ENVIRONMENT));
 }
 
 char *get_git_dir(void)
index 9da15e9c8c208ffd6a51b524edc828c85dce5355..9ce9fcdd3ec95f08a7bf6c00bdd6da2931c01cde 100644 (file)
@@ -98,8 +98,6 @@ XSLoader::load('Git', $VERSION);
 
 }
 
-my $instance_id = 0;
-
 
 =head1 CONSTRUCTORS
 
@@ -217,7 +215,7 @@ sub repository {
                delete $opts{Directory};
        }
 
-       $self = { opts => \%opts, id => $instance_id++ };
+       $self = { opts => \%opts };
        bless $self, $class;
 }
 
@@ -835,10 +833,11 @@ sub _call_gate {
        if (defined $self) {
                # XXX: We ignore the WorkingCopy! To properly support
                # that will require heavy changes in libgit.
-               # For now, when we will need to do it we could temporarily
-               # chdir() there and then chdir() back after the call is done.
 
-               xs__call_gate($self->{id}, $self->repo_path());
+               # XXX: And we ignore everything else as well. libgit
+               # at least needs to be extended to let us specify
+               # the $GIT_DIR instead of looking it up in environment.
+               #xs_call_gate($self->{opts}->{Repository});
        }
 
        # Having to call throw from the C code is a sure path to insanity.
index 6ed26a29b89ab1959ef2e62917fb72c137bab39f..2bbec4365f9c244a7a905df702393bca591d9d67 100644 (file)
@@ -52,21 +52,7 @@ BOOT:
 }
 
 
-void
-xs__call_gate(repoid, git_dir)
-       long repoid;
-       char *git_dir;
-CODE:
-{
-       static long last_repoid;
-       if (repoid != last_repoid) {
-               setup_git(git_dir,
-                         getenv(DB_ENVIRONMENT),
-                         getenv(INDEX_ENVIRONMENT),
-                         getenv(GRAFT_ENVIRONMENT));
-               last_repoid = repoid;
-       }
-}
+# /* TODO: xs_call_gate(). See Git.pm. */
 
 
 char *
index ed52d71a1b01a20e61d736568983cb7a9c0d6b39..842a6f3ae86993ff877150ab92bbab7b4744b4ce 100644 (file)
@@ -126,22 +126,16 @@ static void fill_sha1_path(char *pathbuf, const unsigned char *sha1)
 char *sha1_file_name(const unsigned char *sha1)
 {
        static char *name, *base;
-       static const char *last_objdir;
-       const char *sha1_file_directory = get_object_directory();
 
-       if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) {
+       if (!base) {
+               const char *sha1_file_directory = get_object_directory();
                int len = strlen(sha1_file_directory);
-               if (base)
-                       free(base);
                base = xmalloc(len + 60);
                memcpy(base, sha1_file_directory, len);
                memset(base+len, 0, 60);
                base[len] = '/';
                base[len+3] = '/';
                name = base + len + 1;
-               if (last_objdir)
-                       free((char *) last_objdir);
-               last_objdir = strdup(sha1_file_directory);
        }
        fill_sha1_path(name, sha1);
        return base;
@@ -151,20 +145,14 @@ char *sha1_pack_name(const unsigned char *sha1)
 {
        static const char hex[] = "0123456789abcdef";
        static char *name, *base, *buf;
-       static const char *last_objdir;
-       const char *sha1_file_directory = get_object_directory();
        int i;
 
-       if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) {
+       if (!base) {
+               const char *sha1_file_directory = get_object_directory();
                int len = strlen(sha1_file_directory);
-               if (base)
-                       free(base);
                base = xmalloc(len + 60);
                sprintf(base, "%s/pack/pack-1234567890123456789012345678901234567890.pack", sha1_file_directory);
                name = base + len + 11;
-               if (last_objdir)
-                       free((char *) last_objdir);
-               last_objdir = strdup(sha1_file_directory);
        }
 
        buf = name;
@@ -182,20 +170,14 @@ char *sha1_pack_index_name(const unsigned char *sha1)
 {
        static const char hex[] = "0123456789abcdef";
        static char *name, *base, *buf;
-       static const char *last_objdir;
-       const char *sha1_file_directory = get_object_directory();
        int i;
 
-       if (!last_objdir || strcmp(last_objdir, sha1_file_directory)) {
+       if (!base) {
+               const char *sha1_file_directory = get_object_directory();
                int len = strlen(sha1_file_directory);
-               if (base)
-                       free(base);
                base = xmalloc(len + 60);
                sprintf(base, "%s/pack/pack-1234567890123456789012345678901234567890.idx", sha1_file_directory);
                name = base + len + 11;
-               if (last_objdir)
-                       free((char *) last_objdir);
-               last_objdir = strdup(sha1_file_directory);
        }
 
        buf = name;
index ddabb045a23011d0196ba8e2fa6250a7433d201f..c5a05faeb6b2bac74f4c5e06c5e397dc103bb190 100644 (file)
@@ -12,21 +12,15 @@ static int find_short_object_filename(int len, const char *name, unsigned char *
        char hex[40];
        int found = 0;
        static struct alternate_object_database *fakeent;
-       static const char *last_objdir;
-       const char *objdir = get_object_directory();
 
-       if (!last_objdir || strcmp(last_objdir, objdir)) {
+       if (!fakeent) {
+               const char *objdir = get_object_directory();
                int objdir_len = strlen(objdir);
                int entlen = objdir_len + 43;
-               if (fakeent)
-                       free(fakeent);
                fakeent = xmalloc(sizeof(*fakeent) + entlen);
                memcpy(fakeent->base, objdir, objdir_len);
                fakeent->name = fakeent->base + objdir_len + 1;
                fakeent->name[-1] = '/';
-               if (last_objdir)
-                       free((char *) last_objdir);
-               last_objdir = strdup(objdir);
        }
        fakeent->next = alt_odb_list;