ret = index_core(istate, oid, fd, xsize_t(st->st_size),
type, path, flags);
} else {
- struct object_database *odb = the_repository->objects;
- struct odb_transaction_files *files_transaction;
- struct odb_transaction *transaction;
-
- transaction = odb_transaction_begin(odb);
- files_transaction = container_of(odb->transaction,
- struct odb_transaction_files,
- base);
- ret = index_blob_packfile_transaction(files_transaction, oid, fd,
- xsize_t(st->st_size),
- path, flags);
- odb_transaction_commit(transaction);
+ if (flags & INDEX_WRITE_OBJECT) {
++ struct object_database *odb = the_repository->objects;
++ struct odb_transaction_files *files_transaction;
+ struct odb_transaction *transaction;
+
- transaction = odb_transaction_begin(the_repository->objects);
- ret = index_blob_packfile_transaction(the_repository->objects->transaction,
- oid, fd,
++ transaction = odb_transaction_begin(odb);
++ files_transaction = container_of(odb->transaction,
++ struct odb_transaction_files,
++ base);
++ ret = index_blob_packfile_transaction(files_transaction, oid, fd,
+ xsize_t(st->st_size),
+ path, flags);
+ odb_transaction_commit(transaction);
+ } else {
+ ret = hash_blob_stream(the_repository->hash_algo, oid,
+ fd, xsize_t(st->st_size));
+ }
}
close(fd);