diff options
author | Junio C Hamano <junkio@cox.net> | 2005-11-30 20:09:33 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-11-30 20:09:33 +0100 |
commit | 9cac9d368934f68e75810df95211a6522d4d139e (patch) | |
tree | 6587296cef3998501dd38886d20e80cfd84342ff /checkout-index.c | |
parent | Merge branches 'jc/apply', 'lt/ls-tree', 'lt/bisect' and 'lt/merge' (diff) | |
parent | hash-object.c: type-fix to squelch compiler warnings. (diff) | |
download | git-9cac9d368934f68e75810df95211a6522d4d139e.tar.xz git-9cac9d368934f68e75810df95211a6522d4d139e.zip |
Merge branch 'jc/subdir'
Diffstat (limited to 'checkout-index.c')
-rw-r--r-- | checkout-index.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/checkout-index.c b/checkout-index.c index dab3778a95..f1e716d412 100644 --- a/checkout-index.c +++ b/checkout-index.c @@ -34,6 +34,9 @@ */ #include "cache.h" +static const char *prefix; +static int prefix_length; + static struct checkout state = { .base_dir = "", .base_dir_len = 0, @@ -69,6 +72,10 @@ static int checkout_all(void) struct cache_entry *ce = active_cache[i]; if (ce_stage(ce)) continue; + if (prefix && *prefix && + ( ce_namelen(ce) <= prefix_length || + memcmp(prefix, ce->name, prefix_length) )) + continue; if (checkout_entry(ce, &state) < 0) errs++; } @@ -91,6 +98,9 @@ int main(int argc, char **argv) int newfd = -1; int all = 0; + prefix = setup_git_directory(); + prefix_length = prefix ? strlen(prefix) : 0; + if (read_cache() < 0) { die("invalid cache"); } @@ -155,7 +165,7 @@ int main(int argc, char **argv) if (all) die("git-checkout-index: don't mix '--all' and explicit filenames"); - checkout_file(arg); + checkout_file(prefix_path(prefix, prefix_length, arg)); } if (all) |