apply: refactor read_file_or_gitlink()
Reading a blob out of the object store does not have to require that the caller has a cache entry for it. Create a read_blob_object() helper function that takes the object name and mode, and use it to reimplement the original function as a thin wrapper to it. Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
798b9ce87b
commit
e42a96e772
|
@ -2930,20 +2930,17 @@ static int apply_fragments(struct image *img, struct patch *patch)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_file_or_gitlink(struct cache_entry *ce, struct strbuf *buf)
|
static int read_blob_object(struct strbuf *buf, const unsigned char *sha1, unsigned mode)
|
||||||
{
|
{
|
||||||
if (!ce)
|
if (S_ISGITLINK(mode)) {
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (S_ISGITLINK(ce->ce_mode)) {
|
|
||||||
strbuf_grow(buf, 100);
|
strbuf_grow(buf, 100);
|
||||||
strbuf_addf(buf, "Subproject commit %s\n", sha1_to_hex(ce->sha1));
|
strbuf_addf(buf, "Subproject commit %s\n", sha1_to_hex(sha1));
|
||||||
} else {
|
} else {
|
||||||
enum object_type type;
|
enum object_type type;
|
||||||
unsigned long sz;
|
unsigned long sz;
|
||||||
char *result;
|
char *result;
|
||||||
|
|
||||||
result = read_sha1_file(ce->sha1, &type, &sz);
|
result = read_sha1_file(sha1, &type, &sz);
|
||||||
if (!result)
|
if (!result)
|
||||||
return -1;
|
return -1;
|
||||||
/* XXX read_sha1_file NUL-terminates */
|
/* XXX read_sha1_file NUL-terminates */
|
||||||
|
@ -2952,6 +2949,13 @@ static int read_file_or_gitlink(struct cache_entry *ce, struct strbuf *buf)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int read_file_or_gitlink(struct cache_entry *ce, struct strbuf *buf)
|
||||||
|
{
|
||||||
|
if (!ce)
|
||||||
|
return 0;
|
||||||
|
return read_blob_object(buf, ce->sha1, ce->ce_mode);
|
||||||
|
}
|
||||||
|
|
||||||
static struct patch *in_fn_table(const char *name)
|
static struct patch *in_fn_table(const char *name)
|
||||||
{
|
{
|
||||||
struct string_list_item *item;
|
struct string_list_item *item;
|
||||||
|
|
Loading…
Reference in New Issue