From: "Philip Oakley" <philipoakley@iee.org>
To: "Junio C Hamano" <gitster@pobox.com>
Cc: "GitList" <git@vger.kernel.org>, "Jonathan Nieder" <jrnieder@gmail.com>
Subject: Re: [PATCH v2 1/1] doc: format-patch: don't use origin as a branch name
Date: Mon, 4 Aug 2014 22:51:52 +0100 [thread overview]
Message-ID: <F97E9146985F4449A937B9C5CCA1D7F5@PhilipOakley> (raw)
In-Reply-To: xmqq38dctcmz.fsf@gitster.dls.corp.google.com
From: "Junio C Hamano" <gitster@pobox.com>
> Philip Oakley <philipoakley@iee.org> writes:
>
>> Historically (5 Nov 2005 v0.99.9-46-g28ffb89) the git-format-patch
>> used
>> 'origin' as the upstream branch name. That name is now used as the
>> nominal
>> name for the upstream remote.
>>
>> While 'origin' would be DWIMmed (do what I mean) to be that remote's
>> primary branch, do not assume the reader is ready for such magic.
>
> Good thinking.
>
>> Likewise, do not use 'origin/master' which may not be up to date with
>> the
>> remote, nor reflect the reader's master branch. The patch series
>> should be
>> relative to the reader's view of 'git show-branch HEAD master'.
>
> This however is backwards, no? The history on 'origin/master' may
> not be up-to-date in the sense that if you run 'git fetch' you might
> get more, but it absolutely is up-to-date in the sense that it shows
> what the origin has to the best of your repository's current
> knowledge.
I still think that the user/reader shouldn't be creating patches based
on wherever someone else had got to, rather it should just be patches
from their own feature branch. However the rest of your argument still
stands with regard to accidental/unexpected conflicts with other
upstream work, and the reader should ensure they are already up to
date - maybe it needs a comment line to state that.
>
> Compared to that, what the user's local 'master' has is much less
> relevant. For one thing, if a more recent commit that is on the
> remote repository is missing on 'origin/master' because you haven't
> fetched recently, by definition that commit will not be on your
> 'master' either, so you have the same staleness issue to the exact
> degree. Even worse, when you are developing a topic to upstream, it
> is a good practice to merge your topic to your own 'master' to check
> it with the wider project codebase that is more recent than where
> your topic earlier forked from, and it makes little sense to tell
> 'exclude what I have on my master' to format-patch when extracting
> changes to upstream out of such a topic. You send what the other
> side has, not what you do not have on your local 'master' branch.
>
>> Use the more modern 'master' as the reference branch name.
>
> There is nothing 'modern' in 'master'.
Noted.
>
> I think the original description was written before we switched to
> the separate remote layout. What is in 'refs/remote/origin/master'
> these days was stored and updated at 'refs/heads/origin' and no
> other branch from the remote repository was tracked back then. The
> changes to be upstreamed are output by grabbing what are not in
> 'origin', whose modern equivalent is 'origin/master'.
>
> In short, if your patch were s|origin|origin/master|, instead of
> s|origin|master|, that would be an adjustment to the more modern
> world that is still faithful to the intent of the original.
I think we would need to clarify that (the intent) for the reader. I'll
see what I can do. (suggestion below)
>
>> Signed-off-by: Philip Oakley <philipoakley@iee.org>
>> ---
>> Documentation/git-format-patch.txt | 10 +++++-----
>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/Documentation/git-format-patch.txt
>> b/Documentation/git-format-patch.txt
>> index c0fd470..b0f041f 100644
>> --- a/Documentation/git-format-patch.txt
>> +++ b/Documentation/git-format-patch.txt
>> @@ -523,25 +523,25 @@ $ git format-patch -k --stdout R1..R2 | git
>> am -3 -k
>> ------------
>>
>> * Extract all commits which are in the current branch but not in the
>> -origin branch:
>> +master branch:
>> +
>> ------------
>> -$ git format-patch origin
>> +$ git format-patch master
>> ------------
>> +
>> For each commit a separate file is created in the current directory.
Perhaps insert "Note: Your 'master' should be up to date with respect to
'origin/master' before creating and sending patches upstream to avoid
unexpected conflicts." ?
>>
>> -* Extract all commits that lead to 'origin' since the inception of
>> the
>> +* Extract all commits that lead to 'master' since the inception of
>> the
>> project:
>> +
>> ------------
>> -$ git format-patch --root origin
>> +$ git format-patch --root master
>> ------------
>>
>> * The same as the previous one:
>> +
>> ------------
>> -$ git format-patch -M -B origin
>> +$ git format-patch -M -B master
>> ------------
>> +
>> Additionally, it detects and handles renames and complete rewrites
> --
Philip
next prev parent reply other threads:[~2014-08-04 21:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-02 15:46 [PATCH v2 0/1] doc: format-patch Philip Oakley
2014-08-02 15:46 ` [PATCH v2 1/1] doc: format-patch: don't use origin as a branch name Philip Oakley
2014-08-04 16:58 ` Junio C Hamano
2014-08-04 18:23 ` Junio C Hamano
2014-08-04 21:51 ` Philip Oakley [this message]
2014-08-04 22:12 ` Junio C Hamano
2014-08-04 23:19 ` Philip Oakley
2014-08-05 18:19 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2014-08-14 19:50 Philip Oakley
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=F97E9146985F4449A937B9C5CCA1D7F5@PhilipOakley \
--to=philipoakley@iee.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.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