git/archive.h

#ifndef ARCHIVE_H
#define ARCHIVE_H

#include "pathspec.h"
#include "string-list.h"

struct repository;
struct pretty_print_context;

struct archiver_args {};

/* 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
#define ARCHIVER_REMOTE
#define ARCHIVER_HIGH_COMPRESSION_LEVELS
struct archiver {};
void register_archiver(struct archiver *);

void init_tar_archiver(void);
void init_zip_archiver(void);
void init_archivers(void);

write_archive_entry_fn_t;

int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry);

#endif	/* ARCHIVE_H */