unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Merging release branch
@ 2021-10-29 16:35 Glenn Morris
  2021-10-29 16:42 ` Lars Ingebrigtsen
                   ` (3 more replies)
  0 siblings, 4 replies; 47+ messages in thread
From: Glenn Morris @ 2021-10-29 16:35 UTC (permalink / raw)
  To: emacs-devel


I've had enough of merging the release branch to master,
so someone else will have to do it from now on.

I use admin/automerge from cron with a wrapper that:
1) first checks the release branch passed make check
2) passes "-n 1" if the last merge was more than 1 week ago

The final straw was a triple failure in the automatic merge today due to:
an easily avoidable build breakage in the release branch
a non-repeatable check failure due to network-stream-tests timing out
  (such classes of test failure are common)
3 separate merge conflicts due to the same code being modified on both branches



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 16:35 Merging release branch Glenn Morris
@ 2021-10-29 16:42 ` Lars Ingebrigtsen
  2021-10-29 17:01 ` Stefan Kangas
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-29 16:42 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

Glenn Morris <rgm@gnu.org> writes:

> The final straw was a triple failure in the automatic merge today due to:
> an easily avoidable build breakage in the release branch

Sorry about that -- I should have noticed that earlier...

> 3 separate merge conflicts due to the same code being modified on both branches

... and one of those were due to me trying to fix up that breakage in a
hurry and doing it on the wrong branch.  Sorry again.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 16:35 Merging release branch Glenn Morris
  2021-10-29 16:42 ` Lars Ingebrigtsen
@ 2021-10-29 17:01 ` Stefan Kangas
  2021-10-29 18:10   ` Stefan Monnier
  2021-10-29 17:08 ` dick
  2021-11-06  9:28 ` Eli Zaretskii
  3 siblings, 1 reply; 47+ messages in thread
From: Stefan Kangas @ 2021-10-29 17:01 UTC (permalink / raw)
  To: Glenn Morris, emacs-devel

Glenn Morris <rgm@gnu.org> writes:

> I've had enough of merging the release branch to master,
> so someone else will have to do it from now on.

If that is your decision, I respect it.  I can only salute and thank you
for carrying out this thankless task for so long.

> a non-repeatable check failure due to network-stream-tests timing out
>   (such classes of test failure are common)

IMO, we should aggressively mark such tests as :unstable when we detect
that they are, in fact, unstable.  Because they can and will break
automatic processes like merging, CI, etc.  That seems worse than
whatever regression the test is intended to avoid.

Another idea is that other people could proactively merge, if they
suspect that their changes might cause conflicts.  (I haven't done so,
for fear of stepping on your toes, but I would be happy to start.)



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 16:35 Merging release branch Glenn Morris
  2021-10-29 16:42 ` Lars Ingebrigtsen
  2021-10-29 17:01 ` Stefan Kangas
@ 2021-10-29 17:08 ` dick
  2021-11-06  9:28 ` Eli Zaretskii
  3 siblings, 0 replies; 47+ messages in thread
From: dick @ 2021-10-29 17:08 UTC (permalink / raw)
  Cc: emacs-devel

GM> The final straw was a triple failure in the automatic merge today due to:

Good stuff.  I could take this over but I would need the right privileges.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 17:01 ` Stefan Kangas
@ 2021-10-29 18:10   ` Stefan Monnier
  2021-10-29 18:26     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 47+ messages in thread
From: Stefan Monnier @ 2021-10-29 18:10 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Glenn Morris, emacs-devel

> Another idea is that other people could proactively merge, if they
> suspect that their changes might cause conflicts.  (I haven't done so,
> for fear of stepping on your toes, but I would be happy to start.)

I think we should get in the habit of merging proactively, indeed.
If `emacs-28` was already merged before your commit(s), then it's
a small matter of going back to the main branch and doing `git merge
emacs-28` or `git merge -s ours emacs-28`.


        Stefan




^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 18:10   ` Stefan Monnier
@ 2021-10-29 18:26     ` Lars Ingebrigtsen
  2021-10-29 18:52       ` Lars Ingebrigtsen
  2021-10-29 19:00       ` Stefan Monnier
  0 siblings, 2 replies; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-29 18:26 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, Stefan Kangas, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> If `emacs-28` was already merged before your commit(s), then it's
> a small matter of going back to the main branch and doing `git merge
> emacs-28` or `git merge -s ours emacs-28`.

That work flow sounds fine to me in general -- but what about those
changes to emacs-28 that shouldn't be merged?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 18:26     ` Lars Ingebrigtsen
@ 2021-10-29 18:52       ` Lars Ingebrigtsen
  2021-10-29 19:55         ` Daniel Martín
  2021-10-29 19:58         ` Eli Zaretskii
  2021-10-29 19:00       ` Stefan Monnier
  1 sibling, 2 replies; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-29 18:52 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, Stefan Kangas, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> That work flow sounds fine to me in general -- but what about those
> changes to emacs-28 that shouldn't be merged?

I know there's other projects that don't do merging at all between
long-lived branches like this.

In Emacs, that would mean that things that are supposed to be
emacs-28-only are developed there, and are pushed as normal.  Any things
that are supposed to go to both master and emacs-28 are committed to
master, and then cherry-picked for emacs-28.  (Or cherry-picked the
other way, but that risks "losing" changes if you forget.)

Doing it that way would involve much fewer special rules (about commit
message formats) and less magic.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 18:26     ` Lars Ingebrigtsen
  2021-10-29 18:52       ` Lars Ingebrigtsen
@ 2021-10-29 19:00       ` Stefan Monnier
  2021-10-29 19:05         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 47+ messages in thread
From: Stefan Monnier @ 2021-10-29 19:00 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Stefan Kangas, Glenn Morris, emacs-devel

Lars Ingebrigtsen [2021-10-29 20:26:46] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> If `emacs-28` was already merged before your commit(s), then it's
>> a small matter of going back to the main branch and doing `git merge
>> emacs-28` or `git merge -s ours emacs-28`.
> That work flow sounds fine to me in general -- but what about those
> changes to emacs-28 that shouldn't be merged?

That's what `git merge -s ours emacs-28` does (it marks the commit as
merged but without bringing any of the corresponding code changes).


        Stefan




^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 19:00       ` Stefan Monnier
@ 2021-10-29 19:05         ` Lars Ingebrigtsen
  2021-10-29 19:17           ` Stefan Monnier
  2021-10-29 20:29           ` David Engster
  0 siblings, 2 replies; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-29 19:05 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Glenn Morris, Stefan Kangas, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> That's what `git merge -s ours emacs-28` does (it marks the commit as
> merged but without bringing any of the corresponding code changes).

Oh, I see.  But what if there was some other commit in emacs-28 that
that committer had forgotten to merge?  Then it would also be kept out
of master?

Your assumption here was that emacs-28 had already been merged, but I
think people would be likely to forget.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 19:05         ` Lars Ingebrigtsen
@ 2021-10-29 19:17           ` Stefan Monnier
  2021-10-29 20:29           ` David Engster
  1 sibling, 0 replies; 47+ messages in thread
From: Stefan Monnier @ 2021-10-29 19:17 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Stefan Kangas, Glenn Morris, emacs-devel

Lars Ingebrigtsen [2021-10-29 21:05:07] wrote:
> Your assumption here was that emacs-28 had already been merged, but I
> think people would be likely to forget.

Agreed.


        Stefan




^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 18:52       ` Lars Ingebrigtsen
@ 2021-10-29 19:55         ` Daniel Martín
  2021-10-30 11:42           ` Lars Ingebrigtsen
  2021-10-29 19:58         ` Eli Zaretskii
  1 sibling, 1 reply; 47+ messages in thread
From: Daniel Martín @ 2021-10-29 19:55 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Stefan Monnier, Glenn Morris, Stefan Kangas, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
> I know there's other projects that don't do merging at all between
> long-lived branches like this.
>
> In Emacs, that would mean that things that are supposed to be
> emacs-28-only are developed there, and are pushed as normal.  Any things
> that are supposed to go to both master and emacs-28 are committed to
> master, and then cherry-picked for emacs-28.  (Or cherry-picked the
> other way, but that risks "losing" changes if you forget.)

An approach many of those projects follow is that every change is always
developed on master.  Only if a change is considered safe for the
release, it is cherry-picked into the release branch.  Always developing
on master greatly reduces the risk you mentioned about losing changes.

But this workflow is not exent of problems, though, because at the time
you cherry-pick it's possible that the change doesn't apply cleanly to
the emacs-28 branch.  In that case, you'll need to adapt the patch, and
possibly a maintainer would potentially need to review it again to see
if it's still safe enough for the release branch.

The main benefit this approach has is that there is not a single person
doing all the merges periodically, fixing conflicts affecting code he
has not written.  The release branch is never merged back and that means
there's no need to answer the non-intuitive question "should this commit
NOT be merged into master?", for example.  The merging work is
distributed across the people that cherry-pick their commits if they are
deemed safe for the next release.

My two cents.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 18:52       ` Lars Ingebrigtsen
  2021-10-29 19:55         ` Daniel Martín
@ 2021-10-29 19:58         ` Eli Zaretskii
  2021-10-30 11:51           ` Lars Ingebrigtsen
  1 sibling, 1 reply; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-29 19:58 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: rgm, stefan, monnier, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Fri, 29 Oct 2021 20:52:22 +0200
> Cc: Glenn Morris <rgm@gnu.org>, Stefan Kangas <stefan@marxist.se>,
>  emacs-devel@gnu.org
> 
> Lars Ingebrigtsen <larsi@gnus.org> writes:
> 
> > That work flow sounds fine to me in general -- but what about those
> > changes to emacs-28 that shouldn't be merged?
> 
> I know there's other projects that don't do merging at all between
> long-lived branches like this.
> 
> In Emacs, that would mean that things that are supposed to be
> emacs-28-only are developed there, and are pushed as normal.  Any things
> that are supposed to go to both master and emacs-28 are committed to
> master, and then cherry-picked for emacs-28.  (Or cherry-picked the
> other way, but that risks "losing" changes if you forget.)
> 
> Doing it that way would involve much fewer special rules (about commit
> message formats) and less magic.

Who'd do the cherry-picking in this scenario?  And why do you assume
people won't forget doing that, like they forget to merge and/or mark
the changes "not to be merged to master"?

I fear that what you propose will completely demote the release branch
to the status of second-rate citizen, because it then becomes a
burden.  That'd be a regression.  Cherry-picking makes much more sense
when branches are short-lived, which is not the case here.




^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 19:05         ` Lars Ingebrigtsen
  2021-10-29 19:17           ` Stefan Monnier
@ 2021-10-29 20:29           ` David Engster
  1 sibling, 0 replies; 47+ messages in thread
From: David Engster @ 2021-10-29 20:29 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Glenn Morris, Stefan Kangas, Stefan Monnier, emacs-devel

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> That's what `git merge -s ours emacs-28` does (it marks the commit as
>> merged but without bringing any of the corresponding code changes).
>
> Oh, I see.  But what if there was some other commit in emacs-28 that
> that committer had forgotten to merge?  Then it would also be kept out
> of master?

Yup. In that case, you need to do two merges with different merge
strategies. That's what admin/gitmerge.el is for, and I think it's
pretty easy to use (but I'm biased).

> Your assumption here was that emacs-28 had already been merged, but I
> think people would be likely to forget.

For sure.

I agree that doing cherry-picks from 'master' to 'emacs-28' would be
easier for people, simply because they are familiar with it, but keeping
track of what has been cherry-picked and what not can be pretty tedious,
and git cannot help you much with that.

-David



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 19:55         ` Daniel Martín
@ 2021-10-30 11:42           ` Lars Ingebrigtsen
  2021-10-30 13:42             ` Daniel Martín
  0 siblings, 1 reply; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-30 11:42 UTC (permalink / raw)
  To: Daniel Martín
  Cc: Glenn Morris, Stefan Kangas, Stefan Monnier, emacs-devel

Daniel Martín <mardani29@yahoo.es> writes:

> But this workflow is not exent of problems, though, because at the time
> you cherry-pick it's possible that the change doesn't apply cleanly to
> the emacs-28 branch.  In that case, you'll need to adapt the patch, and
> possibly a maintainer would potentially need to review it again to see
> if it's still safe enough for the release branch.

Well, we depend upon people making that decision already -- when they're
putting things into emacs-28 or master.  

> The merging work is distributed across the people that cherry-pick
> their commits if they are deemed safe for the next release.

That's one of the things I find really attractive about the
cherry-picking work flow: Offloading the (boring) merging work on Glenn
has never felt very fair -- the person doing the commit should also do
the merges (not least because they're the ones that know best what the
change is meant to achieve).

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 19:58         ` Eli Zaretskii
@ 2021-10-30 11:51           ` Lars Ingebrigtsen
  2021-10-30 12:11             ` Eli Zaretskii
  0 siblings, 1 reply; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-30 11:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, stefan, monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Who'd do the cherry-picking in this scenario?  And why do you assume
> people won't forget doing that, like they forget to merge and/or mark
> the changes "not to be merged to master"?

The people who commit things to master would also be tasked with
deciding whether to cherry-pick things for the release branch.  And,
yes, they'll forget to do this as they forget to put "don't merge" into
the commit messages, but there's one major advantage to the
cherry-picking here: Even if they forget, it's not then too late (as it
is with the commit message thing).  They can just cherry-pick the next
day when somebody reminds them.

> I fear that what you propose will completely demote the release branch
> to the status of second-rate citizen, because it then becomes a
> burden.  That'd be a regression. 

Speaking for myself, a cherry-picking work flow would be less work, not
more work in general, because I normally use an Emacs from the master
branch.  Being able to apply commits to master would be faster for me,
and cherry-picking to the release branch can be largely automated.

And I don't see any demotion of status here.  If anything, I see an
elevation -- we're deeming that branch so important that we're being
careful with it.

> Cherry-picking makes much more sense when branches are short-lived,
> which is not the case here.

I think it's rather the opposite?  The projects I'm familiar with that
use cherry-picking have very long-lived release branches (several of
them), and they keep on cherry-picking bug/documention fixes from the
trunk for years and years.  (Which we don't do, because of our
merge-from-release strategy.)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 11:51           ` Lars Ingebrigtsen
@ 2021-10-30 12:11             ` Eli Zaretskii
  2021-10-30 12:30               ` Dmitry Gutov
  2021-10-30 12:31               ` Lars Ingebrigtsen
  0 siblings, 2 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-30 12:11 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: rgm, stefan, monnier, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: monnier@iro.umontreal.ca,  rgm@gnu.org,  stefan@marxist.se,
>   emacs-devel@gnu.org
> Date: Sat, 30 Oct 2021 13:51:59 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > Who'd do the cherry-picking in this scenario?  And why do you assume
> > people won't forget doing that, like they forget to merge and/or mark
> > the changes "not to be merged to master"?
> 
> The people who commit things to master would also be tasked with
> deciding whether to cherry-pick things for the release branch.

That assumes they will want to, and will do a good job.

> > I fear that what you propose will completely demote the release branch
> > to the status of second-rate citizen, because it then becomes a
> > burden.  That'd be a regression. 
> 
> Speaking for myself, a cherry-picking work flow would be less work, not
> more work in general, because I normally use an Emacs from the master
> branch.

Then it's good for you, but not for me: when a release is in progress,
I work mainly on the release branch.

And of course, cherry-picking doesn't remove merge conflicts, they
will still need to be resolved.

We've been using the current workflow for years without any major
problems.  Changing that now radically doesn't make sense to me.  It
will most probably need several procedures to be modified that were
stable for several releases, and I don't see the gains which would
justify that.  We have enough real work on our hands.  So please let's
not do that.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:11             ` Eli Zaretskii
@ 2021-10-30 12:30               ` Dmitry Gutov
  2021-10-30 12:32                 ` Eli Zaretskii
  2021-10-30 16:33                 ` Eli Zaretskii
  2021-10-30 12:31               ` Lars Ingebrigtsen
  1 sibling, 2 replies; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-30 12:30 UTC (permalink / raw)
  To: Eli Zaretskii, Lars Ingebrigtsen; +Cc: rgm, stefan, monnier, emacs-devel

On 30.10.2021 15:11, Eli Zaretskii wrote:
>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Cc: monnier@iro.umontreal.ca,  rgm@gnu.org,  stefan@marxist.se,
>>    emacs-devel@gnu.org
>> Date: Sat, 30 Oct 2021 13:51:59 +0200
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>> Who'd do the cherry-picking in this scenario?  And why do you assume
>>> people won't forget doing that, like they forget to merge and/or mark
>>> the changes "not to be merged to master"?
>>
>> The people who commit things to master would also be tasked with
>> deciding whether to cherry-pick things for the release branch.
> 
> That assumes they will want to, and will do a good job.

People seem to generally want to push changes to the release branch. If 
only to get them to the users sooner.

>>> I fear that what you propose will completely demote the release branch
>>> to the status of second-rate citizen, because it then becomes a
>>> burden.  That'd be a regression.
>>
>> Speaking for myself, a cherry-picking work flow would be less work, not
>> more work in general, because I normally use an Emacs from the master
>> branch.
> 
> Then it's good for you, but not for me: when a release is in progress,
> I work mainly on the release branch.
> 
> And of course, cherry-picking doesn't remove merge conflicts, they
> will still need to be resolved.

By the author of the change, that's the point.

So I also think it might justify the additional overhead of having to 
cherry-pick every change.

> We've been using the current workflow for years without any major
> problems.  Changing that now radically doesn't make sense to me.  It
> will most probably need several procedures to be modified that were
> stable for several releases, and I don't see the gains which would
> justify that.  We have enough real work on our hands.  So please let's
> not do that.

Do we have a volunteer who will take over from Glenn?



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:11             ` Eli Zaretskii
  2021-10-30 12:30               ` Dmitry Gutov
@ 2021-10-30 12:31               ` Lars Ingebrigtsen
  2021-10-30 12:48                 ` Eli Zaretskii
  1 sibling, 1 reply; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-30 12:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, stefan, monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> The people who commit things to master would also be tasked with
>> deciding whether to cherry-pick things for the release branch.
>
> That assumes they will want to, and will do a good job.

That's an assumption that doesn't change -- we assume that now, and we
continue to assume so in the future.

>> Speaking for myself, a cherry-picking work flow would be less work, not
>> more work in general, because I normally use an Emacs from the master
>> branch.
>
> Then it's good for you, but not for me: when a release is in progress,
> I work mainly on the release branch.

And you can continue to do so -- and cherry-pick commits to master.

> And of course, cherry-picking doesn't remove merge conflicts, they
> will still need to be resolved.

So that's neither more than less work than the merge based work flow --
but with the advantage that you're resolving one pick at a time instead
of the more overwhelming thing that can happen when merging and you get
conflicts from several commits at once.

> We've been using the current workflow for years without any major
> problems.  Changing that now radically doesn't make sense to me.  It
> will most probably need several procedures to be modified that were
> stable for several releases, and I don't see the gains which would
> justify that.  We have enough real work on our hands.  So please let's
> not do that.

What's changed is that Glenn is (understandably) no longer willing to do
the merges, so something has to change.  (Unless somebody else picks up
the slack, and we can continue as before.)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:30               ` Dmitry Gutov
@ 2021-10-30 12:32                 ` Eli Zaretskii
  2021-10-30 13:34                   ` dick
  2021-10-31 11:38                   ` Dmitry Gutov
  2021-10-30 16:33                 ` Eli Zaretskii
  1 sibling, 2 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-30 12:32 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: rgm, larsi, stefan, monnier, emacs-devel

> Cc: rgm@gnu.org, stefan@marxist.se, monnier@iro.umontreal.ca,
>  emacs-devel@gnu.org
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Sat, 30 Oct 2021 15:30:30 +0300
> 
> > And of course, cherry-picking doesn't remove merge conflicts, they
> > will still need to be resolved.
> 
> By the author of the change, that's the point.
> 
> So I also think it might justify the additional overhead of having to 
> cherry-pick every change.

Many authors don't have write access, though.

> > We've been using the current workflow for years without any major
> > problems.  Changing that now radically doesn't make sense to me.  It
> > will most probably need several procedures to be modified that were
> > stable for several releases, and I don't see the gains which would
> > justify that.  We have enough real work on our hands.  So please let's
> > not do that.
> 
> Do we have a volunteer who will take over from Glenn?

I hope we will; if not, then the usual suspect(s) will have to do it.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:31               ` Lars Ingebrigtsen
@ 2021-10-30 12:48                 ` Eli Zaretskii
  0 siblings, 0 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-30 12:48 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: rgm, stefan, monnier, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: monnier@iro.umontreal.ca,  rgm@gnu.org,  stefan@marxist.se,
>   emacs-devel@gnu.org
> Date: Sat, 30 Oct 2021 14:31:36 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> The people who commit things to master would also be tasked with
> >> deciding whether to cherry-pick things for the release branch.
> >
> > That assumes they will want to, and will do a good job.
> 
> That's an assumption that doesn't change -- we assume that now, and we
> continue to assume so in the future.

No, until now committers didn't have to merge to master, they just
committed to a single branch.

> >> Speaking for myself, a cherry-picking work flow would be less work, not
> >> more work in general, because I normally use an Emacs from the master
> >> branch.
> >
> > Then it's good for you, but not for me: when a release is in progress,
> > I work mainly on the release branch.
> 
> And you can continue to do so -- and cherry-pick commits to master.

That's a disadvantage, because Git will not help us track which
changes from the branch are on master (and vice versa).

> > And of course, cherry-picking doesn't remove merge conflicts, they
> > will still need to be resolved.
> 
> So that's neither more than less work than the merge based work flow --
> but with the advantage that you're resolving one pick at a time instead
> of the more overwhelming thing that can happen when merging and you get
> conflicts from several commits at once.

Conflicts are generally rare with Git, though.

> > We've been using the current workflow for years without any major
> > problems.  Changing that now radically doesn't make sense to me.  It
> > will most probably need several procedures to be modified that were
> > stable for several releases, and I don't see the gains which would
> > justify that.  We have enough real work on our hands.  So please let's
> > not do that.
> 
> What's changed is that Glenn is (understandably) no longer willing to do
> the merges, so something has to change.  (Unless somebody else picks up
> the slack, and we can continue as before.)

We haven't even tried to find a new volunteer yet.  You suggest that
we give up before we even try.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:32                 ` Eli Zaretskii
@ 2021-10-30 13:34                   ` dick
  2021-10-31 11:38                   ` Dmitry Gutov
  1 sibling, 0 replies; 47+ messages in thread
From: dick @ 2021-10-30 13:34 UTC (permalink / raw)
  Cc: emacs-devel

> I hope we will; if not, then the usual suspect(s) will have to do it.

Cue Borscht Belt rejoinder "What am I, chopped liver?"

https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg02270.html




^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 11:42           ` Lars Ingebrigtsen
@ 2021-10-30 13:42             ` Daniel Martín
  2021-10-30 20:32               ` Tassilo Horn
  0 siblings, 1 reply; 47+ messages in thread
From: Daniel Martín @ 2021-10-30 13:42 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Stefan Monnier, Glenn Morris, Stefan Kangas, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Daniel Martín <mardani29@yahoo.es> writes:
>
>> But this workflow is not exent of problems, though, because at the time
>> you cherry-pick it's possible that the change doesn't apply cleanly to
>> the emacs-28 branch.  In that case, you'll need to adapt the patch, and
>> possibly a maintainer would potentially need to review it again to see
>> if it's still safe enough for the release branch.
>
> Well, we depend upon people making that decision already -- when they're
> putting things into emacs-28 or master.

TBH, I don't think there's a "silver bullet" workflow, it depends on the
project, the participants, etc.  I presented some downsides of mine as
well, so you can decide if the trade-offs would make it less
time-consuming than the current one.  I suspect some of those trade-offs
are "invisible" until the workflow is put into practice and given some
time.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:30               ` Dmitry Gutov
  2021-10-30 12:32                 ` Eli Zaretskii
@ 2021-10-30 16:33                 ` Eli Zaretskii
  2021-10-30 21:36                   ` Dmitry Gutov
  2021-10-30 23:14                   ` Gregory Heytings
  1 sibling, 2 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-30 16:33 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: rgm, larsi, stefan, monnier, emacs-devel

> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Sat, 30 Oct 2021 15:30:30 +0300
> Cc: rgm@gnu.org, stefan@marxist.se, monnier@iro.umontreal.ca,
>  emacs-devel@gnu.org
> 
> > And of course, cherry-picking doesn't remove merge conflicts, they
> > will still need to be resolved.
> 
> By the author of the change, that's the point.

Btw, if this is what will make the situation better, we could merge ti
master immediately after pushing to the release branch, by the same
committer.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 13:42             ` Daniel Martín
@ 2021-10-30 20:32               ` Tassilo Horn
  0 siblings, 0 replies; 47+ messages in thread
From: Tassilo Horn @ 2021-10-30 20:32 UTC (permalink / raw)
  To: Daniel Martín
  Cc: Glenn Morris, Lars Ingebrigtsen, Stefan Kangas, Stefan Monnier,
	emacs-devel

Daniel Martín <mardani29@yahoo.es> writes:

> TBH, I don't think there's a "silver bullet" workflow, it depends on
> the project, the participants, etc.  I presented some downsides of
> mine as well, so you can decide if the trade-offs would make it less
> time-consuming than the current one.  I suspect some of those
> trade-offs are "invisible" until the workflow is put into practice and
> given some time.

That's true.  As an anecdote: we've tried a cherry-pick-based workflow
at my dayjob for some period.  Basically, (for each released and still
supported version) we've had a "pending", and a "release" branch.
Developers committed their fixes in the "pending" branch where the QA
would test them.  If the test was successful, the commit(s) where
cherry-picked into the "release" branch.

I can report that it didn't work out well.  Things that happend quite
often were:

- Some ticket had N commits but only N-M (M > 0) commits were
  cherry-picked.  And once you notice something's wrong, you have to go
  and diff diffs to find out which one is missing since the question has
  turned from "is commit 18a9ef4 reachable from this branch's HEAD" to
  "is there some commit with the same message and same diff"?
- The compile/CI broke because the cherry-picked commit X required stuff
  of commit Y which has not yet been cherry-picked because Y's test took
  longer than X's (or X has been prioritized over Y).
- Same as the last bullet point but worse: the compile still worked but
  the runtime behavior was wrong.

So in general, my gut feeling is that merging is preferable over
cherry-picking.  Even more so if the time between initial commit and
cherry-pick can become longer.

A policy which makes sense would be (as Stefan M. suggested, I think):
if you commit in emacs-<major>, immediately do a merge into master
afterwards (with -s ours if the fix is not appropriate for master).

Bye,
Tassilo



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 16:33                 ` Eli Zaretskii
@ 2021-10-30 21:36                   ` Dmitry Gutov
  2021-10-31  7:19                     ` Eli Zaretskii
  2021-10-30 23:14                   ` Gregory Heytings
  1 sibling, 1 reply; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-30 21:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, larsi, stefan, monnier, emacs-devel

On 30.10.2021 19:33, Eli Zaretskii wrote:
>> From: Dmitry Gutov<dgutov@yandex.ru>
>> Date: Sat, 30 Oct 2021 15:30:30 +0300
>> Cc:rgm@gnu.org,stefan@marxist.se,monnier@iro.umontreal.ca,
>>   emacs-devel@gnu.org
>>
>>> And of course, cherry-picking doesn't remove merge conflicts, they
>>> will still need to be resolved.
>> By the author of the change, that's the point.
> Btw, if this is what will make the situation better, we could merge ti
> master immediately after pushing to the release branch, by the same
> committer.

We can try making it a rule.

I think it has always been good form (esp. after making conflicting 
changes), but people are a little afraid on gitmerge.el.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 16:33                 ` Eli Zaretskii
  2021-10-30 21:36                   ` Dmitry Gutov
@ 2021-10-30 23:14                   ` Gregory Heytings
  2021-10-30 23:17                     ` Dmitry Gutov
  2021-10-31  7:20                     ` Eli Zaretskii
  1 sibling, 2 replies; 47+ messages in thread
From: Gregory Heytings @ 2021-10-30 23:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, stefan, emacs-devel, monnier, Dmitry Gutov, larsi


>
> Btw, if this is what will make the situation better, we could merge ti 
> master immediately after pushing to the release branch, by the same 
> committer.
>

This could be automated with a server-side hook, whose execution would 
depend on some tag in the commit message which would indicate whether the 
commit should or should not be merged into the trunk.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 23:14                   ` Gregory Heytings
@ 2021-10-30 23:17                     ` Dmitry Gutov
  2021-10-31  7:20                     ` Eli Zaretskii
  1 sibling, 0 replies; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-30 23:17 UTC (permalink / raw)
  To: Gregory Heytings, Eli Zaretskii; +Cc: rgm, larsi, stefan, monnier, emacs-devel

On 31.10.2021 02:14, Gregory Heytings wrote:
>>
>> Btw, if this is what will make the situation better, we could merge ti 
>> master immediately after pushing to the release branch, by the same 
>> committer.
>>
> 
> This could be automated with a server-side hook, whose execution would 
> depend on some tag in the commit message which would indicate whether 
> the commit should or should not be merged into the trunk.

If we had a functional and blessed CI service, one of the checks could 
verify that the release branch is merge-able to master (using 'git 
merge' or even 'gitmerge.el').

And if not, ask the author of the corresponding push to do the merge.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 21:36                   ` Dmitry Gutov
@ 2021-10-31  7:19                     ` Eli Zaretskii
  0 siblings, 0 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-31  7:19 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: rgm, larsi, stefan, monnier, emacs-devel

> Cc: larsi@gnus.org, rgm@gnu.org, stefan@marxist.se, monnier@iro.umontreal.ca,
>  emacs-devel@gnu.org
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Sun, 31 Oct 2021 00:36:51 +0300
> 
> >> By the author of the change, that's the point.
> > Btw, if this is what will make the situation better, we could merge ti
> > master immediately after pushing to the release branch, by the same
> > committer.
> 
> We can try making it a rule.
> 
> I think it has always been good form (esp. after making conflicting 
> changes), but people are a little afraid on gitmerge.el.

I see no reason to be afraid of gitmerge.el.  If there are no
conflicts (and most of the time there aren't), it "just works".  If
there are conflicts, then their resolution is outside of gitmerge.el's
scope anyway.

I guess those people should try using gitmerge.el once or twice in
their local clones, to convince themselves that there's no real
problem here.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 23:14                   ` Gregory Heytings
  2021-10-30 23:17                     ` Dmitry Gutov
@ 2021-10-31  7:20                     ` Eli Zaretskii
  2021-10-31  8:13                       ` Gregory Heytings
  2021-10-31 11:40                       ` Dmitry Gutov
  1 sibling, 2 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-31  7:20 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: rgm, stefan, emacs-devel, monnier, dgutov, larsi

> Date: Sat, 30 Oct 2021 23:14:00 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: Dmitry Gutov <dgutov@yandex.ru>, rgm@gnu.org, larsi@gnus.org, 
>     stefan@marxist.se, monnier@iro.umontreal.ca, emacs-devel@gnu.org
> 
> > Btw, if this is what will make the situation better, we could merge ti 
> > master immediately after pushing to the release branch, by the same 
> > committer.
> 
> This could be automated with a server-side hook, whose execution would 
> depend on some tag in the commit message which would indicate whether the 
> commit should or should not be merged into the trunk.

The problematic part of merging is when there are conflict, and that
cannot be done by the server.  If there are no conflicts, using
gitmerge.el is so simple it doesn't deserve any discussion.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31  7:20                     ` Eli Zaretskii
@ 2021-10-31  8:13                       ` Gregory Heytings
  2021-10-31 11:40                       ` Dmitry Gutov
  1 sibling, 0 replies; 47+ messages in thread
From: Gregory Heytings @ 2021-10-31  8:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, stefan, emacs-devel, monnier, dgutov, larsi


>>> Btw, if this is what will make the situation better, we could merge ti 
>>> master immediately after pushing to the release branch, by the same 
>>> committer.
>>
>> This could be automated with a server-side hook, whose execution would 
>> depend on some tag in the commit message which would indicate whether 
>> the commit should or should not be merged into the trunk.
>
> The problematic part of merging is when there are conflict, and that 
> cannot be done by the server.  If there are no conflicts, using 
> gitmerge.el is so simple it doesn't deserve any discussion.
>

It's simple, but IMO everything that can be automated should be automated. 
What I have in mind is this:

if push is not on <release branch> return
if tag is missing raise an error and return
if tag is "escape" do nothing (in case something must be done without running that server-hook script) and return
if tag is "do not merge" do a git merge -s ours <release branch> and return (this cannot fail)
if tag is "merge" try a git merge <release branch>; if that fails (which as you said happens rarely), print a message to ask the committer to use gitmerge.el; return



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-30 12:32                 ` Eli Zaretskii
  2021-10-30 13:34                   ` dick
@ 2021-10-31 11:38                   ` Dmitry Gutov
  2021-10-31 13:03                     ` Eli Zaretskii
  1 sibling, 1 reply; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-31 11:38 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, larsi, stefan, monnier, emacs-devel

On 30.10.2021 15:32, Eli Zaretskii wrote:
>> Cc:rgm@gnu.org,stefan@marxist.se,monnier@iro.umontreal.ca,
>>   emacs-devel@gnu.org
>> From: Dmitry Gutov<dgutov@yandex.ru>
>> Date: Sat, 30 Oct 2021 15:30:30 +0300
>>
>>> And of course, cherry-picking doesn't remove merge conflicts, they
>>> will still need to be resolved.
>> By the author of the change, that's the point.
>>
>> So I also think it might justify the additional overhead of having to
>> cherry-pick every change.
> Many authors don't have write access, though.
> 

The responsibility with fall on those who install the change, to no 
one's surprise.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31  7:20                     ` Eli Zaretskii
  2021-10-31  8:13                       ` Gregory Heytings
@ 2021-10-31 11:40                       ` Dmitry Gutov
  2021-10-31 12:58                         ` Gregory Heytings
  2021-10-31 14:46                         ` Lars Ingebrigtsen
  1 sibling, 2 replies; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-31 11:40 UTC (permalink / raw)
  To: Eli Zaretskii, Gregory Heytings; +Cc: rgm, larsi, stefan, monnier, emacs-devel

On 31.10.2021 10:20, Eli Zaretskii wrote:
>> Date: Sat, 30 Oct 2021 23:14:00 +0000
>> From: Gregory Heytings<gregory@heytings.org>
>> cc: Dmitry Gutov<dgutov@yandex.ru>,rgm@gnu.org,larsi@gnus.org,
>>      stefan@marxist.se,monnier@iro.umontreal.ca,emacs-devel@gnu.org
>>
>>> Btw, if this is what will make the situation better, we could merge ti
>>> master immediately after pushing to the release branch, by the same
>>> committer.
>> This could be automated with a server-side hook, whose execution would
>> depend on some tag in the commit message which would indicate whether the
>> commit should or should not be merged into the trunk.
> The problematic part of merging is when there are conflict, and that
> cannot be done by the server.  If there are no conflicts, using
> gitmerge.el is so simple it doesn't deserve any discussion.

A server-side check could be used to do the check "lazily" and only do 
one merge commit per day (or week, etc), rather than filling the master 
history with merge commits (where their ration to "real" commits could 
be approaching 100% if we ask everyone to merge right away).



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 11:40                       ` Dmitry Gutov
@ 2021-10-31 12:58                         ` Gregory Heytings
  2021-10-31 21:59                           ` Dmitry Gutov
  2021-10-31 14:46                         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 47+ messages in thread
From: Gregory Heytings @ 2021-10-31 12:58 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: rgm, stefan, emacs-devel, monnier, Eli Zaretskii, larsi


>
> A server-side check could be used to do the check "lazily" and only do 
> one merge commit per day (or week, etc), rather than filling the master 
> history with merge commits (where their ration to "real" commits could 
> be approaching 100% if we ask everyone to merge right away).
>

And why would that be a problem?  It's a commit to two branches, one 
branch has a merge commit for each commit on the other branch.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 11:38                   ` Dmitry Gutov
@ 2021-10-31 13:03                     ` Eli Zaretskii
  0 siblings, 0 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-31 13:03 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: rgm, larsi, stefan, monnier, emacs-devel

> Cc: larsi@gnus.org, rgm@gnu.org, stefan@marxist.se, monnier@iro.umontreal.ca,
>  emacs-devel@gnu.org
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Sun, 31 Oct 2021 14:38:26 +0300
> 
> On 30.10.2021 15:32, Eli Zaretskii wrote:
> >> Cc:rgm@gnu.org,stefan@marxist.se,monnier@iro.umontreal.ca,
> >>   emacs-devel@gnu.org
> >> From: Dmitry Gutov<dgutov@yandex.ru>
> >> Date: Sat, 30 Oct 2021 15:30:30 +0300
> >>
> >>> And of course, cherry-picking doesn't remove merge conflicts, they
> >>> will still need to be resolved.
> >> By the author of the change, that's the point.
> >>
> >> So I also think it might justify the additional overhead of having to
> >> cherry-pick every change.
> > Many authors don't have write access, though.
> > 
> 
> The responsibility with fall on those who install the change, to no 
> one's surprise.

My point is that in those cases resolving merge conflicts won't be
easier.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 11:40                       ` Dmitry Gutov
  2021-10-31 12:58                         ` Gregory Heytings
@ 2021-10-31 14:46                         ` Lars Ingebrigtsen
  2021-10-31 15:12                           ` Eli Zaretskii
  2021-10-31 22:00                           ` Merging release branch Dmitry Gutov
  1 sibling, 2 replies; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-31 14:46 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: rgm, stefan, emacs-devel, Gregory Heytings, monnier,
	Eli Zaretskii

Dmitry Gutov <dgutov@yandex.ru> writes:

> A server-side check could be used to do the check "lazily" and only do
> one merge commit per day (or week, etc), rather than filling the
> master history with merge commits (where their ration to "real"
> commits could be approaching 100% if we ask everyone to merge right
> away).

This reminds me -- another advantage to the cherry-picking approach is
that the "master" VC history remains clean and easy to understand, while
doing all these merges makes it full of noise.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 14:46                         ` Lars Ingebrigtsen
@ 2021-10-31 15:12                           ` Eli Zaretskii
  2021-10-31 15:15                             ` Lars Ingebrigtsen
  2021-10-31 22:00                           ` Merging release branch Dmitry Gutov
  1 sibling, 1 reply; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-31 15:12 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: rgm, stefan, emacs-devel, gregory, monnier, dgutov

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Sun, 31 Oct 2021 15:46:21 +0100
> Cc: rgm@gnu.org, stefan@marxist.se, emacs-devel@gnu.org,
>  Gregory Heytings <gregory@heytings.org>, monnier@iro.umontreal.ca,
>  Eli Zaretskii <eliz@gnu.org>
> 
> Dmitry Gutov <dgutov@yandex.ru> writes:
> 
> > A server-side check could be used to do the check "lazily" and only do
> > one merge commit per day (or week, etc), rather than filling the
> > master history with merge commits (where their ration to "real"
> > commits could be approaching 100% if we ask everyone to merge right
> > away).
> 
> This reminds me -- another advantage to the cherry-picking approach is
> that the "master" VC history remains clean and easy to understand, while
> doing all these merges makes it full of noise.

We've discussed this long ago and decided we didn't care.  The master
history cannot be clean anyway, because when there's a race between
two committers pushing at the same time, one of them will look like a
merge from a branch.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 15:12                           ` Eli Zaretskii
@ 2021-10-31 15:15                             ` Lars Ingebrigtsen
  2021-10-31 16:02                               ` Dealing with merge noise (was: Merging release branch) Kévin Le Gouguec
  0 siblings, 1 reply; 47+ messages in thread
From: Lars Ingebrigtsen @ 2021-10-31 15:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rgm, stefan, emacs-devel, gregory, monnier, dgutov

Eli Zaretskii <eliz@gnu.org> writes:

> We've discussed this long ago and decided we didn't care.  The master
> history cannot be clean anyway, because when there's a race between
> two committers pushing at the same time, one of them will look like a
> merge from a branch.

Not if the committers rebasing (which I do), but we've already been over
that.  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Dealing with merge noise (was: Merging release branch)
  2021-10-31 15:15                             ` Lars Ingebrigtsen
@ 2021-10-31 16:02                               ` Kévin Le Gouguec
  2021-10-31 18:19                                 ` Stefan Kangas
  0 siblings, 1 reply; 47+ messages in thread
From: Kévin Le Gouguec @ 2021-10-31 16:02 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> We've discussed this long ago and decided we didn't care.  The master
>> history cannot be clean anyway, because when there's a race between
>> two committers pushing at the same time, one of them will look like a
>> merge from a branch.
>
> Not if the committers rebasing (which I do), but we've already been over
> that.  :-)

(Not sure if this was suggested in past discussions, but maybe sticking
"--no-merges" in vc-git-log-switches can reduce the pain somewhat?)



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Dealing with merge noise (was: Merging release branch)
  2021-10-31 16:02                               ` Dealing with merge noise (was: Merging release branch) Kévin Le Gouguec
@ 2021-10-31 18:19                                 ` Stefan Kangas
  2021-10-31 18:31                                   ` Eli Zaretskii
  0 siblings, 1 reply; 47+ messages in thread
From: Stefan Kangas @ 2021-10-31 18:19 UTC (permalink / raw)
  To: Kévin Le Gouguec, Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:

> (Not sure if this was suggested in past discussions, but maybe sticking
> "--no-merges" in vc-git-log-switches can reduce the pain somewhat?)

You still want to know when emacs-28 was merged into master though.

The better solution is for everyone to just use "rebase" when they want
to push their own local work to master, and "merge" when merging from
emacs-28 or a feature branch.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Dealing with merge noise (was: Merging release branch)
  2021-10-31 18:19                                 ` Stefan Kangas
@ 2021-10-31 18:31                                   ` Eli Zaretskii
  0 siblings, 0 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-10-31 18:31 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: larsi, emacs-devel, kevin.legouguec

> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Sun, 31 Oct 2021 11:19:43 -0700
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
> 
> > (Not sure if this was suggested in past discussions, but maybe sticking
> > "--no-merges" in vc-git-log-switches can reduce the pain somewhat?)
> 
> You still want to know when emacs-28 was merged into master though.
> 
> The better solution is for everyone to just use "rebase" when they want
> to push their own local work to master, and "merge" when merging from
> emacs-28 or a feature branch.

We have decided long ago that we won't impose any restrictions on the
workflows people use, and allow both merges and rebases.  Whether or
not to rebase is a matter of personal preferences, many times
associated with strong feelings, and there's no need for us to bring
the disagreements about that into the project.  Allowing both styles
worked well for us since we switched to Git, so I see no reason to
deviate from that now.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 12:58                         ` Gregory Heytings
@ 2021-10-31 21:59                           ` Dmitry Gutov
  0 siblings, 0 replies; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-31 21:59 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: rgm, stefan, emacs-devel, monnier, Eli Zaretskii, larsi

On 31.10.2021 15:58, Gregory Heytings wrote:
> 
>>
>> A server-side check could be used to do the check "lazily" and only do 
>> one merge commit per day (or week, etc), rather than filling the 
>> master history with merge commits (where their ration to "real" 
>> commits could be approaching 100% if we ask everyone to merge right 
>> away).
>>
> 
> And why would that be a problem?  It's a commit to two branches, one 
> branch has a merge commit for each commit on the other branch.

More merge commits = more complex history = more effort one has to spent 
(sometimes) when reading it (busier 'git log --graph').

It's not a grave problem, but best to be avoided when we can.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-31 14:46                         ` Lars Ingebrigtsen
  2021-10-31 15:12                           ` Eli Zaretskii
@ 2021-10-31 22:00                           ` Dmitry Gutov
  1 sibling, 0 replies; 47+ messages in thread
From: Dmitry Gutov @ 2021-10-31 22:00 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: rgm, stefan, emacs-devel, Gregory Heytings, monnier,
	Eli Zaretskii

On 31.10.2021 17:46, Lars Ingebrigtsen wrote:
> This reminds me -- another advantage to the cherry-picking approach is
> that the "master" VC history remains clean and easy to understand, while
> doing all these merges makes it full of noise.

Good point, actually. While cherry-picking is an inherently "dirty" 
activity, neither the release branch nor the master branch will carry 
duplicate commits, so they aren't carried over to the future version.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-10-29 16:35 Merging release branch Glenn Morris
                   ` (2 preceding siblings ...)
  2021-10-29 17:08 ` dick
@ 2021-11-06  9:28 ` Eli Zaretskii
  2021-11-06 10:53   ` Stefan Kangas
  2021-11-06 16:11   ` Glenn Morris
  3 siblings, 2 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-11-06  9:28 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Date: Fri, 29 Oct 2021 12:35:22 -0400
> 
> 
> I've had enough of merging the release branch to master,
> so someone else will have to do it from now on.
> 
> I use admin/automerge from cron with a wrapper that:
> 1) first checks the release branch passed make check
> 2) passes "-n 1" if the last merge was more than 1 week ago

What's the procedure with merging commits that change etc/NEWS on the
release branch?  gitmerge.el insists on trying to merge those in
etc/NEWS for the next release, which is not TRT.  One could skip the
commits which change only etc/NEWS and then "merge" manually by
copying branch/etc/NEWS into trunk/etc/NEWS.28, but isn't there a
better way?  And why doesn't gitmerge.el do that automatically?



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-11-06  9:28 ` Eli Zaretskii
@ 2021-11-06 10:53   ` Stefan Kangas
  2021-11-06 16:14     ` Glenn Morris
  2021-11-06 16:11   ` Glenn Morris
  1 sibling, 1 reply; 47+ messages in thread
From: Stefan Kangas @ 2021-11-06 10:53 UTC (permalink / raw)
  To: Eli Zaretskii, Glenn Morris; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> What's the procedure with merging commits that change etc/NEWS on the
> release branch?  gitmerge.el insists on trying to merge those in
> etc/NEWS for the next release, which is not TRT.  One could skip the
> commits which change only etc/NEWS and then "merge" manually by
> copying branch/etc/NEWS into trunk/etc/NEWS.28, but isn't there a
> better way?  And why doesn't gitmerge.el do that automatically?

(I don't know how Glenn has done it until now.)

AFAIK, there is no strong need to name that file etc/NEWS until we
create a tarball or run "make install".  I think we should just keep the
file in etc/NEWS.NN even on the release branch.  That would avoid the
merging headache, and the file would also preserve its full history
between versions (no more moving the file).

If we want to do this, our build-scripts depend on there being an
etc/NEWS file, so they would need to be updated.



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-11-06  9:28 ` Eli Zaretskii
  2021-11-06 10:53   ` Stefan Kangas
@ 2021-11-06 16:11   ` Glenn Morris
  2021-11-06 17:19     ` Eli Zaretskii
  1 sibling, 1 reply; 47+ messages in thread
From: Glenn Morris @ 2021-11-06 16:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:

> What's the procedure with merging commits that change etc/NEWS on the
> release branch?

gitmerge.el does have special handling for NEWS (I wrote it).
https://debbugs.gnu.org/29366

git reset --hard 5a01383
emacs -Q -nw -l ./admin/gitmerge.el -f gitmerge
RET
m
y # "Try to fix NEWS conflict?"
y
y

works for me.

Surely you weren't saying "n" to "Try to fix NEWS conflict?"...



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-11-06 10:53   ` Stefan Kangas
@ 2021-11-06 16:14     ` Glenn Morris
  0 siblings, 0 replies; 47+ messages in thread
From: Glenn Morris @ 2021-11-06 16:14 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Eli Zaretskii, emacs-devel

Stefan Kangas wrote:

> (I don't know how Glenn has done it until now.)

Using the tools in the Emacs repository, and documented in eg
admin/notes/git-workflow

> AFAIK, there is no strong need to name that file etc/NEWS until we
> create a tarball or run "make install".  I think we should just keep the
> file in etc/NEWS.NN even on the release branch.  That would avoid the
> merging headache, and the file would also preserve its full history
> between versions (no more moving the file).

See previous discussions in eg
https://lists.gnu.org/r/emacs-devel/2017-12/msg00340.html
https://debbugs.gnu.org/29366



^ permalink raw reply	[flat|nested] 47+ messages in thread

* Re: Merging release branch
  2021-11-06 16:11   ` Glenn Morris
@ 2021-11-06 17:19     ` Eli Zaretskii
  0 siblings, 0 replies; 47+ messages in thread
From: Eli Zaretskii @ 2021-11-06 17:19 UTC (permalink / raw)
  To: Glenn Morris; +Cc: emacs-devel

> From: Glenn Morris <rgm@gnu.org>
> Cc: emacs-devel@gnu.org
> Date: Sat, 06 Nov 2021 12:11:12 -0400
> 
> Eli Zaretskii wrote:
> 
> > What's the procedure with merging commits that change etc/NEWS on the
> > release branch?
> 
> gitmerge.el does have special handling for NEWS (I wrote it).
> https://debbugs.gnu.org/29366
> 
> git reset --hard 5a01383
> emacs -Q -nw -l ./admin/gitmerge.el -f gitmerge
> RET
> m
> y # "Try to fix NEWS conflict?"
> y
> y
> 
> works for me.
> 
> Surely you weren't saying "n" to "Try to fix NEWS conflict?"...

No, I was saying "y" (I think), and then it would put me in a buffer
with conflicts, all of which were from trying to merge the branch's
NEWS into the master's.

I guess some debugging is in order.



^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2021-11-06 17:19 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-29 16:35 Merging release branch Glenn Morris
2021-10-29 16:42 ` Lars Ingebrigtsen
2021-10-29 17:01 ` Stefan Kangas
2021-10-29 18:10   ` Stefan Monnier
2021-10-29 18:26     ` Lars Ingebrigtsen
2021-10-29 18:52       ` Lars Ingebrigtsen
2021-10-29 19:55         ` Daniel Martín
2021-10-30 11:42           ` Lars Ingebrigtsen
2021-10-30 13:42             ` Daniel Martín
2021-10-30 20:32               ` Tassilo Horn
2021-10-29 19:58         ` Eli Zaretskii
2021-10-30 11:51           ` Lars Ingebrigtsen
2021-10-30 12:11             ` Eli Zaretskii
2021-10-30 12:30               ` Dmitry Gutov
2021-10-30 12:32                 ` Eli Zaretskii
2021-10-30 13:34                   ` dick
2021-10-31 11:38                   ` Dmitry Gutov
2021-10-31 13:03                     ` Eli Zaretskii
2021-10-30 16:33                 ` Eli Zaretskii
2021-10-30 21:36                   ` Dmitry Gutov
2021-10-31  7:19                     ` Eli Zaretskii
2021-10-30 23:14                   ` Gregory Heytings
2021-10-30 23:17                     ` Dmitry Gutov
2021-10-31  7:20                     ` Eli Zaretskii
2021-10-31  8:13                       ` Gregory Heytings
2021-10-31 11:40                       ` Dmitry Gutov
2021-10-31 12:58                         ` Gregory Heytings
2021-10-31 21:59                           ` Dmitry Gutov
2021-10-31 14:46                         ` Lars Ingebrigtsen
2021-10-31 15:12                           ` Eli Zaretskii
2021-10-31 15:15                             ` Lars Ingebrigtsen
2021-10-31 16:02                               ` Dealing with merge noise (was: Merging release branch) Kévin Le Gouguec
2021-10-31 18:19                                 ` Stefan Kangas
2021-10-31 18:31                                   ` Eli Zaretskii
2021-10-31 22:00                           ` Merging release branch Dmitry Gutov
2021-10-30 12:31               ` Lars Ingebrigtsen
2021-10-30 12:48                 ` Eli Zaretskii
2021-10-29 19:00       ` Stefan Monnier
2021-10-29 19:05         ` Lars Ingebrigtsen
2021-10-29 19:17           ` Stefan Monnier
2021-10-29 20:29           ` David Engster
2021-10-29 17:08 ` dick
2021-11-06  9:28 ` Eli Zaretskii
2021-11-06 10:53   ` Stefan Kangas
2021-11-06 16:14     ` Glenn Morris
2021-11-06 16:11   ` Glenn Morris
2021-11-06 17:19     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).