Re: git-daemon problem
- From
Junio C Hamano <junkio@cox.net>
- Date
- Jul 11, 2006, 23:04 UTC
- Message-ID
- <7vac7f3fr0.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <E1G0QeX-0003hG-0I@moooo.ath.cx>
Matthias Lederhofer <matled@gmx.net> writes:
Show 55 quoted lines
> A few weeks ago upgrading from 1.3.x to 1.4.1 I had a problem with
> git-daemon. I started git-daemon on a terminal but did not redirect
> stdin/stdout/stderr to /dev/null (actually using daemon(8) on freebsd
> without -f but just disowning the process and closing the terminal
> works fine too, nothing freebsd/daemon(8) specific). After closing
> the terminal I was not able to use the git-daemon anymore with some
> versions of the git. So now I took some time and tried to find what
> was the reason for that.
>
> It seems to be related to the client version too (git without version
> appendix is the current next (028cfcba78c3e4).
>
> 583b7ea31b7c16~1 (last good):
> $ git clone git://host:9419/foo
> $ git1.3.2 clone git://host:9419/foo.git
> (cloned successfully, both no output)
>
> 583b7ea31b7c16 (first bad):
> $ git clone git://host:9420/foo
> Generating pack...
> Done counting 6 objects.
> Deltifying 6 objects.
> 100% (6/6) done
> Total 6, written 6 (delta 0), reused 0 (delta 0)
> $ git1.3.2 clone git://host:9420/foo.git
> fatal: cannot mmap packfile '/somewhere/foo/.git/objects/pack/tmp-VX82qz': Invalid argument
> error: git-fetch-pack: unable to read from git-index-pack
> error: git-index-pack died with error code 128
> fetch-pack from 'git://host:9420/foo.git' failed.
> [1] 13267 exit 1 git1.3.2 clone git://host:9420/foo.git
> (/somewhere is the cwd on the client)
>
> I tried to find which part of the patch caused the problem and came
> out with the patch below. With this I can clone with git1.3.2 again
> but then git 1.4.x does not show any statistics about packing, its
> just a starting point to look at. Perhaps someone has an idea why
> this happens. I've got to sleep now :)
>
> ---
> upload-pack.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/upload-pack.c b/upload-pack.c
> index 7b86f69..94f0d85 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -249,7 +249,7 @@ static void create_pack_file(void)
> sz = read(pe_pipe[0], progress,
> sizeof(progress));
> if (0 < sz)
> - send_client_data(2, progress, sz);
> + write(2, progress, sz);
> else if (sz == 0) {
> close(pe_pipe[0]);
> pe_pipe[0] = -1;This breaks the newer clients that knows how to do side-band doesn't it?