git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Erik Faye-Lund <kusmabite@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org, j6t@kdbg.org
Subject: Re: [PATCH v2 4/4] upload-archive: use start_command instead of fork
Date: Mon, 1 Aug 2011 16:45:03 +0200	[thread overview]
Message-ID: <CABPQNSaqyD+rhWPRbtVdnkweuXSycBahKEsasGZkEg3mi4SaxQ@mail.gmail.com> (raw)
In-Reply-To: <20110728170222.GB15931@sigill.intra.peff.net>

On Thu, Jul 28, 2011 at 7:02 PM, Jeff King <peff@peff.net> wrote:
> On Thu, Jul 28, 2011 at 10:47:58AM -0600, Jeff King wrote:
>
>> Ah, nevermind. I see now; the command-line option interface to "git
>> archive" is not as rich as what you can pass via write_archive.
>>
>> I think you can get around it by adding an option to "git archive" to
>> indicate that we are filling a remote request, which is the only
>> extra information that my series adds.
>
> And that patch would look something like the one below.

This is the most straight forward way of doing this, thanks. I'll post
a new version with this squashed in soon.

What's the proper way of attributing you for the work?

> You can also now
> drop the "remote" parameter to write_archive entirely, but I didn't do
> so here.

I'm not entirely sure how you propose we do this... do you mean by
hoisting the relevant logic from write_archive up to cmd_archive or
something?

> Applied on top of the merge of your series into next, this
> passes t5000.

Unfortunately, it doesn't pass on Windows, but this doesn't seem to be
directly related to the remote-stuff: Here's the tests that fail:


$ make t5000-tar-tree
*** t5000-tar-tree.sh ***
ok 1 - populate workdir
<snip>
ok 53 - infer tgz from .tar.gz filename
not ok - 54 extract tgz file
#
#               $GUNZIP -c <j.tgz >j.tar &&
#               test_cmp b.tar j.tar
#
not ok - 55 remote tar.gz is allowed by default
#
#               git archive --remote=. --format=tar.gz HEAD >remote.tar.gz &&
#               test_cmp j.tgz remote.tar.gz
#
ok 56 - remote tar.gz can be disabled
# failed 2 among 56 test(s)
1..56
make: *** [t5000-tar-tree.sh] Error 1

It seems "git archive --format=tgz HEAD" is broken on Windows:
$ git archive --format=tgz HEAD > j.tgz
$ gunzip -c j.tgz > j.tar && echo ok

gzip: j.tgz: invalid compressed data--format violated

But if I perform the compression manually, the archive is fine:
$ git archive --format=tar HEAD | gzip -cn > j.tgz
$ gunzip -c j.tgz > j.tar && echo ok
ok

So, the big question is, are all tar-filters broken on Windows? It
seems not; the tests for the foo-filter works fine... any clues? Could
it somehow be newline-related, perhaps?

>
> -Peff
>
> ---
> diff --git a/builtin/archive.c b/builtin/archive.c
> index 883c009..6668340 100644
> --- a/builtin/archive.c
> +++ b/builtin/archive.c
> @@ -85,6 +85,7 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
>        const char *exec = "git-upload-archive";
>        const char *output = NULL;
>        const char *remote = NULL;
> +       int is_remote = 0;
>        struct option local_opts[] = {
>                OPT_STRING('o', "output", &output, "file",
>                        "write the archive to this file"),
> @@ -92,6 +93,9 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
>                        "retrieve the archive from remote repository <repo>"),
>                OPT_STRING(0, "exec", &exec, "cmd",
>                        "path to the remote git-upload-archive command"),
> +               { OPTION_BOOLEAN, 0, "remote-request", &is_remote, NULL,
> +                       "indicate we are serving a remote request",
> +                       PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
>                OPT_END()
>        };
>
> @@ -106,5 +110,5 @@ int cmd_archive(int argc, const char **argv, const char *prefix)
>
>        setvbuf(stderr, NULL, _IOLBF, BUFSIZ);
>
> -       return write_archive(argc, argv, prefix, 1, output, 0);
> +       return write_archive(argc, argv, prefix, 1, output, is_remote);
>  }
> diff --git a/builtin/upload-archive.c b/builtin/upload-archive.c
> index 0c192b5..c57e8bd 100644
> --- a/builtin/upload-archive.c
> +++ b/builtin/upload-archive.c
> @@ -27,8 +27,9 @@ static void prepare_argv(const char **sent_argv, const char **argv)
>        int len;
>
>        /* put received options in sent_argv[] */
> -       sent_argc = 1;
> +       sent_argc = 2;
>        sent_argv[0] = "archive";
> +       sent_argv[1] = "--remote-request";
>        for (p = buf;;) {
>                /* This will die if not enough free space in buf */
>                len = packet_read_line(0, p, (buf + sizeof buf) - p);
>

  reply	other threads:[~2011-08-01 14:45 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-18 18:08 [PATCH v2 0/4] port upload-archive to Windows Erik Faye-Lund
2011-07-18 18:08 ` [PATCH v2 1/4] compat/win32/sys/poll.c: upgrade from upstream Erik Faye-Lund
2011-07-18 18:08 ` [PATCH v2 2/4] mingw: fix compilation of poll-emulation Erik Faye-Lund
2011-07-18 18:08 ` [PATCH v2 3/4] enter_repo: do not modify input Erik Faye-Lund
2011-07-18 18:08 ` [PATCH v2 4/4] upload-archive: use start_command instead of fork Erik Faye-Lund
2011-07-19 21:09   ` Junio C Hamano
2011-07-28  8:32     ` Erik Faye-Lund
2011-07-28 16:08       ` Jeff King
2011-07-28 16:47         ` Jeff King
2011-07-28 17:02           ` Jeff King
2011-08-01 14:45             ` Erik Faye-Lund [this message]
2011-08-01 17:46               ` Jeff King
2011-08-01 18:02                 ` Erik Faye-Lund
2011-08-01 18:25                   ` Jeff King
2011-08-01 20:48                     ` René Scharfe
2011-08-01 21:20                       ` Johannes Sixt
2011-08-01 21:42                         ` René Scharfe
2011-08-01 21:52                         ` René Scharfe
2011-08-02  4:00                           ` Jeff King
2011-08-02 16:46                             ` René Scharfe
2011-08-02 18:13                               ` Jeff King
2011-08-02 23:37                                 ` Johannes Sixt
2011-08-03  5:49                                   ` Jeff King
2011-08-06  9:40                                   ` René Scharfe
2011-08-07 20:02                                     ` Johannes Sixt
2011-08-07 21:06                                       ` Jeff King
2011-08-08 17:10                                       ` René Scharfe
2011-08-09  5:02                                         ` Jeff King
2011-08-09 10:25                                           ` René Scharfe
2011-08-09 20:05                                             ` Jeff King
2011-09-29 19:54                                               ` Erik Faye-Lund
2011-09-29 20:18                                                 ` René Scharfe
2011-09-29 20:20                                                   ` Erik Faye-Lund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABPQNSaqyD+rhWPRbtVdnkweuXSycBahKEsasGZkEg3mi4SaxQ@mail.gmail.com \
    --to=kusmabite@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.org \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).