Merge branch 'fixes'
This commit is contained in:
commit
2b2dabc29f
@ -29,8 +29,8 @@ OPTIONS
|
|||||||
forces overwrite of existing files
|
forces overwrite of existing files
|
||||||
|
|
||||||
-a::
|
-a::
|
||||||
checks out all files in the cache (will then continue to
|
checks out all files in the cache. Cannot be used
|
||||||
process listed files).
|
together with explicit filenames.
|
||||||
|
|
||||||
-n::
|
-n::
|
||||||
Don't checkout new files, only refresh files already checked
|
Don't checkout new files, only refresh files already checked
|
||||||
@ -43,15 +43,9 @@ OPTIONS
|
|||||||
--::
|
--::
|
||||||
Do not interpret any more arguments as 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
|
Just doing "git-checkout-index" does nothing. You probably meant
|
||||||
|
|
||||||
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
|
|
||||||
"git-checkout-index -a". And if you want to force it, you want
|
"git-checkout-index -a". And if you want to force it, you want
|
||||||
"git-checkout-index -f -a".
|
"git-checkout-index -f -a".
|
||||||
|
|
||||||
@ -77,12 +71,12 @@ scripting!).
|
|||||||
The prefix ability basically makes it trivial to use
|
The prefix ability basically makes it trivial to use
|
||||||
git-checkout-index as an "export as tree" function. Just read the
|
git-checkout-index as an "export as tree" function. Just read the
|
||||||
desired tree into the index, and do a
|
desired tree into the index, and do a
|
||||||
|
|
||||||
git-checkout-index --prefix=git-export-dir/ -a
|
git-checkout-index --prefix=git-export-dir/ -a
|
||||||
|
|
||||||
and git-checkout-index will "export" the cache into the specified
|
and git-checkout-index will "export" the cache into the specified
|
||||||
directory.
|
directory.
|
||||||
|
|
||||||
NOTE The final "/" is important. The exported name is literally just
|
NOTE The final "/" is important. The exported name is literally just
|
||||||
prefixed with the specified string, so you can also do something like
|
prefixed with the specified string, so you can also do something like
|
||||||
|
|
||||||
|
109
checkout-index.c
109
checkout-index.c
@ -87,8 +87,9 @@ static struct cache_file cache_file;
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, force_filename = 0;
|
int i;
|
||||||
int newfd = -1;
|
int newfd = -1;
|
||||||
|
int all = 0;
|
||||||
|
|
||||||
if (read_cache() < 0) {
|
if (read_cache() < 0) {
|
||||||
die("invalid cache");
|
die("invalid cache");
|
||||||
@ -96,58 +97,70 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
||||||
const char *arg = argv[i];
|
const char *arg = argv[i];
|
||||||
if (!force_filename) {
|
|
||||||
if (!strcmp(arg, "-a")) {
|
if (!strcmp(arg, "--")) {
|
||||||
checkout_all();
|
i++;
|
||||||
continue;
|
break;
|
||||||
}
|
|
||||||
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 (state.base_dir_len) {
|
if (!strcmp(arg, "-a") || !strcmp(arg, "--all")) {
|
||||||
/* when --prefix is specified we do not
|
all = 1;
|
||||||
* want to update cache.
|
continue;
|
||||||
*/
|
|
||||||
if (state.refresh_cache) {
|
|
||||||
close(newfd); newfd = -1;
|
|
||||||
rollback_index_file(&cache_file);
|
|
||||||
}
|
|
||||||
state.refresh_cache = 0;
|
|
||||||
}
|
}
|
||||||
|
if (!strcmp(arg, "-f") || !strcmp(arg, "--force")) {
|
||||||
|
state.force = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
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);
|
checkout_file(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (all)
|
||||||
|
checkout_all();
|
||||||
|
|
||||||
if (0 <= newfd &&
|
if (0 <= newfd &&
|
||||||
(write_cache(newfd, active_cache, active_nr) ||
|
(write_cache(newfd, active_cache, active_nr) ||
|
||||||
commit_index_file(&cache_file)))
|
commit_index_file(&cache_file)))
|
||||||
|
Loading…
Reference in New Issue
Block a user