github.com/mutagen-io/mutagen@v0.18.0-rc1/pkg/synchronization/configuration.proto (about)

     1  syntax = "proto3";
     2  
     3  package synchronization;
     4  
     5  option go_package = "github.com/mutagen-io/mutagen/pkg/synchronization";
     6  
     7  import "filesystem/behavior/probe_mode.proto";
     8  import "synchronization/scan_mode.proto";
     9  import "synchronization/stage_mode.proto";
    10  import "synchronization/watch_mode.proto";
    11  import "synchronization/compression/algorithm.proto";
    12  import "synchronization/core/mode.proto";
    13  import "synchronization/core/permissions_mode.proto";
    14  import "synchronization/core/symbolic_link_mode.proto";
    15  import "synchronization/core/ignore/syntax.proto";
    16  import "synchronization/core/ignore/ignore_vcs_mode.proto";
    17  import "synchronization/hashing/algorithm.proto";
    18  
    19  // Configuration encodes session configuration parameters. It is used for create
    20  // commands to specify configuration options, for loading global configuration
    21  // options, and for storing a merged configuration inside sessions. It should be
    22  // considered immutable.
    23  message Configuration {
    24      // Synchronization parameters (fields 11-20).
    25      // NOTE: These run from field indices 11-20 (rather than 1-10, which are
    26      // reserved for symbolic link configuration parameters) due to the
    27      // historical order in which these fields were added. Field 17 (the digest
    28      // algorithm) is also listed out of its chronological order of addition due
    29      // to its relative importance in the configuration.
    30  
    31      // SynchronizationMode specifies the synchronization mode that should be
    32      // used in synchronization.
    33      core.SynchronizationMode synchronizationMode = 11;
    34  
    35      // HashingAlgorithm specifies the content hashing algorithm used to track
    36      // content and perform differential transfers.
    37      hashing.Algorithm hashingAlgorithm = 17;
    38  
    39      // MaximumEntryCount specifies the maximum number of filesystem entries that
    40      // endpoints will tolerate managing. A zero value indicates no limit.
    41      uint64 maximumEntryCount = 12;
    42  
    43      // MaximumStagingFileSize is the maximum (individual) file size that
    44      // endpoints will stage. A zero value indicates no limit.
    45      uint64 maximumStagingFileSize = 13;
    46  
    47      // ProbeMode specifies the filesystem probing mode.
    48      behavior.ProbeMode probeMode = 14;
    49  
    50      // ScanMode specifies the synchronization root scanning mode.
    51      ScanMode scanMode = 15;
    52  
    53      // StageMode specifies the file staging mode.
    54      StageMode stageMode = 16;
    55  
    56      // Fields 18-20 are reserved for future synchronization configuration
    57      // parameters.
    58  
    59  
    60      // Symbolic link configuration parameters (fields 1-10).
    61      // NOTE: These run from field indices 1-10. The reason for this is that
    62      // symbolic link configuration parameters is due to the historical order in
    63      // which configuration fields were added.
    64  
    65      // SymbolicLinkMode specifies the symbolic link mode.
    66      core.SymbolicLinkMode symbolicLinkMode = 1;
    67  
    68      // Fields 2-10 are reserved for future symbolic link configuration
    69      // parameters.
    70  
    71  
    72      // Watch configuration parameters (fields 21-30).
    73  
    74      // WatchMode specifies the filesystem watching mode.
    75      WatchMode watchMode = 21;
    76  
    77      // WatchPollingInterval specifies the interval (in seconds) for poll-based
    78      // file monitoring. A value of 0 specifies that the default interval should
    79      // be used.
    80      uint32 watchPollingInterval = 22;
    81  
    82      // Fields 23-30 are reserved for future watch configuration parameters.
    83  
    84  
    85      // Ignore configuration parameters (fields 31-60).
    86  
    87      // IgnoreSyntax specifies the syntax and semantics to use for ignores.
    88      // NOTE: This field is out of order due to the historical order in which it
    89      // was added.
    90      ignore.Syntax ignoreSyntax = 34;
    91  
    92      // DefaultIgnores specifies the ignore patterns brought in from the global
    93      // configuration.
    94      // DEPRECATED: This field is no longer used when loading from global
    95      // configuration. Instead, ignores provided by global configuration are
    96      // simply merged into the ignore list of the main configuration. However,
    97      // older sessions still use this field.
    98      repeated string defaultIgnores = 31;
    99  
   100      // Ignores specifies the ignore patterns brought in from the create request.
   101      repeated string ignores = 32;
   102  
   103      // IgnoreVCSMode specifies the VCS ignore mode that should be used in
   104      // synchronization.
   105      ignore.IgnoreVCSMode ignoreVCSMode = 33;
   106  
   107      // Fields 35-60 are reserved for future ignore configuration parameters.
   108  
   109  
   110      // Permissions configuration parameters (fields 61-80).
   111  
   112      // PermissionsMode species the manner in which permissions should be
   113      // propagated between endpoints.
   114      core.PermissionsMode permissionsMode = 61;
   115  
   116      // Field 62 is reserved for PermissionsPreservationMode.
   117  
   118      // DefaultFileMode specifies the default permission mode to use for new
   119      // files in "portable" permission propagation mode.
   120      uint32 defaultFileMode = 63;
   121  
   122      // DefaultDirectoryMode specifies the default permission mode to use for new
   123      // files in "portable" permission propagation mode.
   124      uint32 defaultDirectoryMode = 64;
   125  
   126      // DefaultOwner specifies the default owner identifier to use when setting
   127      // ownership of new files and directories in "portable" permission
   128      // propagation mode.
   129      string defaultOwner = 65;
   130  
   131      // DefaultGroup specifies the default group identifier to use when setting
   132      // ownership of new files and directories in "portable" permission
   133      // propagation mode.
   134      string defaultGroup = 66;
   135  
   136      // Fields 67-80 are reserved for future permission configuration parameters.
   137  
   138  
   139      // Compression configuration parameters (fields 81-90).
   140  
   141      // CompressionAlgorithm specifies the compression algorithm to use when
   142      // communicating with the endpoint. This only applies to remote endpoints.
   143      compression.Algorithm compressionAlgorithm = 81;
   144  
   145      // Fields 82-90 are reserved for future compression configuration
   146      // parameters.
   147  }