summaryrefslogtreecommitdiff
path: root/archive.c
diff options
context:
space:
mode:
Diffstat (limited to 'archive.c')
-rw-r--r--archive.c50
1 files changed, 34 insertions, 16 deletions
diff --git a/archive.c b/archive.c
index b9c200cba6..310672b479 100644
--- a/archive.c
+++ b/archive.c
@@ -7,13 +7,14 @@
#include "convert.h"
#include "environment.h"
#include "gettext.h"
+#include "git-zlib.h"
#include "hex.h"
#include "object-name.h"
#include "path.h"
#include "pretty.h"
#include "setup.h"
#include "refs.h"
-#include "object-store-ll.h"
+#include "odb.h"
#include "commit.h"
#include "tree.h"
#include "tree-walk.h"
@@ -97,7 +98,7 @@ static void *object_file_to_archive(const struct archiver_args *args,
(args->tree ? &args->tree->object.oid : NULL), oid);
path += args->baselen;
- buffer = repo_read_object_file(the_repository, oid, type, sizep);
+ buffer = odb_read_object(the_repository->objects, oid, type, sizep);
if (buffer && S_ISREG(mode)) {
struct strbuf buf = STRBUF_INIT;
size_t size = 0;
@@ -214,8 +215,8 @@ static int write_archive_entry(const struct object_id *oid, const char *base,
/* Stream it? */
if (S_ISREG(mode) && !args->convert &&
- oid_object_info(args->repo, oid, &size) == OBJ_BLOB &&
- size > big_file_threshold)
+ odb_read_object_info(args->repo->objects, oid, &size) == OBJ_BLOB &&
+ size > repo_settings_get_big_file_threshold(the_repository))
return write_entry(args, oid, path.buf, path.len, mode, NULL, size);
buffer = object_file_to_archive(args, path.buf, oid, mode, &type, &size);
@@ -311,7 +312,7 @@ int write_archive_entries(struct archiver_args *args,
struct object_id fake_oid;
int i;
- oidcpy(&fake_oid, null_oid());
+ oidcpy(&fake_oid, null_oid(the_hash_algo));
if (args->baselen > 0 && args->base[args->baselen - 1] == '/') {
size_t len = args->baselen;
@@ -649,20 +650,37 @@ static int parse_archive_args(int argc, const char **argv,
OPT_STRING(0, "format", &format, N_("fmt"), N_("archive format")),
OPT_STRING(0, "prefix", &base, N_("prefix"),
N_("prepend prefix to each pathname in the archive")),
- { OPTION_CALLBACK, 0, "add-file", args, N_("file"),
- N_("add untracked file to archive"), 0, add_file_cb,
- (intptr_t)&base },
- { OPTION_CALLBACK, 0, "add-virtual-file", args,
- N_("path:content"), N_("add untracked file to archive"), 0,
- add_file_cb, (intptr_t)&base },
+ {
+ .type = OPTION_CALLBACK,
+ .long_name = "add-file",
+ .value = args,
+ .argh = N_("file"),
+ .help = N_("add untracked file to archive"),
+ .callback = add_file_cb,
+ .defval = (intptr_t) &base,
+ },
+ {
+ .type = OPTION_CALLBACK,
+ .long_name = "add-virtual-file",
+ .value = args,
+ .argh = N_("path:content"),
+ .help = N_("add untracked file to archive"),
+ .callback = add_file_cb,
+ .defval = (intptr_t) &base,
+ },
OPT_STRING('o', "output", &output, N_("file"),
N_("write the archive to this file")),
OPT_BOOL(0, "worktree-attributes", &worktree_attributes,
N_("read .gitattributes in working directory")),
OPT__VERBOSE(&verbose, N_("report archived files on stderr")),
- { OPTION_STRING, 0, "mtime", &mtime_option, N_("time"),
- N_("set modification time of archive entries"),
- PARSE_OPT_NONEG },
+ {
+ .type = OPTION_STRING,
+ .long_name = "mtime",
+ .value = &mtime_option,
+ .argh = N_("time"),
+ .help = N_("set modification time of archive entries"),
+ .flags = PARSE_OPT_NONEG,
+ },
OPT_NUMBER_CALLBACK(&compression_level,
N_("set compression level"), number_callback),
OPT_GROUP(""),
@@ -742,8 +760,8 @@ int write_archive(int argc, const char **argv, const char *prefix,
const char **argv_copy;
int rc;
- git_config_get_bool("uploadarchive.allowunreachable", &remote_allow_unreachable);
- git_config(git_default_config, NULL);
+ repo_config_get_bool(the_repository, "uploadarchive.allowunreachable", &remote_allow_unreachable);
+ repo_config(the_repository, git_default_config, NULL);
describe_status.max_invocations = 1;
ctx.date_mode.type = DATE_NORMAL;