From: Karsten Blees <karsten.blees@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: Junio C Hamano <gitster@pobox.com>,
Erik Faye-Lund <kusmabite@gmail.com>,
Ramkumar Ramachandra <artagnon@gmail.com>,
Robert Zeh <robert.allan.zeh@gmail.com>,
Duy Nguyen <pclouds@gmail.com>,
Antoine Pelisse <apelisse@gmail.com>,
Adam Spiers <git@adamspiers.org>
Subject: [PATCH 0/8] Improve git-status --ignored
Date: Mon, 18 Mar 2013 21:28:20 +0100 [thread overview]
Message-ID: <514778E4.1040607@gmail.com> (raw)
This patch series addresses several bugs and performance issues in .gitignore processing that came up in the inotify discussion.
Also available here:
https://github.com/kblees/git/tree/kb/improve-git-status-ignored
git pull git://github.com/kblees/git.git kb/improve-git-status-ignored
Patches 1 - 4 fix bugs in 'git-status --ignored' and add appropriate test cases.
Patches 5 - 7 eliminate the is_path_excluded API, in favor of a slightly improved and faster is_excluded. This speeds up 'git-ls-files --cached --ignored' by factor 5 - 6.
Patch 8 finally skips excluded checks for tracked files. With the bugs and is_path_excluded out of the way, it should be obvious that this can safely be done unconditionally without introducing regressions. Speeds up 'git-status [--ignored]' by factor 1.4 - 2.
I still believe that 'git-status --ignored' shouldn't list "ignored tracked" directories, to be consistent with the listing of untracked directories, and because "ignored tracked" contradicts the very definition of ignored content in gitignore(5).
Cheers,
Karsten
Karsten Blees (8):
dir.c: git-status --ignored: don't drop ignored directories
dir.c: git-status --ignored: don't list files in ignored directories
dir.c: git-status --ignored: don't list empty ignored directories
dir.c: git-status --ignored: don't list empty directories as ignored
dir.c: move prep_exclude and factor out parts of last_exclude_matching
dir.c: unify is_excluded and is_path_excluded APIs
dir.c: replace is_path_excluded with now equivalent is_excluded API
dir.c: git-status: avoid is_excluded checks for tracked files
builtin/add.c | 5 +-
builtin/check-ignore.c | 6 +-
builtin/ls-files.c | 15 +-
dir.c | 351 +++++++++++++++++----------------------------
dir.h | 22 +--
t/t7061-wtstatus-ignore.sh | 104 +++++++++++++-
unpack-trees.c | 10 +-
unpack-trees.h | 1 -
8 files changed, 243 insertions(+), 271 deletions(-)
--
next reply other threads:[~2013-03-18 20:28 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-18 20:28 Karsten Blees [this message]
2013-03-19 4:08 ` [PATCH 0/8] Improve git-status --ignored Junio C Hamano
2013-03-19 5:20 ` Duy Nguyen
2013-03-19 10:48 ` Karsten Blees
2013-03-19 14:48 ` Junio C Hamano
2013-03-19 15:58 ` Duy Nguyen
2013-04-15 19:04 ` [PATCH v2 00/14] " Karsten Blees
2013-04-15 19:05 ` [PATCH v2 01/14] dir.c: git-status --ignored: don't drop ignored directories Karsten Blees
2013-04-16 17:33 ` Ramkumar Ramachandra
2013-04-17 0:31 ` Karsten Blees
2013-04-15 19:06 ` [PATCH v2 02/14] dir.c: git-status --ignored: don't list files in " Karsten Blees
2013-04-16 9:57 ` [PATCH] read_revisions_from_stdin: make copies for handle_revision_arg Thomas Rast
2013-04-16 18:17 ` Junio C Hamano
2013-04-15 19:07 ` [PATCH v2 03/14] dir.c: git-status --ignored: don't list empty ignored directories Karsten Blees
2013-04-16 17:48 ` Ramkumar Ramachandra
2013-04-17 0:31 ` Karsten Blees
2013-04-15 19:08 ` [PATCH v2 04/14] dir.c: git-ls-files --directories: don't hide empty directories Karsten Blees
2013-04-15 19:08 ` [PATCH v2 05/14] dir.c: git-status --ignored: don't list empty directories as ignored Karsten Blees
2013-04-15 19:09 ` [PATCH v2 06/14] dir.c: make 'git-status --ignored' work within leading directories Karsten Blees
2013-04-15 19:10 ` [PATCH v2 07/14] dir.c: git-clean -d -X: don't delete tracked directories Karsten Blees
2013-04-15 19:11 ` [PATCH v2 08/14] dir.c: factor out parts of last_exclude_matching for later reuse Karsten Blees
2013-04-15 19:11 ` [PATCH v2 09/14] dir.c: move prep_exclude Karsten Blees
2013-04-15 19:12 ` [PATCH v2 10/14] dir.c: unify is_excluded and is_path_excluded APIs Karsten Blees
2013-04-15 21:35 ` Junio C Hamano
2013-04-15 19:12 ` [PATCH v2 11/14] dir.c: replace is_path_excluded with now equivalent is_excluded API Karsten Blees
2013-04-15 19:13 ` [PATCH v2 12/14] dir.c: git-status: avoid is_excluded checks for tracked files Karsten Blees
2013-04-15 19:14 ` [PATCH v2 13/14] dir.c: git-status --ignored: don't scan the work tree three times Karsten Blees
2013-04-15 19:15 ` [PATCH v2 14/14] dir.c: git-status --ignored: don't scan the work tree twice Karsten Blees
2013-04-15 19:23 ` [PATCH v2 00/14] Improve git-status --ignored Junio C Hamano
2013-04-15 19:33 ` Junio C Hamano
2013-04-15 20:06 ` Karsten Blees
2013-04-15 20:25 ` Junio C Hamano
2013-04-17 19:50 ` Karsten Blees
2013-04-17 22:03 ` Junio C Hamano
2013-04-17 19:50 ` [PATCH v2-pu 11/14] dir.c: replace is_path_excluded with now equivalent is_excluded API Karsten Blees
2013-04-17 19:51 ` [PATCH v2-pu 14/14] dir.c: git-status --ignored: don't scan the work tree twice Karsten Blees
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=514778E4.1040607@gmail.com \
--to=karsten.blees@gmail.com \
--cc=apelisse@gmail.com \
--cc=artagnon@gmail.com \
--cc=git@adamspiers.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=kusmabite@gmail.com \
--cc=pclouds@gmail.com \
--cc=robert.allan.zeh@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).