Hello,
Here is the whole `git stash` C version. Some of the previous
patches were already reviewed (up to and including "stash: convert
store to builtin"), but there are some which were not
(starting with "stash: convert create to builtin").
In order to see the difference between the shell version and
the C version, I ran `time` on:
* git test suite (t3903-stash.sh, t3904-stash-patch.sh,
t3905-stash-include-untracked.sh and t3906-stash-submodule.sh)
t3903-stash.sh:
** SHELL: 12,69s user 9,95s system 109% cpu 20,730 total
** C: 2,67s user 2,84s system 105% cpu 5,206 total
t3904-stash-patch.sh:
** SHELL: 1,43s user 0,94s system 106% cpu 2,242 total
** C: 1,01s user 0,58s system 104% cpu 1,530 total
t3905-stash-include-untracked.sh
** SHELL: 2,22s user 1,73s system 110% cpu 3,569 total
** C: 0,59s user 0,57s system 106% cpu 1,085 total
t3906-stash-submodule.sh
** SHELL: 2,89s user 2,99s system 106% cpu 5,527 total
** C: 2,21s user 2,61s system 105% cpu 4,568 total
TOTAL:
** SHELL: 19.23s user 15.61s system
** C: 6.48s user 6.60s system
* a git repository with 4000 files: 1000 not changed,
1000 staged files, 1000 unstaged files, 1000 untracked.
In this case I ran some of the most used commands:
git stash push:
** SHELL: 0,12s user 0,21s system 101% cpu 0,329 total
** C: 0,06s user 0,13s system 105% cpu 0,185 total
git stash push -u:
** SHELL: 0,18s user 0,27s system 108% cpu 0,401 total
** C: 0,09s user 0,19s system 103% cpu 0,267 total
git stash pop:
** SHELL: 0,16s user 0,26s system 103% cpu 0,399 total
** C: 0,13s user 0,19s system 102% cpu 0,308 total
Best regards,
Paul Ungureanu
Joel Teichroeb (5):
stash: improve option parsing test coverage
stash: convert apply to builtin
stash: convert drop and clear to builtin
stash: convert branch to builtin
stash: convert pop to builtin
Paul-Sebastian Ungureanu (21):
sha1-name.c: added 'get_oidf', which acts like 'get_oid'
stash: update test cases conform to coding guidelines
stash: renamed test cases to be more descriptive
stash: implement the "list" command in the builtin
stash: convert show to builtin
stash: change `git stash show` usage text and documentation
stash: refactor `show_stash()` to use the diff API
stash: update `git stash show` documentation
stash: convert store to builtin
stash: convert create to builtin
stash: replace spawning a "read-tree" process
stash: avoid spawning a "diff-index" process
stash: convert push to builtin
stash: make push to be quiet
stash: add tests for `git stash push -q`
stash: replace spawning `git ls-files` child process
stash: convert save to builtin
stash: convert `stash--helper.c` into `stash.c`
stash: optimize `get_untracked_files()` and `check_changes()`
stash: replace all `write-tree` child processes with API calls
stash: replace all "git apply" child processes with API calls
Documentation/git-stash.txt | 7 +-
Makefile | 2 +-
builtin.h | 1 +
builtin/stash.c | 1562 +++++++++++++++++++++++++++++++++++
cache.h | 1 +
git-stash.sh | 752 -----------------
git.c | 1 +
sha1-name.c | 19 +
t/t3903-stash.sh | 190 +++--
9 files changed, 1714 insertions(+), 821 deletions(-)
create mode 100644 builtin/stash.c
delete mode 100755 git-stash.sh
--
2.18.0.573.g56500d98f