diff options
author | Junio C Hamano <junkio@cox.net> | 2005-12-04 10:46:02 +0300 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-12-04 10:46:02 +0300 |
commit | 423325a2d24638ddcc82ce47be5e40be550f4507 (patch) | |
tree | 00960b001d786299d3da04a4467bd0c798bf8cda /checkout-index.c | |
parent | 93dcab2937624ebb97f91807576cddb242a55a46 (diff) | |
parent | d79374c7b58d3814ffdc277de608243f8e665e3a (diff) |
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) |