mirror of
https://github.com/NixOS/nix
synced 2025-06-27 04:21:16 +02:00
Split GitRepoImpl::importTarball
There is now a separation of: 1. A `FileSystemObjectSink` for writing to git repos 2. Adapting libarchive to use that parse sink. The prepares a proper separation of concerns.
This commit is contained in:
parent
54354eaecf
commit
ba6a5f06ee
3 changed files with 249 additions and 156 deletions
|
@ -2,11 +2,20 @@
|
|||
|
||||
#include "filtering-input-accessor.hh"
|
||||
#include "input-accessor.hh"
|
||||
#include "fs-sink.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
namespace fetchers { struct PublicKey; }
|
||||
|
||||
struct GitFileSystemObjectSink : FileSystemObjectSink
|
||||
{
|
||||
/**
|
||||
* Flush builder and return a final Git hash.
|
||||
*/
|
||||
virtual Hash sync() = 0;
|
||||
};
|
||||
|
||||
struct GitRepo
|
||||
{
|
||||
virtual ~GitRepo()
|
||||
|
@ -70,14 +79,14 @@ struct GitRepo
|
|||
time_t lastModified;
|
||||
};
|
||||
|
||||
virtual TarballInfo importTarball(Source & source) = 0;
|
||||
|
||||
virtual bool hasObject(const Hash & oid) = 0;
|
||||
|
||||
virtual ref<InputAccessor> getAccessor(const Hash & rev, bool exportIgnore) = 0;
|
||||
|
||||
virtual ref<InputAccessor> getAccessor(const WorkdirInfo & wd, bool exportIgnore, MakeNotAllowedError makeNotAllowedError) = 0;
|
||||
|
||||
virtual ref<GitFileSystemObjectSink> getFileSystemObjectSink() = 0;
|
||||
|
||||
virtual void fetch(
|
||||
const std::string & url,
|
||||
const std::string & refspec,
|
||||
|
@ -90,6 +99,8 @@ struct GitRepo
|
|||
virtual void verifyCommit(
|
||||
const Hash & rev,
|
||||
const std::vector<fetchers::PublicKey> & publicKeys) = 0;
|
||||
|
||||
virtual TarballInfo importTarball(Source & source) = 0;
|
||||
};
|
||||
|
||||
ref<GitRepo> getTarballCache();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue