Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
file-content-address.hh File Reference
#include "source-accessor.hh"

Go to the source code of this file.

Enumerations

enum struct  nix::FileSerialisationMethod : uint8_t { Flat , NixArchive }
 
enum struct  nix::FileIngestionMethod : uint8_t { Flat , NixArchive , Git }
 

Functions

FileSerialisationMethod nix::parseFileSerialisationMethod (std::string_view input)
 
std::string_view nix::renderFileSerialisationMethod (FileSerialisationMethod method)
 
void nix::dumpPath (const SourcePath &path, Sink &sink, FileSerialisationMethod method, PathFilter &filter)
 
void nix::restorePath (const Path &path, Source &source, FileSerialisationMethod method, bool startFsync)
 
HashResult nix::hashPath (const SourcePath &path, FileSerialisationMethod method, HashAlgorithm ha, PathFilter &filter)
 
FileIngestionMethod nix::parseFileIngestionMethod (std::string_view input)
 
std::string_view nix::renderFileIngestionMethod (FileIngestionMethod method)
 
std::pair< Hash, std::optional< uint64_t > > nix::hashPath (const SourcePath &path, FileIngestionMethod method, HashAlgorithm ht, PathFilter &filter)
 

Enumeration Type Documentation

◆ FileIngestionMethod

enum struct nix::FileIngestionMethod : uint8_t
strong

An enumeration of the ways we can ingest file system objects, producing a hash or digest.

See file-system-object/content-address.md in the manual for a user-facing description of this concept.

Enumerator
Flat 

Hash FileSerialisationMethod::Flat serialisation.

See file-system-object/content-address.md#serial-flat in the manual.

NixArchive 

Hash FileSerialisationMethod::NixArchive serialisation.

See file-system-object/content-address.md#serial-flat in the manual.

Git 

Git hashing.

Part of ExperimentalFeature::GitHashing.

See file-system-object/content-address.md#serial-git in the manual.

◆ FileSerialisationMethod

enum struct nix::FileSerialisationMethod : uint8_t
strong

An enumeration of the ways we can serialize file system objects.

See file-system-object/content-address.md#serial in the manual for a user-facing description of this concept, but note that this type is also used for storing or sending copies; not just for addressing. Note also that there are other content addressing methods that don't correspond to a serialisation method.

Enumerator
Flat 

Flat-file. The contents of a single file exactly.

See file-system-object/content-address.md#serial-flat in the manual.

NixArchive 

Nix Archive. Serializes the file-system object in Nix Archive format.

See file-system-object/content-address.md#serial-nix-archive in the manual.

Function Documentation

◆ dumpPath()

void nix::dumpPath ( const SourcePath & path,
Sink & sink,
FileSerialisationMethod method,
PathFilter & filter = defaultPathFilter )

Dump a serialization of the given file system object.

◆ hashPath() [1/2]

std::pair< Hash, std::optional< uint64_t > > nix::hashPath ( const SourcePath & path,
FileIngestionMethod method,
HashAlgorithm ha,
PathFilter & filter = defaultPathFilter )

Compute the hash of the given file system object according to the given method, and for some ingestion methods, the size of the serialisation.

Unlike the other hashPath, this works on an arbitrary FileIngestionMethod instead of FileSerialisationMethod, but may not return the size as this is this is not a both simple and useful defined for a merkle format.

◆ hashPath() [2/2]

HashResult nix::hashPath ( const SourcePath & path,
FileSerialisationMethod method,
HashAlgorithm ha,
PathFilter & filter = defaultPathFilter )

Compute the hash of the given file system object according to the given method.

the hash is defined as (in pseudocode):

hashString(ha, dumpPath(...))

◆ parseFileIngestionMethod()

FileIngestionMethod nix::parseFileIngestionMethod ( std::string_view input)

Parse a FileIngestionMethod by name. Choice of:

  • flat: FileIngestionMethod::Flat
  • nar: FileIngestionMethod::NixArchive
  • git: FileIngestionMethod::Git

Opposite of renderFileIngestionMethod.

◆ parseFileSerialisationMethod()

FileSerialisationMethod nix::parseFileSerialisationMethod ( std::string_view input)

Parse a FileSerialisationMethod by name. Choice of:

  • flat: FileSerialisationMethod::Flat
  • nar: FileSerialisationMethod::NixArchive

Opposite of renderFileSerialisationMethod.

◆ renderFileIngestionMethod()

std::string_view nix::renderFileIngestionMethod ( FileIngestionMethod method)

Render a FileIngestionMethod by name.

Opposite of parseFileIngestionMethod.

◆ renderFileSerialisationMethod()

std::string_view nix::renderFileSerialisationMethod ( FileSerialisationMethod method)

Render a FileSerialisationMethod by name.

Opposite of parseFileSerialisationMethod.

◆ restorePath()

void nix::restorePath ( const Path & path,
Source & source,
FileSerialisationMethod method,
bool startFsync = false )

Restore a serialisation of the given file system object.

Todo
use an arbitrary FileSystemObjectSink.