Code

Merge branch 'jn/maint-setup-fix'
[git.git] / builtin / index-pack.c
index fad76bf7a84a6a103de20732752119d5245e9638..96333d48cd49fcfba5707530440f6f6848a2acf5 100644 (file)
@@ -880,31 +880,17 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
        char *index_name_buf = NULL, *keep_name_buf = NULL;
        struct pack_idx_entry **idx_objects;
        unsigned char pack_sha1[20];
+       int nongit;
 
        if (argc == 2 && !strcmp(argv[1], "-h"))
                usage(index_pack_usage);
 
        read_replace_refs = 0;
 
-       /*
-        * We wish to read the repository's config file if any, and
-        * for that it is necessary to call setup_git_directory_gently().
-        * However if the cwd was inside .git/objects/pack/ then we need
-        * to go back there or all the pack name arguments will be wrong.
-        * And in that case we cannot rely on any prefix returned by
-        * setup_git_directory_gently() either.
-        */
-       {
-               char cwd[PATH_MAX+1];
-               int nongit;
-
-               if (!getcwd(cwd, sizeof(cwd)-1))
-                       die("Unable to get current working directory");
-               setup_git_directory_gently(&nongit);
-               git_config(git_index_pack_config, NULL);
-               if (chdir(cwd))
-                       die("Cannot come back to cwd");
-       }
+       prefix = setup_git_directory_gently(&nongit);
+       git_config(git_index_pack_config, NULL);
+       if (prefix && chdir(prefix))
+               die("Cannot come back to cwd");
 
        for (i = 1; i < argc; i++) {
                const char *arg = argv[i];