all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org, monnier@iro.umontreal.ca, dgutov@yandex.ru
Subject: Re: RCS, again: another removed functionality: undo last-checkin
Date: Mon, 21 Sep 2015 10:13:25 +0200	[thread overview]
Message-ID: <876134favu.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <83k2rknr2c.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 21 Sep 2015 10:56:43 +0300")

Eli Zaretskii <eliz@gnu.org> writes:

>> From: David Kastrup <dak@gnu.org>
>> Cc: Dmitry Gutov <dgutov@yandex.ru>, monnier@iro.umontreal.ca,
>> emacs-devel@gnu.org
>> Date: Mon, 21 Sep 2015 09:25:33 +0200
>> 
>> > If the commit was already pushed, you will need "git revert" instead,
>> > I think.
>> 
>> That depends on whether you are working on a branch considered to have
>> dependable commits or a preparatory/review branch.  People are expected
>> to deal with warped histories on preparatory branches.  As an example,
>> LilyPond works with a "staging" branch and a "master" branch.  "master"
>> only moves forward: once a commit is in there, it stays.  If its effects
>> are to be annulled, it is reverted.  Nobody pushes to master though.
>> Any changes are instead pushed to staging.  An automated task picks up
>> staging every few hours and if it has progressed ahead of master, it
>> makes a complete build of the state of staging, a documentation build, a
>> run of all regtests, and when all of that succeeds, it pushes the tested
>> state on top of master (only as a fast-forward, otherwise it fails.  And
>> it also tests that the current state of staging is the same or strictly
>> ahead of the tested state, so you can "stop the clock" any time before
>> the automated tests finish).  Every few months, someone will push
>> something to staging that does not pass the whole tests and builds.  In
>> that case the machinery stops before pushing anything to master, and
>> staging needs to be cleaned up.  This is not done with reverts but by
>> resetting the branch appropriately in spite of it being a public branch.
>> 
>> That's because people are expected not to maintain their personal
>> versions of the "staging" branch from which dropped changes could be
>> reintroduced.
>
> Thanks, but would this mean that "git revert" for a commit pushed to
> the "staging" branch would be wrong?  If so, can you explain why?

It depends on whether the commit has moved to master already.  If it
has, revert is the only option.  If you noticed a mistake and want to
stop the commit from reaching master, you have to act fast enough that
the automated process will not make it progress into master.  If the
commit has been stopped by the automated process, you definitely do not
want to add a revert on top of it to staging and have the combined
commit+revert reach master.

Why don't we want commits breaking builds/regtests to reach master?  For
one thing, everything stops working for every developer, even people
working on entirely different parts of LilyPond.  If the catastrophe
stays confined to staging, people can still work on their personal
branches and repositories based on current master confidently.  They
have to wait until staging gets sorted out before they can _push_ again,
but their own work is not disrupted.

Apart from the temporary nuisance (for which the difference between
rewind/revert in staging does not really count: either fix will arrive
once it is made), "git bisect" is an important tool for finding problems
in history.  If parts of the master history do not even compile, that's
a total nuisance for figuring out when something started to go wrong.

So if our testing procedure gives us equal opportunity to revert or undo
a commit that causes the build to fail, choosing the undo means that the
resulting history is more useful for future detective work.  It also
makes less noise for things like "git blame".

-- 
David Kastrup



  reply	other threads:[~2015-09-21  8:13 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-20 14:33 RCS, again: another removed functionality: undo last-checkin Uwe Brauer
2015-09-20 14:51 ` Eli Zaretskii
2015-09-20 14:58   ` Eli Zaretskii
2015-09-20 15:39     ` Uwe Brauer
2015-09-21  3:49       ` Stephen J. Turnbull
2015-09-25  7:53         ` Uwe Brauer
2015-09-20 15:40   ` Uwe Brauer
2015-09-20 16:30 ` Stefan Monnier
2015-09-20 19:59   ` Uwe Brauer
2015-09-20 20:01   ` Uwe Brauer
2015-09-20 23:24   ` Dmitry Gutov
2015-09-21  6:50     ` Eli Zaretskii
2015-09-21  7:25       ` David Kastrup
2015-09-21  7:56         ` Eli Zaretskii
2015-09-21  8:13           ` David Kastrup [this message]
2015-09-21  8:16             ` Eli Zaretskii
2015-09-21  8:27               ` David Kastrup
2015-09-21  8:37                 ` Eli Zaretskii
2015-09-21  8:58                   ` David Kastrup
2015-09-21  9:42                     ` Eli Zaretskii
2015-09-21 10:18                       ` David Kastrup
2015-09-21 10:21                       ` Bastian Beischer
2015-09-22  6:56           ` Richard Stallman
2015-09-22 11:49             ` Stephen J. Turnbull
2015-09-22 22:02               ` Richard Stallman
2015-09-22 22:49                 ` Óscar Fuentes
2015-09-23  6:40                   ` Eli Zaretskii
2015-09-23  7:18                     ` David Kastrup
2015-09-23  8:28                     ` Stephen J. Turnbull
2015-09-23  9:54                       ` Eli Zaretskii
2015-09-23 22:09                   ` Richard Stallman
2015-09-23  5:36                 ` Dmitry Gutov
2015-09-23  6:52                   ` Eli Zaretskii
2015-09-23 13:26                   ` Stefan Monnier
2015-09-23 13:39                     ` Eli Zaretskii
2015-09-23 15:02                       ` Stefan Monnier
2015-09-23 15:13                         ` David Kastrup
2015-09-23 15:31                           ` Andreas Schwab
2015-09-23 14:38                     ` Stephen J. Turnbull
2015-09-23 14:59                     ` Dmitry Gutov
2015-09-23 15:21                       ` Stefan Monnier
2015-09-23 15:27                         ` Dmitry Gutov
2015-09-23 17:33                           ` Stefan Monnier
2015-09-30  2:27                             ` Dmitry Gutov
2015-09-30  4:53                               ` Stefan Monnier
2015-09-30  6:46                                 ` Eli Zaretskii
2015-09-30  8:37                                   ` Stefan Monnier
2015-09-30  8:52                                     ` Eli Zaretskii
2015-09-30 11:35                                       ` Dmitry Gutov
2015-09-30 12:39                                         ` Stefan Monnier
2015-10-01  2:22                                           ` Richard Stallman
2015-10-01  2:32                                             ` Dmitry Gutov
2015-10-02  2:27                                               ` Richard Stallman
2015-10-02  6:37                                                 ` Dmitry Gutov
2015-10-02  7:17                                                   ` Andreas Schwab
2015-10-02  7:38                                                   ` Eli Zaretskii
2015-10-03  1:37                                                   ` Richard Stallman
2015-10-02  6:56                                                 ` Eli Zaretskii
2015-10-03  1:37                                                   ` Richard Stallman
2015-09-30 14:00                                         ` Eli Zaretskii
2015-10-01  2:34                                           ` Dmitry Gutov
2015-10-01  7:06                                             ` Eli Zaretskii
2015-10-01 19:43                                               ` Dmitry Gutov
2015-10-01 19:59                                                 ` Eli Zaretskii
2015-10-01 20:06                                                   ` Dmitry Gutov
2015-10-01 20:12                                                     ` Eli Zaretskii
2015-10-01 20:22                                                       ` Dmitry Gutov
     [not found]                                                         ` <83a8s28gun.fsf@gnu.org>
2015-10-01 21:01                                                           ` Alan Mackenzie
2015-10-01 21:04                                                             ` Dmitry Gutov
2015-10-01 21:01                                                           ` Dmitry Gutov
2015-10-02  6:32                                                             ` Eli Zaretskii
2015-10-02  6:41                                                               ` Dmitry Gutov
2015-10-02  7:39                                                                 ` Eli Zaretskii
2015-09-30 12:38                                       ` Stefan Monnier
2015-10-02  2:27                                         ` Richard Stallman
2015-10-02  2:27                                   ` Richard Stallman
2015-10-02  2:24                                 ` Richard Stallman
2015-10-02  3:34                                   ` Stefan Monnier
2015-10-02  7:11                                     ` Eli Zaretskii
2015-10-02 12:54                                       ` Stefan Monnier
2015-10-02 13:42                                         ` Eli Zaretskii
2015-10-02 14:32                                           ` Dmitry Gutov
2015-10-02 14:40                                             ` Eli Zaretskii
2015-10-02 14:54                                               ` Dmitry Gutov
2015-10-02 14:59                                                 ` Eli Zaretskii
2015-10-02 15:44                                                   ` Stefan Monnier
2015-10-02 16:32                                                   ` Dmitry Gutov
2015-09-30  6:37                               ` Eli Zaretskii
2015-09-30 11:27                                 ` Dmitry Gutov
2015-09-30 14:13                                   ` Eli Zaretskii
2015-10-01  2:47                                     ` Dmitry Gutov
2015-10-01  7:18                                       ` Eli Zaretskii
2015-10-01 12:54                                         ` Dmitry Gutov
2015-10-01 13:07                                           ` Eli Zaretskii
2015-10-01 17:36                                             ` Dmitry Gutov
2015-10-01 17:52                                               ` Eli Zaretskii
2015-10-01 19:29                                                 ` Dmitry Gutov
2015-10-01 19:54                                                   ` Eli Zaretskii
2015-10-01 20:13                                                     ` Dmitry Gutov
2015-10-01 23:55                                               ` Drew Adams
2015-10-02  0:07                                                 ` Dmitry Gutov
2015-10-02  6:16                                                   ` Drew Adams
2015-10-02  2:27                                             ` Richard Stallman
2015-10-02  4:07                                               ` Dmitry Gutov
2015-10-02  4:13                                               ` Dmitry Gutov
2015-09-23 19:03                     ` Uwe Brauer
2015-09-23 22:12                     ` Richard Stallman
2015-09-25  8:29                       ` Uwe Brauer
2015-09-26  1:10                         ` Richard Stallman
2015-09-23 22:10                   ` Richard Stallman
2015-09-25  8:30                     ` Uwe Brauer
2015-09-23  6:37                 ` Eli Zaretskii
2015-09-21 13:13         ` Stefan Monnier
2015-09-21 13:59           ` David Kastrup
2015-09-21 18:39           ` Stefan Monnier
2015-09-21 14:02       ` Dmitry Gutov
2015-09-21 16:07         ` Eli Zaretskii
2015-09-21 16:58           ` Dmitry Gutov
2015-09-21 17:06             ` Eli Zaretskii
2015-09-21 17:24               ` Dmitry Gutov
2015-09-21 19:17                 ` Eli Zaretskii
2015-09-21 19:30                   ` David Kastrup
2015-09-21 19:33                   ` Dmitry Gutov
2015-09-21 19:53                     ` Eli Zaretskii
2015-09-22  0:39                       ` Stephen J. Turnbull
2015-09-22  6:18                         ` Eli Zaretskii
2015-09-22 13:08                       ` Dmitry Gutov
2015-09-22 13:45                         ` Eli Zaretskii
2015-09-22 18:59                           ` Dmitry Gutov
2015-09-22 19:05                             ` Eli Zaretskii
2015-09-23  5:54                               ` Dmitry Gutov
2015-09-23  6:58                                 ` Eli Zaretskii
2015-09-23 14:49                                   ` Dmitry Gutov
2015-09-23 22:08                               ` Richard Stallman
2015-09-21 19:18                 ` Eli Zaretskii
2015-09-22  0:26                   ` Stephen J. Turnbull
2015-09-22  6:16                     ` Eli Zaretskii
2015-09-22 12:32                       ` Stefan Monnier
2015-09-22  6:32                     ` Steinar Bang
2015-09-20 17:09 ` Steinar Bang

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=876134favu.fsf@fencepost.gnu.org \
    --to=dak@gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.