Browse Source

Merge branch 'fixes'

maint
Junio C Hamano 19 years ago
parent
commit
82ed2bcd92
  1. 14
      Documentation/git-checkout-index.txt
  2. 109
      checkout-index.c

14
Documentation/git-checkout-index.txt

@ -30,8 +30,8 @@ OPTIONS @@ -30,8 +30,8 @@ OPTIONS
forces overwrite of existing files

-a::
checks out all files in the cache (will then continue to
process listed files).
checks out all files in the cache. Cannot be used
together with explicit filenames.

-n::
Don't checkout new files, only refresh files already checked
@ -44,15 +44,9 @@ OPTIONS @@ -44,15 +44,9 @@ OPTIONS
--::
Do not interpret any more arguments as options.

Note that the order of the flags matters:
The order of the flags used to matter, but not anymore.

git-checkout-index -a -f file.c

will first check out all files listed in the cache (but not overwrite
any old ones), and then force-checkout `file.c` a second time (ie that
one *will* overwrite any old contents with the same filename).

Also, just doing "git-checkout-index" does nothing. You probably meant
Just doing "git-checkout-index" does nothing. You probably meant
"git-checkout-index -a". And if you want to force it, you want
"git-checkout-index -f -a".


109
checkout-index.c

@ -82,8 +82,9 @@ static struct cache_file cache_file; @@ -82,8 +82,9 @@ static struct cache_file cache_file;

int main(int argc, char **argv)
{
int i, force_filename = 0;
int i;
int newfd = -1;
int all = 0;

if (read_cache() < 0) {
die("invalid cache");
@ -91,58 +92,70 @@ int main(int argc, char **argv) @@ -91,58 +92,70 @@ int main(int argc, char **argv)

for (i = 1; i < argc; i++) {
const char *arg = argv[i];
if (!force_filename) {
if (!strcmp(arg, "-a")) {
checkout_all();
continue;
}
if (!strcmp(arg, "--")) {
force_filename = 1;
continue;
}
if (!strcmp(arg, "-f")) {
state.force = 1;
continue;
}
if (!strcmp(arg, "-q")) {
state.quiet = 1;
continue;
}
if (!strcmp(arg, "-n")) {
state.not_new = 1;
continue;
}
if (!strcmp(arg, "-u")) {
state.refresh_cache = 1;
if (newfd < 0)
newfd = hold_index_file_for_update
(&cache_file,
get_index_file());
if (newfd < 0)
die("cannot open index.lock file.");
continue;
}
if (!memcmp(arg, "--prefix=", 9)) {
state.base_dir = arg+9;
state.base_dir_len = strlen(state.base_dir);
continue;
}
if (arg[0] == '-')
usage(checkout_cache_usage);

if (!strcmp(arg, "--")) {
i++;
break;
}
if (!strcmp(arg, "-a") || !strcmp(arg, "--all")) {
all = 1;
continue;
}
if (!strcmp(arg, "-f") || !strcmp(arg, "--force")) {
state.force = 1;
continue;
}
if (state.base_dir_len) {
/* when --prefix is specified we do not
* want to update cache.
*/
if (state.refresh_cache) {
close(newfd); newfd = -1;
rollback_index_file(&cache_file);
}
state.refresh_cache = 0;
if (!strcmp(arg, "-q") || !strcmp(arg, "--quiet")) {
state.quiet = 1;
continue;
}
if (!strcmp(arg, "-n") || !strcmp(arg, "--no-create")) {
state.not_new = 1;
continue;
}
if (!strcmp(arg, "-u") || !strcmp(arg, "--index")) {
state.refresh_cache = 1;
if (newfd < 0)
newfd = hold_index_file_for_update
(&cache_file,
get_index_file());
if (newfd < 0)
die("cannot open index.lock file.");
continue;
}
if (!memcmp(arg, "--prefix=", 9)) {
state.base_dir = arg+9;
state.base_dir_len = strlen(state.base_dir);
continue;
}
if (arg[0] == '-')
usage(checkout_cache_usage);
break;
}

if (state.base_dir_len) {
/* when --prefix is specified we do not
* want to update cache.
*/
if (state.refresh_cache) {
close(newfd); newfd = -1;
rollback_index_file(&cache_file);
}
state.refresh_cache = 0;
}

/* Check out named files first */
for ( ; i < argc; i++) {
const char *arg = argv[i];

if (all)
die("git-checkout-index: don't mix '--all' and explicit filenames");
checkout_file(arg);
}

if (all)
checkout_all();

if (0 <= newfd &&
(write_cache(newfd, active_cache, active_nr) ||
commit_index_file(&cache_file)))

Loading…
Cancel
Save