From: James Hogan <james.hogan@imgtec.com>
To: Josh Triplett <josh@joshtriplett.org>
Cc: ksummit-discuss@lists.linuxfoundation.org
Subject: Re: [Ksummit-discuss] [ANNOUNCE] git-series: track changes to a patch series over time
Date: Fri, 29 Jul 2016 16:26:51 +0100 [thread overview]
Message-ID: <20160729152651.GA1302@jhogan-linux.le.imgtec.org> (raw)
In-Reply-To: <20160729075039.GA26402@x>
[-- Attachment #1: Type: text/plain, Size: 4633 bytes --]
Hi Josh,
On Fri, Jul 29, 2016 at 12:50:39AM -0700, Josh Triplett wrote:
> I'd like to announce a project I've been working on for a while. I sent
> this announcement to LKML, but since many people don't subscribe to LKML
> directly, and since ksummit-discuss has had several discussions
> specifically about patch workflow and development processes, I thought
> I'd send the announcement here as well, in case anyone found it useful
> for their workflow.
>
> git-series provides a tool for managing patch series with git, tracking
> the "history of history". git series tracks changes to the patch series
> over time, including rebases and other non-fast-forwarding changes. git
> series also tracks a cover letter for the patch series, formats the
> series for email, and prepares pull requests.
>
> This makes it easier to collaborate on a patch series, distribution
> package, backport, or any other development process that includes
> rebasing or non-fast-forward development.
>
> A patch series typically goes through multiple iterations before
> submission; the path from idea to RFC to [PATCHv12 1/8] includes many
> invocations of git rebase -i. However, while Git tracks and organizes
> commits quite well, it doesn't actually track changes to a patch series
> at all, outside of the ephemeral reflog. This makes it a challenge to
> collaborate on a patch series, distribution package, backport, or any
> other development process that includes rebasing or non-fast-forward
> development.
>
> Typically, tracking the evolution of a patch series over time involves
> moving part of the version control outside of git. You can move the
> patch series from git into quilt or a distribution package, and then
> version the patch files with git, losing the power of git's tools. Or,
> you can keep the patch series in git, and version it via multiple named
> branches; however, names like feature-v2, feature-v3-typofix, and
> feature-v8-rebased-4.6-alice-fix sound like filenames from corporate
> email, not modern version control. And either way, git doesn't track
> your cover letter at all.
>
> git-series tracks both a patch series and its evolution within the same
> git repository. git-series works entirely with existing git features,
> allowing git to push and pull a series to any git repository along with
> other branches and tags. Each time you change the patch series, whether
> fast-forwarding or not, you can "git series commit" a new version of the
> patch series, complete with commit message.
>
> You can rebase a patch series with "git series rebase -i", format it for
> submission with "git series format", or send a "please pull" request with
> "git series req". git-series knows the base of your series, so you
> don't need to count patches or find a commit hash to run rebase or
> format.
>
> If you're interested in trying git-series, see
> https://github.com/git-series/git-series for installation instructions
> and a "getting started" guide.
>
> I've also documented the internal storage format of git-series at
> https://github.com/git-series/git-series/blob/master/INTERNALS.md ,
> including the details for how git-series ensures git can always reach,
> push, and pull a series.
>
> I'd welcome any feedback, whether on the interface and workflow, the
> internals and collaboration, ideas on presenting diffs of patch series,
> or anything else.
Thats pretty neat, thanks! I do loads of rebasing when preparing
patchsets, and tend to just rely on reflog if something goes wrong and I
need to look back at the history.
It looks like it could work quite well for tracking linux-next style
trees (not necessarily linux-next itself) that automatically regenerate
a bunch of merges of different branches each time one of them changes
(if you ignore git series format & git series rebase, since they
wouldn't be relevant and don't like merge commits anyway).
It may be helpful to be able to easily tag versions of the series, e.g.
rfc/v1/v2 etc when you actually submit them (sure, the git-series ref
could be tagged manually according to some naming convention, or perhaps
storing it in the metadata would make it more self-contained).
I use various git aliases / scripts for diffing patchsets, mainly based
around vimdiff'ing git log A...B --{left,right}-only | grep to filter
out irrelevant lines of diff (like index lines), but that all sort of
breaks down as soon as you reorder commits, requiring me to e.g.
manually edit one side and :diffupdate to be able to check the changes.
Cheers
James
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-07-29 15:46 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-29 7:50 Josh Triplett
2016-07-29 12:20 ` David Howells
2016-07-29 13:11 ` Josh Triplett
2016-08-04 22:46 ` Catalin Marinas
2016-08-04 23:07 ` Michael S. Tsirkin
2016-08-08 17:27 ` Catalin Marinas
2016-08-15 23:44 ` Michael S. Tsirkin
2016-08-04 23:46 ` Josh Triplett
2016-08-08 17:37 ` Catalin Marinas
2016-07-29 14:06 ` David Howells
2016-07-29 14:21 ` Christoph Lameter
2016-07-29 14:37 ` Josh Triplett
2016-07-29 15:00 ` Daniel Vetter
2016-07-29 15:18 ` Josh Triplett
2016-07-29 15:40 ` Daniel Vetter
2016-07-29 16:21 ` Josh Triplett
2016-07-29 16:31 ` Luis R. Rodriguez
2016-07-29 17:52 ` Bird, Timothy
2016-07-29 17:57 ` James Bottomley
2016-07-29 21:59 ` James Hogan
2016-07-30 2:55 ` Steven Rostedt
2016-07-29 20:13 ` David Howells
2016-07-30 5:02 ` Josh Triplett
2016-07-30 8:43 ` Arnd Bergmann
2016-08-04 12:44 ` Jani Nikula
2016-07-29 14:34 ` Josh Triplett
2016-07-29 14:37 ` David Howells
2016-07-29 14:56 ` Josh Triplett
2016-07-29 14:55 ` James Bottomley
2016-07-29 15:05 ` Josh Triplett
2016-08-09 0:10 ` Paul E. McKenney
2016-07-29 15:26 ` James Hogan [this message]
2016-08-04 23:52 ` Michael S. Tsirkin
2016-08-05 20:26 ` Josh Triplett
2016-08-15 13:20 ` James Hogan
2016-08-15 16:14 ` Josh Triplett
2016-08-15 23:42 ` Michael S. Tsirkin
2016-08-15 12:53 ` James Hogan
2016-08-15 16:34 ` Josh Triplett
2016-08-15 18:46 ` James Hogan
2016-08-15 21:35 ` Josh Triplett
2016-08-15 22:06 ` James Hogan
2016-08-15 23:59 ` Josh Triplett
2016-08-16 2:38 ` Michael S. Tsirkin
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=20160729152651.GA1302@jhogan-linux.le.imgtec.org \
--to=james.hogan@imgtec.com \
--cc=josh@joshtriplett.org \
--cc=ksummit-discuss@lists.linuxfoundation.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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox