aboutsummaryrefslogtreecommitdiff
path: root/builtin-add.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-08-07 20:44:49 -0700
committerJunio C Hamano <gitster@pobox.com>2009-08-07 20:44:49 -0700
commit7ecc9b153c89aeec7470256f7b121fd845101b57 (patch)
tree0bf662b5dd1ffe642756f5cb168902a89b60506a /builtin-add.c
parentc9c3c6781c5b97c37b3ce16af7ea9bc613413c7e (diff)
parent5dc36a5888a7063ff4536c9ea50eb0557bfef627 (diff)
downloadgit-7ecc9b153c89aeec7470256f7b121fd845101b57.tar.gz
git-7ecc9b153c89aeec7470256f7b121fd845101b57.tar.xz
Merge branch 'maint' into jc/verify-pack-stat
* maint: (95 commits) verify-pack -v: do not report "chain length 0" t5510: harden the way verify-pack is used gitweb/README: Document $base_url Documentation: git submodule: add missing options to synopsis Better usage string for reflog. hg-to-git: don't import the unused popen2 module send-email: remove debug trace config: Keep inner whitespace verbatim GIT 1.6.4 GIT 1.6.3.4 config.txt: document add.ignore-errors request-pull: allow ls-remote to notice remote.$nickname.uploadpack Update the documentation of the raw diff output format git-rerere.txt: Clarify ambiguity of the config variable t9143: do not fail if Compress::Zlib is missing Trivial path quoting fixes in git-instaweb GIT 1.6.4-rc3 Documentation/config.txt: a variable can be defined on the section header line git svn: make minimize URL more reliable over http(s) Disable asciidoc 8.4.1+ semantics for `{plus}` and friends ...
Diffstat (limited to 'builtin-add.c')
-rw-r--r--builtin-add.c45
1 files changed, 14 insertions, 31 deletions
diff --git a/builtin-add.c b/builtin-add.c
index 78989dad8..581a2a174 100644
--- a/builtin-add.c
+++ b/builtin-add.c
@@ -97,35 +97,6 @@ static void treat_gitlinks(const char **pathspec)
}
}
-static void fill_directory(struct dir_struct *dir, const char **pathspec,
- int ignored_too)
-{
- const char *path, *base;
- int baselen;
-
- /* Set up the default git porcelain excludes */
- memset(dir, 0, sizeof(*dir));
- if (!ignored_too) {
- dir->flags |= DIR_COLLECT_IGNORED;
- setup_standard_excludes(dir);
- }
-
- /*
- * Calculate common prefix for the pathspec, and
- * use that to optimize the directory walk
- */
- baselen = common_prefix(pathspec);
- path = ".";
- base = "";
- if (baselen)
- path = base = xmemdupz(*pathspec, baselen);
-
- /* Read the directory and prune it */
- read_directory(dir, path, base, baselen, pathspec);
- if (pathspec)
- prune_directory(dir, pathspec, baselen);
-}
-
static void refresh(int verbose, const char **pathspec)
{
char *seen;
@@ -343,9 +314,21 @@ int cmd_add(int argc, const char **argv, const char *prefix)
die("index file corrupt");
treat_gitlinks(pathspec);
- if (add_new_files)
+ if (add_new_files) {
+ int baselen;
+
+ /* Set up the default git porcelain excludes */
+ memset(&dir, 0, sizeof(dir));
+ if (!ignored_too) {
+ dir.flags |= DIR_COLLECT_IGNORED;
+ setup_standard_excludes(&dir);
+ }
+
/* This picks up the paths that are not tracked */
- fill_directory(&dir, pathspec, ignored_too);
+ baselen = fill_directory(&dir, pathspec);
+ if (pathspec)
+ prune_directory(&dir, pathspec, baselen);
+ }
if (refresh_only) {
refresh(verbose, pathspec);