
Git-Revise - jgraham
https://mystor.github.io/git-revise.html
======
WorldMaker
Reminds me some of Raymond Chen's "Stupid Git Tricks" series [0-6] of blog
posts where he used a lot of git commit-tree and similar low level tools to
avoid worktree changes and minimize GC churn (partly because of working in the
humongous Windows git, which of course seems to have similar issues to the
Mozilla ones mentioned here such as auto-rebuild tools).

It makes a bunch of sense to build nicer porcelain tools for such low level
git magic when it becomes semi-routine.

(I couldn't find a good permalink for the entire series as a whole, so linked
are all the individual posts.)

[0]
[https://devblogs.microsoft.com/oldnewthing/20190506-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190506-00/?p=102478)

[1]
[https://devblogs.microsoft.com/oldnewthing/20190507-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190507-00/?p=102480)

[2]
[https://devblogs.microsoft.com/oldnewthing/20190508-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190508-00/?p=102482)

[3]
[https://devblogs.microsoft.com/oldnewthing/20190509-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190509-00/?p=102485)

[4]
[https://devblogs.microsoft.com/oldnewthing/20190510-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190510-00/?p=102488)

[5]
[https://devblogs.microsoft.com/oldnewthing/20190513-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190513-00/?p=102490)

[6]
[https://devblogs.microsoft.com/oldnewthing/20190515-00/?p=10...](https://devblogs.microsoft.com/oldnewthing/20190515-00/?p=102495)

~~~
rgoulter
FWIW, in case people aren't familiar with the term "porcelain", it refers to
higher-level tools for working with git. (As opposed to lower-level "plumbing"
commands).

[https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Po...](https://git-
scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)

~~~
WorldMaker
Indeed, it's an old and somewhat out-of-favor term that I used partly as an
in-joke.

(At one point everyone assumed the entire `git` command would be replaced for
most users by a true porcelain interface, but that never really quite happened
in that way as most people just standardized on `git` on the command line
rather than any of the porcelain attempts. Instead `git` has sometimes
directly got some of the high level commands and polish that was expected to
be meant for porcelain tools.)

------
eridius
This sounds exactly like my dream tool, the very thing I've been meaning to
write myself and haven't gotten around to it. Thank you for writing this!

Suggestion: I'd love to see a `revise.autoSquash` git config flag (like
`rebase.autoSquash`) to always autosquash in interactive mode. Maybe you
already support it, but if so, the manpage doesn't list it.

~~~
mystor
I don't support a feature like that yet, but it wouldn't be tricky to add.
Filed [https://github.com/mystor/git-
revise/issues/10](https://github.com/mystor/git-revise/issues/10) to track
adding it.

------
rurban
I wrote something similar for fixing up a list of files, but it is not as
stable or fast as revise. [https://github.com/rurban/home-bin/blob/master/git-
cifixup](https://github.com/rurban/home-bin/blob/master/git-cifixup)

revise is giving me now some ideas.

