Re: something fishy with Git commit and log from file
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 6, 2008, 16:50 UTC
- Message-ID
- <7vy73aqe9m.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <4899D119.1080403@obry.net>
Pascal Obry <pascal@obry.net> writes:
Show 18 quoted lines
> Junio C Hamano a écrit : >> Pascal Obry <pascal@obry.net> writes: >> >>> So definitely a Git bug! Can be reproduced with: >>> >>> $ mkdir repo && cd repo >>> $ git init >>> $ mkdir dir >>> $ cd dir >>> $ echo file > file >>> $ echo log > log >>> $ git add file >>> $ git commit --file=log >>> fatal: could not read log file 'log': No such file or directory >> >> Try it without cding down to "dir". > > Yes it works.
Perhaps something like this. This must be another one of those regressions introduced in C rewrite.
diff --git a/builtin-commit.c b/builtin-commit.c index b783e6e..fcc9c59 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -469,7 +469,10 @@ static int prepare_to_commit(const char *index_file, const char *prefix) die("could not read log from standard input"); hook_arg1 = "message"; } else if (logfile) { - if (strbuf_read_file(&sb, logfile, 0) < 0) + const char *lf = logfile; + if (prefix) + lf = prefix_filename(prefix, strlen(prefix), logfile); + if (strbuf_read_file(&sb, lf, 0) < 0) die("could not read log file '%s': %s", logfile, strerror(errno)); hook_arg1 = "message";