diff options
author | Vincent Ambo <Vincent Ambo> | 2020-01-11T23·36+0000 |
---|---|---|
committer | Vincent Ambo <Vincent Ambo> | 2020-01-11T23·40+0000 |
commit | 7ef0d62730840ded097b524104cc0a0904591a63 (patch) | |
tree | a670f96103667aeca4789a95d94ca0dff550c4ce /third_party/git/archive.h | |
parent | 6a2a3007077818e24a3d56fc492ada9206a10cf0 (diff) | |
parent | 1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (diff) |
merge(third_party/git): Merge squashed git subtree at v2.23.0 r/373
Merge commit '1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5' as 'third_party/git'
Diffstat (limited to 'third_party/git/archive.h')
-rw-r--r-- | third_party/git/archive.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/third_party/git/archive.h b/third_party/git/archive.h new file mode 100644 index 000000000000..e60e3dd31c79 --- /dev/null +++ b/third_party/git/archive.h @@ -0,0 +1,59 @@ +#ifndef ARCHIVE_H +#define ARCHIVE_H + +#include "cache.h" +#include "pathspec.h" + +struct repository; + +struct archiver_args { + struct repository *repo; + const char *base; + size_t baselen; + struct tree *tree; + const struct object_id *commit_oid; + const struct commit *commit; + timestamp_t time; + struct pathspec pathspec; + unsigned int verbose : 1; + unsigned int worktree_attributes : 1; + unsigned int convert : 1; + int compression_level; +}; + +/* main api */ + +int write_archive(int argc, const char **argv, const char *prefix, + struct repository *repo, + const char *name_hint, int remote); + +const char *archive_format_from_filename(const char *filename); + +/* archive backend stuff */ + +#define ARCHIVER_WANT_COMPRESSION_LEVELS 1 +#define ARCHIVER_REMOTE 2 +struct archiver { + const char *name; + int (*write_archive)(const struct archiver *, struct archiver_args *); + unsigned flags; + void *data; +}; +void register_archiver(struct archiver *); + +void init_tar_archiver(void); +void init_zip_archiver(void); +void init_archivers(void); + +typedef int (*write_archive_entry_fn_t)(struct archiver_args *args, + const struct object_id *oid, + const char *path, size_t pathlen, + unsigned int mode); + +int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry); +void *object_file_to_archive(const struct archiver_args *args, + const char *path, const struct object_id *oid, + unsigned int mode, enum object_type *type, + unsigned long *sizep); + +#endif /* ARCHIVE_H */ |