mirror of
https://github.com/git/git.git
synced 2024-10-30 22:07:53 +01:00
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>
This commit is contained in:
parent
798b9ce87b
commit
e42a96e772
1 changed files with 11 additions and 7 deletions
|
@ -2930,20 +2930,17 @@ static int apply_fragments(struct image *img, struct patch *patch)
|
|||
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)
|
||||
return 0;
|
||||
|
||||
if (S_ISGITLINK(ce->ce_mode)) {
|
||||
if (S_ISGITLINK(mode)) {
|
||||
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 {
|
||||
enum object_type type;
|
||||
unsigned long sz;
|
||||
char *result;
|
||||
|
||||
result = read_sha1_file(ce->sha1, &type, &sz);
|
||||
result = read_sha1_file(sha1, &type, &sz);
|
||||
if (!result)
|
||||
return -1;
|
||||
/* 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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
struct string_list_item *item;
|
||||
|
|
Loading…
Reference in a new issue