This patch series depends on pt/pull-builtin.
This is a re-roll of [WIP v3]. This patch series is now out of WIP, as the
git-am feature set is complete. I've marked out some features which lack tests
though, which I'm working on fixing.
Thanks Junio, Stefan, Johannes for the reviews last round.
Also, v4, with 44 patches ;-)
Previous versions:
[WIP v1] http://thread.gmane.org/gmane.comp.version-control.git/270048
[WIP v2] http://thread.gmane.org/gmane.comp.version-control.git/271381
[WIP v3] http://thread.gmane.org/gmane.comp.version-control.git/271967
git-am is a commonly used command for applying a series of patches from a
mailbox to the current branch. Currently, it is implemented by the shell script
git-am.sh. However, compared to C, shell scripts have certain deficiencies:
they need to spawn a lot of processes, introduce a lot of dependencies and
cannot take advantage of git's internal caches.
This WIP patch series rewrites git-am.sh into optimized C builtin/am.c, and is
part of my GSoC project to rewrite git-pull and git-am into C builtins[1].
[1] https://gist.github.com/pyokagan/1b7b0d1f4dab6ba3cef1
Paul Tan (44):
wrapper: implement xopen()
wrapper: implement xfopen()
builtin-am: implement skeletal builtin am
builtin-am: implement patch queue mechanism
builtin-am: split out mbox/maildir patches with git-mailsplit
builtin-am: auto-detect mbox patches
builtin-am: extract patch and commit info with git-mailinfo
builtin-am: apply patch with git-apply
builtin-am: implement committing applied patch
builtin-am: refuse to apply patches if index is dirty
builtin-am: implement --resolved/--continue
builtin-am: implement --skip
builtin-am: implement --abort
builtin-am: reject patches when there's a session in progress
builtin-am: implement -q/--quiet, GIT_QUIET
builtin-am: exit with user friendly message on failure
builtin-am: implement -s/--signoff
cache-tree: introduce write_index_as_tree()
builtin-am: implement --3way, am.threeway
builtin-am: implement --rebasing mode
builtin-am: bypass git-mailinfo when --rebasing
builtin-am: handle stray state directory
builtin-am: implement -u/--utf8
builtin-am: implement -k/--keep, --keep-non-patch
builtin-am: implement --[no-]message-id, am.messageid
builtin-am: support --keep-cr, am.keepcr
builtin-am: implement --[no-]scissors
builtin-am: pass git-apply's options to git-apply
builtin-am: implement --ignore-date
builtin-am: implement --committer-date-is-author-date
builtin-am: implement -S/--gpg-sign, commit.gpgsign
builtin-am: invoke post-rewrite hook
builtin-am: support automatic notes copying
builtin-am: invoke applypatch-msg hook
builtin-am: invoke pre-applypatch hook
builtin-am: invoke post-applypatch hook
builtin-am: rerere support
builtin-am: support and auto-detect StGit patches
builtin-am: support and auto-detect StGit series files
builtin-am: support and auto-detect mercurial patches
builtin-am: implement -i/--interactive
builtin-am: implement legacy -b/--binary option
builtin-am: check for valid committer ident
builtin-am: remove redirection to git-am.sh
Makefile|2 +-
builtin.h |1 +
builtin/am.c| 2335 +++
cache-tree.c| 29 +-
cache-tree.h|1 +
git-am.sh = contrib/examples/git-am.sh |0
git-compat-util.h |2 +
git.c |1 +
wrapper.c | 43 +
9 files changed, 2401 insertions(+), 13 deletions(-)
create mode 100644 builtin/am.c
rename git-am.sh = contrib/examples/git-am.sh (100%)
--
2.5.0.rc0.76.gb2c6e93
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html