Get desktop application:
View/edit binary Protocol Buffers messages
Archive is a wrapper that distinguishes between a nil Entry and a zero-valued Entry when serializing. This is necessary because Protocol Buffers will encode both a nil Entry and a zero-valued Entry as an empty byte slice if they are the root message that's being serialized. Adding a level of indirection allows for a distinction in encoding between an absence of content and an empty directory.
Used in:
Content is the entry stored in the archive. It may be nil to indicate an absence of content.
Cache provides a store for file metadata and digets to allow for efficient rescans.
Entries is a map from scan path to cache entry.
CacheEntry represents cache data for a file on disk.
Used in:
Mode stores the value of the POSIX mode bits (i.e. the st_mode member of struct stat). On Windows, this value is computed using the Go os.FileMode value retrieved through the os package (for which bit definitions are guaranteed to be stable).
ModificationTime is the cached modification time.
Size is the cached size.
FileID is the file identifier. On POSIX systems it is the inode number. On Windows it is currently 0.
Digest is the cached digest for file entries.
Change encodes a change to an entry hierarchy. Change objects should be considered immutable and must not be modified.
Used in:
,Path is the path of the root of the change (relative to the synchronization root).
Old represents the old filesystem hierarchy at the change path. It may be nil if no content previously existed.
New represents the new filesystem hierarchy at the change path. It may be nil if content has been deleted.
Conflict encodes conflicting changes on alpha and beta that prevent synchronization of a particular path. Conflict objects should be considered immutable and must not be modified.
Used in:
Root is the root path for the conflict (relative to the synchronization root). While this can (in theory) be computed based on the change lists contained within the conflict, doing so relies on those change lists being constructed and ordered in a particular manner that's not possible to enforce. Additionally, conflicts are often sorted by their root path, and dynamically computing it on every sort comparison operation would be prohibitively expensive.
AlphaChanges are the relevant changes on alpha.
BetaChanges are the relevant changes on beta.
Entry encodes a filesystem entry (e.g. a directory, a file, or a symbolic link). A nil Entry represents an absence of content. An zero-value Entry represents an empty Directory. Entry objects should be considered immutable and must not be modified.
Used in:
, ,Kind encodes the type of filesystem entry being represented.
Contents represents a directory entry's contents. It must only be non-nil for directory entries.
Digest represents the hash of a file entry's contents. It must only be non-nil for file entries.
Executable indicates whether or not a file entry is marked as executable. It must only be set (if appropriate) for file entries.
Target is the symbolic link target for symbolic link entries. It must be non-empty if and only if the entry is a symbolic link.
Problem indicates the relevant error for problematic content. It must be non-empty if and only if the entry represents problematic content.
EntryKind encodes the type of entry represented by an Entry object.
Used in:
EntryKind_Directory indicates a directory.
EntryKind_File indicates a regular file.
EntryKind_SymbolicLink indicates a symbolic link.
EntryKind_Untracked indicates content (or the root of content) that is intentionally excluded from synchronization by Mutagen. This includes explicitly ignored content, content that is ignored due to settings (such as symbolic links in the "ignore" symbolic link mode), as well as content types that Mutagen doesn't understand and/or have a way to propagate (such as FIFOs and Unix domain sockets). This type of entry is not synchronizable.
EntryKind_Problematic indicates content (or the root of content) that would normally be synchronized, but which is currently inaccessible to scanning. This includes (but is not limited to) content that is modified concurrently with scanning, content that is inaccessible due to permissions, content that can't be read due to filesystem errors, content that cannot be properly encoded given the current settings (such as absolute symbolic links found when using the "portable" symbolic link mode), and content that Mutagen cannot scan or watch reliably (such as directories that are also mount points). This type of entry is not synchronizable.
EntryKind_PhantomDirectory indicates a directory that was recorded with an ignore mask. This type is used to support Docker-style ignore syntax and semantics, which allow directories to be unignored by child content that is explicitly unignored. This type is pseudo-synchronizable; entries containing phantom contents must have those contents reified (to tracked or ignored directories) using ReifyPhantomDirectories before Reconcile.
PermissionsMode specifies the mode for handling permission propagation.
Used in:
PermissionsMode_PermissionsModeDefault represents an unspecified permissions mode. It is not valid for use with Scan. It should be converted to one of the following values based on the desired default behavior.
PermissionsMode_PermissionsModePortable specifies that permissions should be propagated in a portable fashion. This means that only executability bits are managed by Mutagen and that manual specifications for ownership and base file permissions are used.
PermissionsMode_PermissionsModeManual specifies that only manual permission specifications should be used. In this case, Mutagen does not perform any propagation of permissions.
Problem indicates an issue or error encountered at some stage of a synchronization cycle. Problem objects should be considered immutable and must not be modified.
Used in:
,Path is the path at which the problem occurred (relative to the synchronization root).
Error is a human-readable summary of the problem.
Snapshot bundles a filesystem content snapshot with associated metadata. Snapshot objects should be considered immutable and must not be modified.
Content is the filesystem content at the snapshot root. It may be nil to indicate an absence of content.
PreservesExecutability indicates whether or not the associated filesystem preserves POSIX executability bits.
DecomposesUnicode indicates whether or not the associated filesystem decomposes Unicode names.
Directories is the number of synchronizable directory entries contained in the snapshot.
Files is the number of synchronizable file entries contained in the snapshot.
SymbolicLinks is the number of synchronizable symbolic link entries contained in the snapshot.
TotalFileSize is the total size of all synchronizable files referenced by the snapshot.
SymbolicLinkMode specifies the mode for handling symbolic links.
Used in:
SymbolicLinkMode_SymbolicLinkModeDefault represents an unspecified symbolic link mode. It is not valid for use with Scan or Transition. It should be converted to one of the following values based on the desired default behavior.
SymbolicLinkMode_SymbolicLinkModeIgnore specifies that all symbolic links should be ignored.
SymbolicLinkMode_SymbolicLinkModePortable specifies that only portable symbolic links should be synchronized. Any absolute symbolic links or symbolic links which are otherwise non-portable will be treate as problematic content.
SymbolicLinkMode_SymbolicLinkModePOSIXRaw specifies that symbolic links should be propagated in their raw form. It is only valid on POSIX systems and only makes sense in the context of POSIX-to-POSIX synchronization.
SynchronizationMode specifies the mode for synchronization, encoding both directionality and conflict resolution behavior.
Used in:
SynchronizationMode_SynchronizationModeDefault represents an unspecified synchronization mode. It is not valid for use with Reconcile. It should be converted to one of the following values based on the desired default behavior.
SynchronizationMode_SynchronizationModeTwoWaySafe represents a bidirectional synchronization mode where automatic conflict resolution is performed only in cases where no data would be lost. Specifically, this means that modified contents are allowed to propagate to the opposite endpoint if the corresponding contents on the opposite endpoint are unmodified or deleted. All other conflicts are left unresolved.
SynchronizationMode_SynchronizationModeTwoWayResolved is the same as SynchronizationMode_SynchronizationModeTwoWaySafe, but specifies that the alpha endpoint should win automatically in any conflict between alpha and beta, including cases where alpha has deleted contents that beta has modified.
SynchronizationMode_SynchronizationModeOneWaySafe represents a unidirectional synchronization mode where contents and changes propagate from alpha to beta, but won't overwrite any creations or modifications on beta.
SynchronizationMode_SynchronizationModeOneWayReplica represents a unidirectional synchronization mode where contents on alpha are mirrored (verbatim) to beta, overwriting any conflicting contents on beta and deleting any extraneous contents on beta.