Major improvements
=====
- genbranch is now ~6x faster by using git's split-index.
- format-patch is now ~6x faster by forking less
- format-patch now has a "fuzzy" mode. If running on a terminal, when
format-patch fails due to conflicts in the diff line numbers, it
will first prompt the user and if confirmed it will try to autosolve
those issues. There's also the --fuzzy|--no-fuzzy to be explicit on
the desired behavior. This helps when applying the patches and
avoiding manual work to bring it up to the current state of the pile
branch.
- REVIEW patch now has type text/x-patch to workaround patchwork waiting
indefinitely for patches when the overall diff is empty.
Other smaller changes
=====
- format-patch learned a -C|--reuse-message option like in git-commit
to reuse the commit message from another commit. This is useful when
applying a patch with am, changing it and submitting a v2: now you
can tell format-patch to reuse the previous cover letter from the
original v1 commit
- format-patch learned a -F|--file option like in git-commit to reuse
the commit message from a file or stdin. It's an alternative to the
-C above if you prefer to save the message on a separate text file.
- format-patch now uses the pile.format-output-directory from git
config. This is useful if you always output the patches to the same
temporary directory (as opposed to have them in CWD).
- format-patch learned a --signoff option to automatically add a
s-o-b in the cover letter. In normal git workflow people in general
don't add a s-o-b because the cover doesn't contain a patch, just
the overview. This is different with git-pile where the cover
becomes the pile commit. So this makes it easier for people who
is adding their s-o-b
- format-patch learned a -v|--reroll-count like in git-format-patch.
If you are sending a v2 of a patch series you can now use
`git pile format-patch -v2 ...` and the patches will have the
subject set to "PATCH v2", still honoring prefixes like we use in
i-g-t.
- genbranch now checks if --force is required before doing anything.
However it's advised that people switch to using -i, so issues can
still be fixed during genbranch
- genbranch learned a --fix-whitespace option to fixup whitespace
issues when generating the new branch. This is not the default
but may change before the release.
- init is now compatible with git > 2.28 when the default branch is
not "master".
- Add new "genlinear-branch" subcommand. It's not expected for
developers to run this locally, but this will soon be running on
automation so a linear branch is generated from the pile to make
it easier to see only the end diff from one pile commit to the
other. It also makes it easier to bisect as now the each commit
in this branch corresponds to calling genbranch on a particular
pile commit. Finally, it should help when sharing patches to
- git-pile now has 2 new repositories: git-pile/automation and
git-pile/playground - this has the necessary changes for integrating
Github PRs in our workflow (sending patches to the mailing list
for review, like GitGitGadget does for git development). This will
not be ready for prime time in this version, but if you'd like to
try it out when available, let me know and I will include you in.