From: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/2] git-am foreign patch support: format autodetection
Date: Tue, 26 May 2009 00:49:14 +0200 [thread overview]
Message-ID: <cb7bb73a0905251549s49d7fc28ge63b12e52029dd0b@mail.gmail.com> (raw)
In-Reply-To: <7vk544u8hx.fsf@alter.siamese.dyndns.org>
On Tue, May 26, 2009 at 12:23 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Giuseppe Bilotta <giuseppe.bilotta@gmail.com> writes:
>
>> This patch is the first step towards the introduction of a framework to
>> allow git-am to import patches not in mailbox format.
>>
>> Currently detected formats are
>> * the mailbox format itself, which is assumed by default if input is
>> form stdin
>> * Mercurial's output from 'hg export'
>> * Stacked Git's output from 'stg export' with the default export
>> template; StGIT patch series are also detected and expanded.
>
> I personally do not trust "autodetection" (especially done by others ;-),
> and prefer to have an explicit override by the users, but that aside...
No problem. --patch-format or just --format ?
> if test -z "$patch_format" && {
> test $# = 0 || test "x$1" = x-
> }
> then
> patch_format=mbox
> else
> patch_format=$(guess_patch_format)
> fi
>
> Having this extra logic inside the main codeflow makes it extremely harder
> to read; have it in a separate shell function.
I assume you mean the patch format detection, yes?
>> +# a single non-stdin argument was passed, check if it's a StGit patch series
>> +# index by checking if the first line begins with '# This series'
>> + {
>> + read l1
>> + case "$l1" in
>> + '# This series '*)
>> +# replace the argument list with the files listed in the series index,
>> +# prefixing them with the series index dirname, skipping comment lines
>
> Can the "series-index-name" file begin with '-' (which would affect the
> way how 'set "@"' works in the loop below)? A standard trick would be to
> do something like this.
>
> series_index="$1"
> shift ;# discard
> set x
> while ...
> do
> set "$@" another
> done
> shift ;# discard 'x' protection
Ah, good point. I'll do it that way.
>> + # (which is not stdin) to try to understand the format.
>> + if test $patch_format = none
>
> I do not understand this duplication and inconsistency. Why have the
> detection in two places?
It's not in two places. The first part sets the patch format only if
we are either reading from stdin or have been passed a stgit patch
series. Otherwise, we still don't know what we're getting, so now we
inspect the first patch to see what format it's in. (Consider for
example the case of appication of a StGIT patch which is not part of a
series.)
>> + case "$patch_format" in
>> + mbox)
>> + git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || {
>> + rm -fr "$dotest"
>> + exit 1
>> + }
>> + ;;
>> + *)
>> + echo "Patch format $patch_format is not currently handled, sorry"
>> exit 1
>
> No fixing broken "Subject:" line for your format here?
No, I put that in the second patch, because it was a different thing
(patch processing as opposed to format detection).
--
Giuseppe "Oblomov" Bilotta
next prev parent reply other threads:[~2009-05-25 22:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-25 19:14 [PATCH 0/2] git-am foreign patch support Giuseppe Bilotta
2009-05-25 19:14 ` [PATCH 1/2] git-am foreign patch support: format autodetection Giuseppe Bilotta
2009-05-25 19:14 ` [PATCH 2/2] git-am foreign patch support: StGIT Giuseppe Bilotta
2009-05-25 22:23 ` [PATCH 1/2] git-am foreign patch support: format autodetection Junio C Hamano
2009-05-25 22:49 ` Giuseppe Bilotta [this message]
2009-05-25 19:19 ` [PATCH 0/2] git-am foreign patch support Sverre Rabbelier
2009-05-25 19:24 ` Giuseppe Bilotta
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=cb7bb73a0905251549s49d7fc28ge63b12e52029dd0b@mail.gmail.com \
--to=giuseppe.bilotta@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/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).