unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Giorgos Keramidas <keramida@ceid.upatras.gr>
To: Karl Fogel <kfogel@red-bean.com>
Cc: emacs-devel@gnu.org, Andreas Schwab <schwab@linux-m68k.org>,
	Kenichi Handa <handa@m17n.org>
Subject: Re: GNU Emacs is on Bazaar now.
Date: Tue, 29 Dec 2009 03:26:42 +0200	[thread overview]
Message-ID: <874ona1sfh.fsf@kobe.laptop> (raw)
In-Reply-To: <87skaug2jm.fsf@red-bean.com> (Karl Fogel's message of "Mon, 28 Dec 2009 17:24:29 -0500")

On Mon, 28 Dec 2009 17:24:29 -0500, Karl Fogel <kfogel@red-bean.com> wrote:
>Andreas Schwab <schwab@linux-m68k.org> writes:
>>Karl Fogel <kfogel@red-bean.com> writes:
>>> A separate question is, is this a *good* procedure for quick fixes?
>>
>> Just commit and push them.  There is no point in using a special branch.
>
> Andreas, have you read BzrForEmacsDevs?
>
> In the scenario there, 'trunk' is a bound branch.  So this would be
> only a 'commit', no need for a separate command to push.  (But I'd
> feel more comfortable if you checked over the entire procedure
> documented there, to make sure there are no other problems lurking in
> the wings if one uses the 'trunk' branch, as currently set up, for
> direct development of quick fixes.)

One of the things that seem annoying when people make small changes
using a DVCS is the merge step that is required if the remote trunk has
already moved on.  It seems silly to have merge commits for tiny and
simple commits that modify a few lines in one place.  The inevitable
"merge pollution" of the branch history can be avoided most of the time
by 'rebasing' the changes inside the quickfixes branch before pulling
them into the trunk.

The 'rebase' plugin of bazaar[1] may help a lot with this sort of
workflow.  Using this plugin one can keep making small changes in the
quick fixes, testing them outside of the bound 'trunk' copy and then
pulling into the local & bound trunk when they are done, FSVO "done".

[1] http://wiki.bazaar.canonical.com/Rebase

Installing and using the rebase plugin is easy on UNIX.  One can start
by making a ~/.bazaar/plugins directory and copying the rebase plugin
itself inside it:

    $ mkdir ~/.bazaar/plugins
    $ cd ~/.bazaar/plugins
    $ bzr branch http://people.samba.org/bzr/jelmer/bzr-rebase/trunk rebase

This will install and make visible a few new commands:

    $ bzr help commands | grep '^rebase'
    rebase                  Re-base a branch. [rebase]
    rebase-abort            Abort an interrupted rebase. [rebase]
    rebase-continue         Continue an interrupted rebase after resolving
    rebase-foreign          Rebase revisions based on a branch created with a
    rebase-todo             Print list of revisions that still need to be replayed
    $

Now small changes can be committed to the quickfixes branch as described
in BzrForEmacsDevs.  When the small change is committed to 'quickfixes',
we can now:

  * Pull any trunk changes from savannah

        $ cd ../trunk
        $ bzr pull

  * Go back into the 'quickfixes' branch and rebase the small change on
    top of the latest local trunk (which should be up-to-date with the
    savannah copy of the same branch now):

        $ cd ../quickfixes
        $ bzr rebase

If all goes well the local change of 'quickfixes' will be rebased on top
of the trunk, eliminating the need of "bzr merge" for such a small
commit.  In this case bazaar will report something like:

    Committing to: ~/bzr/emacs/quickfixes/
    modified lisp/foo.el
    Committed revision 105601.

If there are conflicts, rebase will temporarily stop and leave conflict
markers in the files that require manual intervention.  After editing
the files and resolving the conflicts, one can run:

    $ bzr resolve lisp/foo.el
    $ bzr rebase-continue

I personally find this sort of workflow a bit useful when dealing with
tiny changesets.  The final branch history of trunk is going to be much
"cleaner" if we don't have thousands of tiny changesets followed by a
merge commit after each small one.  But this is just a personal choice
and it is heavily influenced by my experience with changeset rebasing in
other DVCS's.





  reply	other threads:[~2009-12-29  1:26 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-27 22:55 GNU Emacs is on Bazaar now Karl Fogel
2009-12-28  6:46 ` Kenichi Handa
2009-12-28  6:55   ` Karl Fogel
2009-12-28  8:07     ` Kenichi Handa
2009-12-28  8:52       ` Andreas Schwab
2009-12-28 11:41         ` Juanma Barranquero
2009-12-28 11:45         ` Kenichi Handa
2009-12-28 12:08           ` Juanma Barranquero
2009-12-28 13:10             ` Kenichi Handa
2009-12-28 12:09           ` Andreas Schwab
2009-12-28 13:22             ` Xavier Maillard
2009-12-28 13:51           ` Stephen J. Turnbull
2009-12-28 14:42             ` Juanma Barranquero
2009-12-28  9:19   ` Andreas Schwab
2009-12-28 11:44     ` Juanma Barranquero
2009-12-28 11:47     ` Kenichi Handa
2009-12-28 12:06       ` Andreas Schwab
2009-12-28 13:08         ` Kenichi Handa
2009-12-28 19:59           ` Andreas Schwab
2009-12-28 21:27             ` Karl Fogel
2009-12-28 22:16               ` Andreas Schwab
2009-12-28 22:24                 ` Karl Fogel
2009-12-29  1:26                   ` Giorgos Keramidas [this message]
2009-12-29  2:08                     ` Juanma Barranquero
2009-12-29  2:26                       ` Giorgos Keramidas
2009-12-28 22:30                 ` Óscar Fuentes
2009-12-28 22:41                   ` Karl Fogel
2009-12-28 23:14                     ` Óscar Fuentes
2009-12-29  1:17                       ` Karl Fogel
2009-12-29  2:12                         ` Óscar Fuentes
2009-12-29  1:57                       ` Stephen J. Turnbull
2009-12-29  2:00                         ` Karl Fogel
2009-12-29  2:16                         ` Óscar Fuentes
2009-12-29  4:32                           ` Stephen J. Turnbull
2009-12-29  4:46                             ` Óscar Fuentes
2009-12-29  7:25                               ` Kevin Rodgers
2009-12-29 10:27                               ` Juanma Barranquero
2009-12-29 15:54                                 ` Karl Fogel
2009-12-29 16:01                                   ` Juanma Barranquero
2009-12-29 16:15                                   ` Óscar Fuentes
2009-12-29 18:08                                   ` Eli Zaretskii
2009-12-29 18:09                                     ` Juanma Barranquero
2009-12-29 18:47                                       ` Eli Zaretskii
2009-12-29 18:13                                     ` Chong Yidong
2009-12-29 18:36                                       ` Eli Zaretskii
2009-12-29 18:54                                         ` Karl Fogel
2009-12-29 20:06                                           ` Eli Zaretskii
2009-12-29 20:14                                             ` Karl Fogel
2009-12-31  8:18                                               ` Stephen J. Turnbull
2009-12-31  8:29                                                 ` Óscar Fuentes
2009-12-31  9:26                                                   ` Miles Bader
2009-12-31  8:44                                                 ` Miles Bader
2010-01-01  8:41                                                   ` Stephen J. Turnbull
2009-12-31  5:57                                       ` Stephen J. Turnbull
2009-12-31  6:36                                         ` Óscar Fuentes
2010-01-01  9:21                                           ` Stephen J. Turnbull
2010-01-01  9:48                                             ` Óscar Fuentes
2009-12-31 11:33                                         ` Chong Yidong
2009-12-29  1:47                   ` Stephen J. Turnbull
2009-12-29  2:38                     ` Óscar Fuentes
2009-12-29  4:38                       ` Stephen J. Turnbull
2009-12-29  4:58                         ` Óscar Fuentes
2009-12-31  5:54                           ` Stephen J. Turnbull
2009-12-31  5:58                             ` Miles Bader
2009-12-31  6:02                             ` Dan Nicolaescu
2010-01-01 11:22                               ` Stephen J. Turnbull
2009-12-31  6:33                             ` Óscar Fuentes
2009-12-31  6:51                               ` Miles Bader
2010-01-01 10:01                               ` Stephen J. Turnbull
2010-01-01 10:19                                 ` Óscar Fuentes
2009-12-29  6:14                       ` Karl Fogel
2009-12-29  7:23                         ` Óscar Fuentes
2009-12-28 19:19 ` Eli Zaretskii
2009-12-28 20:00   ` Andreas Schwab
2009-12-28 20:17     ` Eli Zaretskii
2009-12-29 18:00   ` James Cloos
2009-12-29 19:40     ` Óscar Fuentes
2009-12-29 20:02       ` Eli Zaretskii
2009-12-29 20:55       ` James Cloos
2009-12-29 21:30         ` Óscar Fuentes

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=874ona1sfh.fsf@kobe.laptop \
    --to=keramida@ceid.upatras.gr \
    --cc=emacs-devel@gnu.org \
    --cc=handa@m17n.org \
    --cc=kfogel@red-bean.com \
    --cc=schwab@linux-m68k.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).