mirror of
https://github.com/git/git.git
synced 2025-12-23 12:14:22 +01:00
Merge branch 'ps/object-read-stream' into ps/packfile-store-in-odb-source
* ps/object-read-stream: streaming: drop redundant type and size pointers streaming: move into object database subsystem streaming: refactor interface to be object-database-centric streaming: move logic to read packed objects streams into backend streaming: move logic to read loose objects streams into backend streaming: make the `odb_read_stream` definition public streaming: get rid of `the_repository` streaming: rely on object sources to create object stream packfile: introduce function to read object info from a store streaming: move zlib stream into backends streaming: create structure for filtered object streams streaming: create structure for packed object streams streaming: create structure for loose object streams streaming: create structure for in-core object streams streaming: allocate stream inside the backend-specific logic streaming: explicitly pass packfile info when streaming a packed object streaming: propagate final object type via the stream streaming: drop the `open()` callback function streaming: rename `git_istream` into `odb_read_stream`
This commit is contained in:
@@ -16,12 +16,12 @@
|
||||
#include "progress.h"
|
||||
#include "fsck.h"
|
||||
#include "strbuf.h"
|
||||
#include "streaming.h"
|
||||
#include "thread-utils.h"
|
||||
#include "packfile.h"
|
||||
#include "pack-revindex.h"
|
||||
#include "object-file.h"
|
||||
#include "odb.h"
|
||||
#include "odb/streaming.h"
|
||||
#include "oid-array.h"
|
||||
#include "oidset.h"
|
||||
#include "path.h"
|
||||
@@ -762,7 +762,7 @@ static void find_ref_delta_children(const struct object_id *oid,
|
||||
|
||||
struct compare_data {
|
||||
struct object_entry *entry;
|
||||
struct git_istream *st;
|
||||
struct odb_read_stream *st;
|
||||
unsigned char *buf;
|
||||
unsigned long buf_size;
|
||||
};
|
||||
@@ -779,7 +779,7 @@ static int compare_objects(const unsigned char *buf, unsigned long size,
|
||||
}
|
||||
|
||||
while (size) {
|
||||
ssize_t len = read_istream(data->st, data->buf, size);
|
||||
ssize_t len = odb_read_stream_read(data->st, data->buf, size);
|
||||
if (len == 0)
|
||||
die(_("SHA1 COLLISION FOUND WITH %s !"),
|
||||
oid_to_hex(&data->entry->idx.oid));
|
||||
@@ -798,8 +798,6 @@ static int compare_objects(const unsigned char *buf, unsigned long size,
|
||||
static int check_collison(struct object_entry *entry)
|
||||
{
|
||||
struct compare_data data;
|
||||
enum object_type type;
|
||||
unsigned long size;
|
||||
|
||||
if (entry->size <= repo_settings_get_big_file_threshold(the_repository) ||
|
||||
entry->type != OBJ_BLOB)
|
||||
@@ -807,15 +805,14 @@ static int check_collison(struct object_entry *entry)
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.entry = entry;
|
||||
data.st = open_istream(the_repository, &entry->idx.oid, &type, &size,
|
||||
NULL);
|
||||
data.st = odb_read_stream_open(the_repository->objects, &entry->idx.oid, NULL);
|
||||
if (!data.st)
|
||||
return -1;
|
||||
if (size != entry->size || type != entry->type)
|
||||
if (data.st->size != entry->size || data.st->type != entry->type)
|
||||
die(_("SHA1 COLLISION FOUND WITH %s !"),
|
||||
oid_to_hex(&entry->idx.oid));
|
||||
unpack_data(entry, compare_objects, &data);
|
||||
close_istream(data.st);
|
||||
odb_read_stream_close(data.st);
|
||||
free(data.buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user