git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Ensure proper setup of git_dir for git-hash-object
@ 2009-02-28 19:56 newren
  2009-02-28 20:59 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: newren @ 2009-02-28 19:56 UTC (permalink / raw)
  To: git; +Cc: gitster, Elijah Newren

From: Elijah Newren <newren@gmail.com>

Call setup_git_directory() before git_config() to make sure git_dir is set
to the proper value.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
Without this patch:
$ mkdir tmp
$ cd tmp/
$ git init --bare
Initialized empty Git repository in /home/newren/floss-development/git/tmp/
$ echo hi | git hash-object -w --stdin
error: unable to create temporary sha1 filename .git/objects/45: No such file or directory

fatal: Unable to add stdin to database
$ echo hi | git --git-dir=. hash-object -w --stdin
45b983be36b73c0788dc9cbcb76cbb80fc7bb057

 hash-object.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/hash-object.c b/hash-object.c
index 37e6677..ebb3bed 100644
--- a/hash-object.c
+++ b/hash-object.c
@@ -84,8 +84,6 @@ int main(int argc, const char **argv)
 
 	git_extract_argv0_path(argv[0]);
 
-	git_config(git_default_config, NULL);
-
 	argc = parse_options(argc, argv, hash_object_options, hash_object_usage, 0);
 
 	if (write_object) {
@@ -95,6 +93,8 @@ int main(int argc, const char **argv)
 			vpath = prefix_filename(prefix, prefix_length, vpath);
 	}
 
+	git_config(git_default_config, NULL);
+
 	if (stdin_paths) {
 		if (hashstdin)
 			errstr = "Can't use --stdin-paths with --stdin";
-- 
1.6.0.6

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] Ensure proper setup of git_dir for git-hash-object
  2009-02-28 19:56 [PATCH] Ensure proper setup of git_dir for git-hash-object newren
@ 2009-02-28 20:59 ` Junio C Hamano
  2009-02-28 21:20   ` Elijah Newren
  2009-02-28 21:39   ` Elijah Newren
  0 siblings, 2 replies; 4+ messages in thread
From: Junio C Hamano @ 2009-02-28 20:59 UTC (permalink / raw)
  To: newren; +Cc: git

newren@gmail.com writes:

> Without this patch:
> $ mkdir tmp
> $ cd tmp/
> $ git init --bare
> Initialized empty Git repository in /home/newren/floss-development/git/tmp/
> $ echo hi | git hash-object -w --stdin
> error: unable to create temporary sha1 filename .git/objects/45: No such file or directory
>
> fatal: Unable to add stdin to database
> $ echo hi | git --git-dir=. hash-object -w --stdin
> 45b983be36b73c0788dc9cbcb76cbb80fc7bb057

Does the patched version work without -w option?  Should it?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Ensure proper setup of git_dir for git-hash-object
  2009-02-28 20:59 ` Junio C Hamano
@ 2009-02-28 21:20   ` Elijah Newren
  2009-02-28 21:39   ` Elijah Newren
  1 sibling, 0 replies; 4+ messages in thread
From: Elijah Newren @ 2009-02-28 21:20 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sat, Feb 28, 2009 at 1:59 PM, Junio C Hamano <gitster@pobox.com> wrote:
> newren@gmail.com writes:
>
>> Without this patch:
>> $ mkdir tmp
>> $ cd tmp/
>> $ git init --bare
>> Initialized empty Git repository in /home/newren/floss-development/git/tmp/
>> $ echo hi | git hash-object -w --stdin
>> error: unable to create temporary sha1 filename .git/objects/45: No such file or directory
>>
>> fatal: Unable to add stdin to database
>> $ echo hi | git --git-dir=. hash-object -w --stdin
>> 45b983be36b73c0788dc9cbcb76cbb80fc7bb057
>
> Does the patched version work without -w option?  Should it?

Yes, the patched version works with or without the -w option (at least
in my testing -- maybe you know of a case I'm missing?)  I would
certainly expect it to work in both cases.

I basically arrived at the patch by realizing that git_config was
setting git_dir incorrectly as a side-effect, causing
setup_git_directory to notice it was already set and not try any of
it's more detailed logic to figure out the correct value.  Then I did
some grepping and noticed that other source files (archive.c,
builtin-apply.c, builtin-diff, etc., etc.) call
setup_git_directory[_gently] before git_config, and that hash-object.c
seemed to be the only one that didn't follow that trend.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] Ensure proper setup of git_dir for git-hash-object
  2009-02-28 20:59 ` Junio C Hamano
  2009-02-28 21:20   ` Elijah Newren
@ 2009-02-28 21:39   ` Elijah Newren
  1 sibling, 0 replies; 4+ messages in thread
From: Elijah Newren @ 2009-02-28 21:39 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sat, Feb 28, 2009 at 1:59 PM, Junio C Hamano <gitster@pobox.com> wrote:
> newren@gmail.com writes:
>
>> Without this patch:
>> $ mkdir tmp
>> $ cd tmp/
>> $ git init --bare
>> Initialized empty Git repository in /home/newren/floss-development/git/tmp/
>> $ echo hi | git hash-object -w --stdin
>> error: unable to create temporary sha1 filename .git/objects/45: No such file or directory
>>
>> fatal: Unable to add stdin to database
>> $ echo hi | git --git-dir=. hash-object -w --stdin
>> 45b983be36b73c0788dc9cbcb76cbb80fc7bb057
>
> Does the patched version work without -w option?  Should it?

Sorry, I think I partially missed what you were asking earlier.  When
-w is not passed there is no dependence on git_dir, so it does not
matter if it is set up or not.  Some evidence that this is true (in
addition to my basic testing): The call to git_config was added to
hash-object.c in revision ff350ccf49a800c4c90f817d346fb1bcb96e02e7;
prior to that revision, when -w was not passed, there would be no
setup of git_dir by either git_config or git_setup_directory.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-02-28 21:41 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-28 19:56 [PATCH] Ensure proper setup of git_dir for git-hash-object newren
2009-02-28 20:59 ` Junio C Hamano
2009-02-28 21:20   ` Elijah Newren
2009-02-28 21:39   ` Elijah Newren

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).