[GSoC][PATCH v7 00/26] Convert "git stash" to C builtin
- From
Paul-Sebastian Ungureanu <ungureanupaulsebastian@gmail.com>
- Date
- Aug 8, 2018, 18:58 UTC
- Message-ID
- <cover.1533753605.git.ungureanupaulsebastian@gmail.com>
- In-Reply-To
- <cover.1529943789.git.ungureanupaulsebastian@gmail.com>
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 totalgit 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 totalgit 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 totalBest 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