I've rewritten git stash as a builtin c command. All tests pass, and I've added two new tests. Test coverage is around 95% with the only things missing coverage being error handlers. Changes since v3: * Fixed formatting issues * Fixed a bug with stash branch and added a new test for it * Fixed review comments Outstanding issue: * Not all argv array memory is cleaned up Joel Teichroeb (5): stash: add test for stash create with no files stash: Add a test for when apply fails during stash branch stash: add test for stashing in a detached state merge: close the index lock when not writing the new index stash: implement builtin stash Makefile | 2 +- builtin.h | 1 + builtin/stash.c | 1224 +++++++++++++++++++++++++ git-stash.sh => contrib/examples/git-stash.sh | 0 git.c | 1 + merge-recursive.c | 9 +- t/t3903-stash.sh | 34 + 7 files changed, 1267 insertions(+), 4 deletions(-) create mode 100644 builtin/stash.c rename git-stash.sh => contrib/examples/git-stash.sh (100%) -- 2.13.0