[PATCH] Add --info-only option to git-update-cache.
Add --info-only option to git-update-cache. [JC demangled whitespace from the posted patch himself because he liked it so much. Also adjusted to the index_fd() interface slightly done differently from the original one.] Signed-off-by: Bryan Larsen <bryan.larsen@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
7672db20c2
commit
df6e151636
@ -14,6 +14,7 @@ SYNOPSIS
|
|||||||
[--ignore-missing]
|
[--ignore-missing]
|
||||||
[--force-remove]
|
[--force-remove]
|
||||||
[--cacheinfo <mode> <object> <file>]\*
|
[--cacheinfo <mode> <object> <file>]\*
|
||||||
|
[--info-only]
|
||||||
[--] [<file>]\*
|
[--] [<file>]\*
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -47,6 +48,11 @@ OPTIONS
|
|||||||
--cacheinfo <mode> <object> <path>::
|
--cacheinfo <mode> <object> <path>::
|
||||||
Directly insert the specified info into the cache.
|
Directly insert the specified info into the cache.
|
||||||
|
|
||||||
|
--info-only::
|
||||||
|
Do not create objects in the object database for all
|
||||||
|
<file> arguments that follow this flag; just insert
|
||||||
|
their object IDs into the cache.
|
||||||
|
|
||||||
--force-remove::
|
--force-remove::
|
||||||
Remove the file from the index even when the working directory
|
Remove the file from the index even when the working directory
|
||||||
still has such a file. (Implies --remove.)
|
still has such a file. (Implies --remove.)
|
||||||
@ -80,15 +86,27 @@ the stat entry is out of date.
|
|||||||
For example, you'd want to do this after doing a "git-read-tree", to link
|
For example, you'd want to do this after doing a "git-read-tree", to link
|
||||||
up the stat cache details with the proper files.
|
up the stat cache details with the proper files.
|
||||||
|
|
||||||
Using --cacheinfo
|
Using --cacheinfo or --info-only
|
||||||
-----------------
|
--------------------------------
|
||||||
'--cacheinfo' is used to register a file that is not in the current
|
'--cacheinfo' is used to register a file that is not in the
|
||||||
working directory. This is useful for minimum-checkout merging.
|
current working directory. This is useful for minimum-checkout
|
||||||
|
merging.
|
||||||
|
|
||||||
To pretend you have a file with mode and sha1 at path, say:
|
To pretend you have a file with mode and sha1 at path, say:
|
||||||
|
|
||||||
$ git-update-cache --cacheinfo mode sha1 path
|
$ git-update-cache --cacheinfo mode sha1 path
|
||||||
|
|
||||||
|
'--info-only' is used to register files without placing them in the object
|
||||||
|
database. This is useful for status-only repositories.
|
||||||
|
|
||||||
|
Both '--cacheinfo' and '--info-only' behave similarly: the index is updated
|
||||||
|
but the object database isn't. '--cacheinfo' is useful when the object is
|
||||||
|
in the database but the file isn't available locally. '--info-only' is
|
||||||
|
useful when the file is available, but you do not wish to update the
|
||||||
|
object database.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
To update and refresh only the files already checked out:
|
To update and refresh only the files already checked out:
|
||||||
|
|
||||||
git-checkout-cache -n -f -a && git-update-cache --ignore-missing --refresh
|
git-checkout-cache -n -f -a && git-update-cache --ignore-missing --refresh
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* like "git-update-cache *" and suddenly having all the object
|
* like "git-update-cache *" and suddenly having all the object
|
||||||
* files be revision controlled.
|
* files be revision controlled.
|
||||||
*/
|
*/
|
||||||
static int allow_add = 0, allow_remove = 0, allow_replace = 0, not_new = 0, quiet = 0;
|
static int allow_add = 0, allow_remove = 0, allow_replace = 0, not_new = 0, quiet = 0, info_only = 0;
|
||||||
static int force_remove;
|
static int force_remove;
|
||||||
|
|
||||||
/* Three functions to allow overloaded pointer return; see linux/err.h */
|
/* Three functions to allow overloaded pointer return; see linux/err.h */
|
||||||
@ -68,7 +68,7 @@ static int add_file_to_cache(char *path)
|
|||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if (index_fd(ce->sha1, fd, &st, 1, NULL) < 0)
|
if (index_fd(ce->sha1, fd, &st, !info_only, NULL) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
case S_IFLNK:
|
case S_IFLNK:
|
||||||
@ -77,7 +77,12 @@ static int add_file_to_cache(char *path)
|
|||||||
free(target);
|
free(target);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (write_sha1_file(target, st.st_size, "blob", ce->sha1))
|
if (info_only) {
|
||||||
|
unsigned char hdr[50];
|
||||||
|
int hdrlen;
|
||||||
|
write_sha1_file_prepare(target, st.st_size, "blob",
|
||||||
|
ce->sha1, hdr, &hdrlen);
|
||||||
|
} else if (write_sha1_file(target, st.st_size, "blob", ce->sha1))
|
||||||
return -1;
|
return -1;
|
||||||
free(target);
|
free(target);
|
||||||
break;
|
break;
|
||||||
@ -382,6 +387,10 @@ int main(int argc, char **argv)
|
|||||||
i += 3;
|
i += 3;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(path, "--info-only")) {
|
||||||
|
info_only = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!strcmp(path, "--force-remove")) {
|
if (!strcmp(path, "--force-remove")) {
|
||||||
force_remove = 1;
|
force_remove = 1;
|
||||||
continue;
|
continue;
|
||||||
|
Reference in New Issue
Block a user