unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Steinar Bang <sb@dod.no>
To: emacs-devel@gnu.org
Subject: Re: State of the repository conversion
Date: Thu, 20 Mar 2014 09:07:41 +0100	[thread overview]
Message-ID: <upzc7g7ps376.fsf@dod.no> (raw)
In-Reply-To: 87k3bp9up9.fsf@mid.deneb.enyo.de

>>>>> Florian Weimer <fw@deneb.enyo.de>:

> This complicates the history of the master branch.  It is not clear if
> it adds any useful information,

It makes later merges more likely to only contain the relevant changes.

And the merge happens at a time where I can remember what was done and
what the changes should be.

That is useful information the way I see it.

> especially if there is no expectation of ever doing development on
> release branches and merge this development back to the master branch
> later.

Like I said, the pattern that works well for me, and gives a nice
history on the file level, and the "git blame" level, is to do the fix
on the earliest release branch were it is relevant, and then merge it
forward. 

But that requires that the master is kept in sync with cherry picks
applied to the release branches.  If it isn't, the merge results can be
strange, and it can be challenging to see what has happened (not
impossible, and as long as nothing is committed or pushed, recovery is
easy).

> Tool support is generally better if you make the change in the oldest
> supported release branch and merge that forward, but in practice, this
> doesn't work that well.  Often, you don't know for sure what the
> oldest release branch that needs the change is.

True.  So one always end up with some cherry picks. 

> And from a general engineering point of view, it is better to develop
> the best fix possible on the master branch, test it, and then start
> backporting it, taking shortcuts as necessary.

Er... no.  It's not possible to generalize like that. For one particular
fix this may have been the right approach.  For another it may not.

Basically, the way important release fixes have come to me, they have
been reported as bugs against the released version, and then I naturally
start with the release branch for that version, and figure out the
problem, and do the fix.

Once that fix is complete and pushed (released as a patch, or as a new
version or whatever, and sent to the customer), I look at if the fix is
relevant in master and later releases.  If the code has changed little
enough that a merge seems to be possible, I merge the older release
branches forward.

In many fixes, this is the case.

If the code has changed so much that a merge isn't possible I try to
figure out if the bug is still present in the master branch, and if it
is, how to best fix it (it may be a completely different fix to what was
done in the release branch).

> If you do it in the other order, you tend to end up with a suboptimal
> change in the master branch.

Only if you merge blindly and assume that the fix will be correct for
all versions.

> And the development history becomes really, really complicated, too.

In what way? Could you be specific?




  reply	other threads:[~2014-03-20  8:07 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-19 17:51 State of the repository conversion Eric S. Raymond
2014-03-19 18:14 ` Paul Eggert
2014-03-19 18:31 ` Eli Zaretskii
2014-03-19 18:54   ` Eric S. Raymond
2014-03-19 19:17     ` Eli Zaretskii
2014-03-20  0:08       ` Stephen J. Turnbull
2014-03-20  0:32         ` Eric S. Raymond
2014-03-20  1:01         ` Óscar Fuentes
2014-03-20  3:55           ` Eli Zaretskii
2014-03-20  4:09             ` Óscar Fuentes
2014-03-20  7:06               ` David Engster
2014-03-20  7:49                 ` Steinar Bang
2014-03-20 16:35                   ` Eli Zaretskii
2014-03-20 12:42                 ` Óscar Fuentes
2014-03-20 14:03                   ` Stefan
2014-03-20 15:09                     ` Óscar Fuentes
2014-03-20 16:13               ` Eli Zaretskii
2014-03-20 20:23                 ` Steinar Bang
2014-03-20  4:04         ` Eli Zaretskii
2014-03-20  4:25           ` Óscar Fuentes
2014-03-20  4:59             ` Stefan
2014-03-20  7:36               ` Steinar Bang
2014-03-20  7:48                 ` Florian Weimer
2014-03-20  8:07                   ` Steinar Bang [this message]
2014-03-20 16:19               ` Eli Zaretskii
2014-03-20 18:02                 ` Stefan
2014-03-20 18:09                   ` David Kastrup
2014-03-20 20:35                     ` Steinar Bang
2014-03-20 18:15                   ` Eli Zaretskii
2014-03-20 18:44                     ` Stefan
2014-03-20 20:17                       ` Eli Zaretskii
2014-03-20 20:30                 ` Steinar Bang
2014-03-20 20:39                   ` Eli Zaretskii
2014-03-20 21:10                     ` Steinar Bang
2014-03-21  7:46                       ` Eli Zaretskii
2014-03-21 12:40                         ` Stefan
2014-03-21 12:57                           ` Steinar Bang
2014-03-21 16:08                           ` Eli Zaretskii
2014-03-21 17:02                             ` David Kastrup
2014-03-21 18:35                               ` Eli Zaretskii
2014-03-21 19:01                                 ` David Caldwell
2014-03-20 16:17             ` Eli Zaretskii
2014-03-20 19:28               ` Óscar Fuentes
2014-03-20 20:19                 ` Eli Zaretskii
2014-03-20 20:31                   ` Óscar Fuentes
2014-03-20 20:40                     ` Eli Zaretskii
2014-03-20 20:46                       ` Óscar Fuentes
2014-03-21  3:02           ` Stephen J. Turnbull
2014-03-21  8:01             ` Eli Zaretskii
2014-03-22  7:18       ` Stefan-W. Hahn
2014-03-19 21:25 ` Andreas Schwab
2014-03-20  3:49   ` Eli Zaretskii
2014-03-20  7:46     ` Steinar Bang
2014-03-20 16:09       ` Glenn Morris
2014-03-20 20:17         ` Steinar Bang
2014-03-20 20:21           ` Eli Zaretskii
2014-03-20 16:33       ` Eli Zaretskii
2014-03-20 21:00         ` Steinar Bang
2014-03-21  9:08           ` Eli Zaretskii
2014-03-21  9:38             ` Andreas Schwab
2014-03-21  9:53             ` Steinar Bang
2014-03-21 10:17               ` Eli Zaretskii
2014-03-21 12:30                 ` Steinar Bang
2014-03-20 18:19     ` Andreas Schwab
2014-03-20 18:27       ` Eli Zaretskii

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=upzc7g7ps376.fsf@dod.no \
    --to=sb@dod.no \
    --cc=emacs-devel@gnu.org \
    /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.
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).