Re: [PATCH 4/5] SubmittingPatches: remove confusing guidance about base branches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> "Linus Arver via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes:
>
>> For these reasons, remove the guidance _without_ preserving the meaning
>> of the underlying principle, and instead add an overview of the four
>> named branches.
>
> Meaning that this rewrites the guidance

Yes.

> and changes the meaning of the underlying principle?

Hmm, no. I think I should have written in my commit message instead:

--8<---------------cut here---------------start------------->8---
For these reasons, remove the guidance while still preserving the
meaning of the underlying principle by adding an overview of the four
named branches.
--8<---------------cut here---------------end--------------->8---

However, I now think deleting the "base your work on the oldest branch
that your change is relevant to" text was unnecessarily harsh. I think I
can reword it to make it sound less contrary to the accompanying bullet
points.

Will update in v2.

>> -In general, always base your work on the oldest branch that your
>> -change is relevant to.
>> +The following branches are the typical starting points for new work:
>> +
>> +* maint
>> +* master
>> +* next
>> +* seen
>> +
>> +These branches are explained in detail in linkgit:gitworkflows[7].
>> +Choose the appropriate branch depending on the following scenarios:
>
> Please never suggest to build anything on 'next' or 'seen'.  They
> are inappropriate to base your work on, if your topic wants to have
> a realistic chance to graduate to 'master'.

I only included "next" and "seen" here just below "maint" and "master"
because they were included as OK-places to start new work (albeit in
exceptional cases) in one of the bullet points:

--8<---------------cut here---------------start------------->8---
* In the exceptional case that a new feature depends on several topics
  not in `master`, start working on `next` or `seen` privately and
  send out patches only for discussion. Once your new feature starts
  to stabilize, you would have to rebase it (see the "depends on other
  topics" above).
--8<---------------cut here---------------end--------------->8---

> If you are making tree-wide changes, while somebody else is also
> making another tree-wide changes, your topic may have severe overlap
> with the other person's topic.  In which case, you may be tempted to
> build on 'next' that has the other person's topic, but doing so would
> mean you'll not just depend on the other topic, but with all the
> other topics that are already in 'next'.

Good point. I will include this tip in v2 (seems like
something that would be especially helpful for newer contributors).

> That would make the basic choices simpler.
>
>  * If you are fixing bugs in the released version, build on 'maint'
>    (which may mean you have to fix things without using new API
>    features on the cutting edge that recently appeared in 'master'
>    but were not available in the released version).
>
>  * If you are adding new features, build on 'master'.
>
> Under exceptional circumstances that you need to depend on a
> selected few topics that are already in 'next' but not in 'master',
> you may want to fork your base-branch from 'master', merge these
> selected few topics to it, and call that your base-branch (which
> nobody else has).  And then you build on top of it.  When sending
> patches out, because your synthetic base-branch is something only
> you have, you'd need to communicate how you created it in your cover
> letter to allow others to recreate it.

I strongly agree that this is simpler. One thing I would change is to
use a phrase like "start your work" instead of the word "build" because
the latter on quick glance could be misinterpreted as literally building
(compiling/packaging) the project.

Will incorporate in v2 (thank you for the suggestion; will credit you in
a "Helped-by: ..." trailer).



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux