[PATCH WIP 0/3] git log --exclude
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Oct 5, 2011, 07:18 UTC
- Message-ID
- <1317799088-26626-1-git-send-email-pclouds@gmail.com>
This series adds --exclude that uses .gitignore mechanism remove commits whose changes that are _entirely_ excluded. The main patch is 2/3 where it teaches diff_tree_* about struct exclude_list.
Because it uses .gitignore mechanism, beware that these patterns do not behave exactly like pathspecs (patterns without slashes match every directory, for example)
I tried these commands
time git log --stat >/dev/null time git log --stat --exclude=Documentation >/dev/null
The former took 37 secs, the latter 40 secs. Not bad, but there is definitely room for improvement. skip_excludes() should be able to point out whether an entire directory is excluded and skip the whole directory (as opposed to descending in and checking files one by one now, in fear of negative patterns). These kinds of optimizations benefit sparse checkout too.
I think I made a mistake somewhere because the above command seems to remove more commits than it should... Regardless, "git log --exclude=po" on gnome-shell looks sooo clean.
Nguyễn Thái Ngọc Duy (3): diff-no-index: rename read_directory to avoid conflict from dir.h tree-diff: teach it to understand exclude patterns log: add --exclude option
diff-no-index.c | 6 ++-- diff.h | 11 ++++++++++ revision.c | 7 ++++- revision.h | 2 + tree-diff.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 5 files changed, 75 insertions(+), 9 deletions(-)
-- 1.7.3.1.256.g2539c.dirty