On Mon, Oct 03, 2011 at 03:42:51AM -0400, Jeff King wrote: > On Sat, Oct 01, 2011 at 11:26:55AM +1000, Nguyen Thai Ngoc Duy wrote: > > The real problem here seems to be that instead of communicating "no, we > don't support that", git-daemon just hangs up. It would be a much nicer > fix if we could change that. I'm not sure it's possible, though. There's > not much room in the beginning of the room to make that communication in > a way that's backwards compatible. Oh, sure it is possible (except for remote snapshot): $ /usr/bin/git fetch git://localhost/foobar fatal: remote error: R access for foobar DENIED to anonymous $ /usr/bin/git push git://localhost/foobar fatal: remote error: W access for foobar DENIED to anonymous $ /usr/bin/git archive --remote=git://localhost/foobar HEAD fatal: git archive: protocol error $ /usr/bin/git --version git version 1.7.6.3 Supported for fetch and push since 1.6.1-rc1 (And 1.6.1 was over 2.5 years ago). Oh, and even before that, but with slightly more ugly error message. Oh, and adding interpretation of ERR packets to git archive is easy (and I even happen to have git:// server that can send those to test against): $ git archive --remote=git://localhost/foobar HEAD fatal: remote error: R access for foobar DENIED to anonymous (I also tested that remote snapshotting of repository that should be readable succeeds, it does). --- >8 ---- >From ce3a402e4fa72cf603f92801d6f021ff89d3ac35 Mon Sep 17 00:00:00 2001 From: Ilari Liusvaara <ilari.liusvaara@xxxxxxxxxxx> Date: Mon, 3 Oct 2011 13:55:37 +0300 Subject: [PATCH] Support ERR in remote archive like in fetch/push Make ERR as first packet of remote snapshot reply work like it does in fetch/push. Lets servers decline remote snapshot with message the same way as declining fetch/push with a message. Signed-off-by: Ilari Liusvaara <ilari.liusvaara@xxxxxxxxxxx> --- builtin/archive.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/builtin/archive.c b/builtin/archive.c index 883c009..931956d 100644 --- a/builtin/archive.c +++ b/builtin/archive.c @@ -61,6 +61,8 @@ static int run_remote_archiver(int argc, const char **argv, if (strcmp(buf, "ACK")) { if (len > 5 && !prefixcmp(buf, "NACK ")) die(_("git archive: NACK %s"), buf + 5); + if (len > 4 && !prefixcmp(buf, "ERR ")) + die(_("remote error: %s"), buf + 4); die(_("git archive: protocol error")); } -- 1.7.7.3.g2791de.dirty -Ilari -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html