[ANNOUNCE/RFC] cj-git-patchtool: a "rebase -i" with more interaction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

I've always been a frequent user of git rebase -i to clean up private
branches before publication. I like committing without thinking while
coding and then grouping the commits sensibly afterwards. But git
rebase -i didn't scale for me for this purpose, cleaning up several
days (or even weeks) of work would become a pain because frequently
I'd make some error, like when dealing with conflicts, and then
multiple rebase -i runs are needed, requiring to partially redo the
work.

So I've written a set of tools[1] that separates the acts of editing
and applying history changes. It does this by turning the history in
question into a set of git patch files and a file containing the list
of the patches (and optionally new commit messages), and allows to
edit both the list and the patch files themselves incrementally until
they can be applied cleanly again in the new order. In other words, an
(attempted) application (cj-git-patchtool's "app" command) will not
remove these files, and if there's a problem the existing files can be
further refined. There's also a command "wig" that uses "wiggle" (by
Neil Brown) to try to apply a patch automatically when git or patch
wouldn't accept it, and if successful, stores the result back into the
patch file so that it will be reused on subsequent "app" runs. For
convenience, these files, which are put inside a newly created
directory, are automatically checked into their own git repository,
too, so when doing something really complicated, the state of work can
be committed and reverted easily when reaching a dead end.

For more information see the README on Github.[1]

This works well for me, I'm now always using it whenever I need to do
more than a couple trivial changes to a Git history.

I don't know whether there are other tools offering the same now.
Also, I have written this "just for myself", and for this reason made
use of a set of never-before released Perl libraries of mine. If
there's general interest in this tool, I'll be glad to help get rid of
the dependency on these libraries (or clean them up and publish them
properly, too).

I welcome your comments.

Christian.

[1] https://github.com/pflanze/cj-git-patchtool
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]