Merge branch 'po/object-id'

* po/object-id:
  sha1_file: convert index_stream to struct object_id
  sha1_file: convert hash_sha1_file_literally to struct object_id
  sha1_file: convert index_fd to struct object_id
  sha1_file: convert index_path to struct object_id
  read-cache: convert to struct object_id
  builtin/hash-object: convert to struct object_id
maint
Junio C Hamano 2017-08-26 22:55:06 -07:00
commit 6b8aa3294e
9 changed files with 34 additions and 34 deletions

View File

@ -111,7 +111,7 @@ static int use_wt_file(const char *workdir, const char *name,
int fd = open(buf.buf, O_RDONLY); int fd = open(buf.buf, O_RDONLY);


if (fd >= 0 && if (fd >= 0 &&
!index_fd(wt_oid.hash, fd, &st, OBJ_BLOB, name, 0)) { !index_fd(&wt_oid, fd, &st, OBJ_BLOB, name, 0)) {
if (is_null_oid(oid)) { if (is_null_oid(oid)) {
oidcpy(oid, &wt_oid); oidcpy(oid, &wt_oid);
use = 1; use = 1;

View File

@ -16,7 +16,7 @@
* needs to bypass the data conversion performed by, and the type * needs to bypass the data conversion performed by, and the type
* limitation imposed by, index_fd() and its callees. * limitation imposed by, index_fd() and its callees.
*/ */
static int hash_literally(unsigned char *sha1, int fd, const char *type, unsigned flags) static int hash_literally(struct object_id *oid, int fd, const char *type, unsigned flags)
{ {
struct strbuf buf = STRBUF_INIT; struct strbuf buf = STRBUF_INIT;
int ret; int ret;
@ -24,7 +24,7 @@ static int hash_literally(unsigned char *sha1, int fd, const char *type, unsigne
if (strbuf_read(&buf, fd, 4096) < 0) if (strbuf_read(&buf, fd, 4096) < 0)
ret = -1; ret = -1;
else else
ret = hash_sha1_file_literally(buf.buf, buf.len, type, sha1, flags); ret = hash_sha1_file_literally(buf.buf, buf.len, type, oid, flags);
strbuf_release(&buf); strbuf_release(&buf);
return ret; return ret;
} }
@ -33,16 +33,16 @@ static void hash_fd(int fd, const char *type, const char *path, unsigned flags,
int literally) int literally)
{ {
struct stat st; struct stat st;
unsigned char sha1[20]; struct object_id oid;


if (fstat(fd, &st) < 0 || if (fstat(fd, &st) < 0 ||
(literally (literally
? hash_literally(sha1, fd, type, flags) ? hash_literally(&oid, fd, type, flags)
: index_fd(sha1, fd, &st, type_from_string(type), path, flags))) : index_fd(&oid, fd, &st, type_from_string(type), path, flags)))
die((flags & HASH_WRITE_OBJECT) die((flags & HASH_WRITE_OBJECT)
? "Unable to add %s to database" ? "Unable to add %s to database"
: "Unable to hash %s", path); : "Unable to hash %s", path);
printf("%s\n", sha1_to_hex(sha1)); printf("%s\n", oid_to_hex(&oid));
maybe_flush_or_die(stdout, "hash to stdout"); maybe_flush_or_die(stdout, "hash to stdout");
} }



View File

@ -269,7 +269,7 @@ static void import_object(struct object_id *oid, enum object_type type,


if (fstat(fd, &st) < 0) if (fstat(fd, &st) < 0)
die_errno("unable to fstat %s", filename); die_errno("unable to fstat %s", filename);
if (index_fd(oid->hash, fd, &st, type, NULL, flags) < 0) if (index_fd(oid, fd, &st, type, NULL, flags) < 0)
die("unable to write object to database"); die("unable to write object to database");
/* index_fd close()s fd for us */ /* index_fd close()s fd for us */
} }

View File

@ -280,7 +280,7 @@ static int add_one_path(const struct cache_entry *old, const char *path, int len
fill_stat_cache_info(ce, st); fill_stat_cache_info(ce, st);
ce->ce_mode = ce_mode_from_stat(old, st->st_mode); ce->ce_mode = ce_mode_from_stat(old, st->st_mode);


if (index_path(ce->oid.hash, path, st, if (index_path(&ce->oid, path, st,
info_only ? 0 : HASH_WRITE_OBJECT)) { info_only ? 0 : HASH_WRITE_OBJECT)) {
free(ce); free(ce);
return -1; return -1;

View File

@ -684,8 +684,8 @@ extern int ie_modified(const struct index_state *, const struct cache_entry *, s


#define HASH_WRITE_OBJECT 1 #define HASH_WRITE_OBJECT 1
#define HASH_FORMAT_CHECK 2 #define HASH_FORMAT_CHECK 2
extern int index_fd(unsigned char *sha1, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags); extern int index_fd(struct object_id *oid, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags);
extern int index_path(unsigned char *sha1, const char *path, struct stat *st, unsigned flags); extern int index_path(struct object_id *oid, const char *path, struct stat *st, unsigned flags);


/* /*
* Record to sd the data from st that we use to check whether a file * Record to sd the data from st that we use to check whether a file
@ -1192,7 +1192,7 @@ static inline const unsigned char *lookup_replace_object(const unsigned char *sh
extern int sha1_object_info(const unsigned char *, unsigned long *); extern int sha1_object_info(const unsigned char *, unsigned long *);
extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1); extern int hash_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *sha1);
extern int write_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *return_sha1); extern int write_sha1_file(const void *buf, unsigned long len, const char *type, unsigned char *return_sha1);
extern int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type, unsigned char *sha1, unsigned flags); extern int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type, struct object_id *oid, unsigned flags);
extern int pretend_sha1_file(void *, unsigned long, enum object_type, unsigned char *); extern int pretend_sha1_file(void *, unsigned long, enum object_type, unsigned char *);
extern int force_object_loose(const unsigned char *sha1, time_t mtime); extern int force_object_loose(const unsigned char *sha1, time_t mtime);
extern int git_open_cloexec(const char *name, int flags); extern int git_open_cloexec(const char *name, int flags);

2
diff.c
View File

@ -4011,7 +4011,7 @@ static void diff_fill_oid_info(struct diff_filespec *one)
} }
if (lstat(one->path, &st) < 0) if (lstat(one->path, &st) < 0)
die_errno("stat '%s'", one->path); die_errno("stat '%s'", one->path);
if (index_path(one->oid.hash, one->path, &st, 0)) if (index_path(&one->oid, one->path, &st, 0))
die("cannot hash %s", one->path); die("cannot hash %s", one->path);
} }
} }

View File

@ -709,7 +709,7 @@ int notes_merge_commit(struct notes_merge_options *o,
/* write file as blob, and add to partial_tree */ /* write file as blob, and add to partial_tree */
if (stat(path.buf, &st)) if (stat(path.buf, &st))
die_errno("Failed to stat '%s'", path.buf); die_errno("Failed to stat '%s'", path.buf);
if (index_path(blob_oid.hash, path.buf, &st, HASH_WRITE_OBJECT)) if (index_path(&blob_oid, path.buf, &st, HASH_WRITE_OBJECT))
die("Failed to write blob object from '%s'", path.buf); die("Failed to write blob object from '%s'", path.buf);
if (add_note(partial_tree, &obj_oid, &blob_oid, NULL)) if (add_note(partial_tree, &obj_oid, &blob_oid, NULL))
die("Failed to add resolved note '%s' to notes tree", die("Failed to add resolved note '%s' to notes tree",

View File

@ -160,9 +160,9 @@ static int ce_compare_data(const struct cache_entry *ce, struct stat *st)
int fd = git_open_cloexec(ce->name, O_RDONLY); int fd = git_open_cloexec(ce->name, O_RDONLY);


if (fd >= 0) { if (fd >= 0) {
unsigned char sha1[20]; struct object_id oid;
if (!index_fd(sha1, fd, st, OBJ_BLOB, ce->name, 0)) if (!index_fd(&oid, fd, st, OBJ_BLOB, ce->name, 0))
match = hashcmp(sha1, ce->oid.hash); match = oidcmp(&oid, &ce->oid);
/* index_fd() closed the file descriptor already */ /* index_fd() closed the file descriptor already */
} }
return match; return match;
@ -689,7 +689,7 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
return 0; return 0;
} }
if (!intent_only) { if (!intent_only) {
if (index_path(ce->oid.hash, path, st, HASH_WRITE_OBJECT)) { if (index_path(&ce->oid, path, st, HASH_WRITE_OBJECT)) {
free(ce); free(ce);
return error("unable to index file %s", path); return error("unable to index file %s", path);
} }

View File

@ -3403,7 +3403,7 @@ int write_sha1_file(const void *buf, unsigned long len, const char *type, unsign
} }


int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type, int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type,
unsigned char *sha1, unsigned flags) struct object_id *oid, unsigned flags)
{ {
char *header; char *header;
int hdrlen, status = 0; int hdrlen, status = 0;
@ -3411,13 +3411,13 @@ int hash_sha1_file_literally(const void *buf, unsigned long len, const char *typ
/* type string, SP, %lu of the length plus NUL must fit this */ /* type string, SP, %lu of the length plus NUL must fit this */
hdrlen = strlen(type) + 32; hdrlen = strlen(type) + 32;
header = xmalloc(hdrlen); header = xmalloc(hdrlen);
write_sha1_file_prepare(buf, len, type, sha1, header, &hdrlen); write_sha1_file_prepare(buf, len, type, oid->hash, header, &hdrlen);


if (!(flags & HASH_WRITE_OBJECT)) if (!(flags & HASH_WRITE_OBJECT))
goto cleanup; goto cleanup;
if (freshen_packed_object(sha1) || freshen_loose_object(sha1)) if (freshen_packed_object(oid->hash) || freshen_loose_object(oid->hash))
goto cleanup; goto cleanup;
status = write_loose_object(sha1, header, hdrlen, buf, len, 0); status = write_loose_object(oid->hash, header, hdrlen, buf, len, 0);


cleanup: cleanup:
free(header); free(header);
@ -3621,14 +3621,14 @@ static int index_core(unsigned char *sha1, int fd, size_t size,
* binary blobs, they generally do not want to get any conversion, and * binary blobs, they generally do not want to get any conversion, and
* callers should avoid this code path when filters are requested. * callers should avoid this code path when filters are requested.
*/ */
static int index_stream(unsigned char *sha1, int fd, size_t size, static int index_stream(struct object_id *oid, int fd, size_t size,
enum object_type type, const char *path, enum object_type type, const char *path,
unsigned flags) unsigned flags)
{ {
return index_bulk_checkin(sha1, fd, size, type, path, flags); return index_bulk_checkin(oid->hash, fd, size, type, path, flags);
} }


int index_fd(unsigned char *sha1, int fd, struct stat *st, int index_fd(struct object_id *oid, int fd, struct stat *st,
enum object_type type, const char *path, unsigned flags) enum object_type type, const char *path, unsigned flags)
{ {
int ret; int ret;
@ -3638,21 +3638,21 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st,
* die() for large files. * die() for large files.
*/ */
if (type == OBJ_BLOB && path && would_convert_to_git_filter_fd(path)) if (type == OBJ_BLOB && path && would_convert_to_git_filter_fd(path))
ret = index_stream_convert_blob(sha1, fd, path, flags); ret = index_stream_convert_blob(oid->hash, fd, path, flags);
else if (!S_ISREG(st->st_mode)) else if (!S_ISREG(st->st_mode))
ret = index_pipe(sha1, fd, type, path, flags); ret = index_pipe(oid->hash, fd, type, path, flags);
else if (st->st_size <= big_file_threshold || type != OBJ_BLOB || else if (st->st_size <= big_file_threshold || type != OBJ_BLOB ||
(path && would_convert_to_git(&the_index, path))) (path && would_convert_to_git(&the_index, path)))
ret = index_core(sha1, fd, xsize_t(st->st_size), type, path, ret = index_core(oid->hash, fd, xsize_t(st->st_size), type, path,
flags); flags);
else else
ret = index_stream(sha1, fd, xsize_t(st->st_size), type, path, ret = index_stream(oid, fd, xsize_t(st->st_size), type, path,
flags); flags);
close(fd); close(fd);
return ret; return ret;
} }


int index_path(unsigned char *sha1, const char *path, struct stat *st, unsigned flags) int index_path(struct object_id *oid, const char *path, struct stat *st, unsigned flags)
{ {
int fd; int fd;
struct strbuf sb = STRBUF_INIT; struct strbuf sb = STRBUF_INIT;
@ -3662,7 +3662,7 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, unsigned
fd = open(path, O_RDONLY); fd = open(path, O_RDONLY);
if (fd < 0) if (fd < 0)
return error_errno("open(\"%s\")", path); return error_errno("open(\"%s\")", path);
if (index_fd(sha1, fd, st, OBJ_BLOB, path, flags) < 0) if (index_fd(oid, fd, st, OBJ_BLOB, path, flags) < 0)
return error("%s: failed to insert into database", return error("%s: failed to insert into database",
path); path);
break; break;
@ -3670,14 +3670,14 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, unsigned
if (strbuf_readlink(&sb, path, st->st_size)) if (strbuf_readlink(&sb, path, st->st_size))
return error_errno("readlink(\"%s\")", path); return error_errno("readlink(\"%s\")", path);
if (!(flags & HASH_WRITE_OBJECT)) if (!(flags & HASH_WRITE_OBJECT))
hash_sha1_file(sb.buf, sb.len, blob_type, sha1); hash_sha1_file(sb.buf, sb.len, blob_type, oid->hash);
else if (write_sha1_file(sb.buf, sb.len, blob_type, sha1)) else if (write_sha1_file(sb.buf, sb.len, blob_type, oid->hash))
return error("%s: failed to insert into database", return error("%s: failed to insert into database",
path); path);
strbuf_release(&sb); strbuf_release(&sb);
break; break;
case S_IFDIR: case S_IFDIR:
return resolve_gitlink_ref(path, "HEAD", sha1); return resolve_gitlink_ref(path, "HEAD", oid->hash);
default: default:
return error("%s: unsupported file type", path); return error("%s: unsupported file type", path);
} }