From: "Shawn O. Pearce" <spearce@spearce.org>
To: Jakub Narebski <jnareb@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] Contribute a fairly paranoid update hook
Date: Fri, 20 Apr 2007 23:39:20 -0400 [thread overview]
Message-ID: <20070421033920.GC17480@spearce.org> (raw)
In-Reply-To: <f0bk15$c8m$1@sea.gmane.org>
Jakub Narebski <jnareb@gmail.com> wrote:
> Shawn O. Pearce wrote:
>
> > I also recently hacked some semi-useful features into gitweb.cgi.
...
> If I can ask: what features?
I added a "pending" action and link in the top navigation bar.
This page shows all of the topic branches that:
- match a particular prefix string
(e.g. "heads/test/pending/");
- has commits not reachable through refs matching another prefix
(e.g. "heads/test/approved/")
- has commits not reachable through another specific ref
(e.g. "heads/test/current").
These branches are sorted by name and show under their title a
shortlog of the "new commits" that aren't reachable by the latter
two sets of refs.
Sometimes branches fully contain another; these are identified under
both branches. When this happens commits are only shown under one
of the two listings.
Here's a rough ASCII approximation of the pending page:
fix1:
Also bundled within:
* set-of-fixes
Shawn Pearce don't be stupid, delete temp files
fix2:
Also bundled within:
* set-of-fixes
Shawn Pearce don't leak printer handles
set-of-fixes:
Includes topics:
* fix1:
* fix2:
Stewie Griffin Merge 'tiny-fix1'
Stewie Griffin Merge 'tiny-fix2'
Glenn Quagmire Improve performance by sucking less
Each topic branch also has an "approve" link, which uses an "approve"
action to copy the branch (err, create a new branch with update-ref)
into the "heads/test/approved/" namespace. This causes them to
fall out of the "pending" page when it reloads.
The approved page shows topics matching the "heads/test/approved/"
page, but that have commits not in "heads/test/current". It looks
exactly like the pending page above, but has an "unapprove" link
to delete the ref from the "heads/test/approved/" directory.
Why?
Managers and testers want to choose the topic branches they will be
including into the next release, and they don't make that decision
until just before they ask the build manager to start creating
the build. This gitweb interface lets them see the topics that
are ready for building, and make their selections.
The build manager can then sweep the entire "heads/test/approved/"
directory and merge everything not already merged into the current
branch. Of course if a merge fails, or a compile fails, the build
manager stops and throws the mess back at the development team.
Bad merges or build failures happen less often than you might expect,
as we do have fairly good isolation between our topic branches.
During some periods of the year we don't think twice about using the
octopus driver to merge topics, and will merge 30+ topics at a clip
in just a minute or two, because they are all unrelated and isolated
changes that management has asked to go into a single release.
Most of the above code is actually fairly well isolated in
gitweb.cgi. It turns out it was quite easy to add what I needed,
and to reuse a lot of the existing code. I'll probably be able to
clean it up well enough to submit a patch. Might take a few weeks.
--
Shawn.
prev parent reply other threads:[~2007-04-21 3:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-20 6:08 [PATCH] Contribute a fairly paranoid update hook Shawn O. Pearce
2007-04-20 10:45 ` Junio C Hamano
2007-04-20 14:59 ` Shawn O. Pearce
2007-04-20 17:27 ` Junio C Hamano
2007-04-21 0:01 ` Jakub Narebski
2007-04-21 3:39 ` Shawn O. Pearce [this message]
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=20070421033920.GC17480@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
/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.
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 NNTP newsgroup(s).