-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconfiguration.proto
175 lines (133 loc) · 7.01 KB
/
configuration.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
/*
* This file was taken from
* https://github.com/coder/mutagen/tree/v0.18.2/pkg/synchronization/configuration.proto
*
* MIT License
*
* Copyright (c) 2016-present Docker, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
syntax = "proto3";
package synchronization;
option csharp_namespace = "Coder.Desktop.MutagenSdk.Proto.Synchronization";
option go_package = "github.com/mutagen-io/mutagen/pkg/synchronization";
import "filesystem/behavior/probe_mode.proto";
import "synchronization/scan_mode.proto";
import "synchronization/stage_mode.proto";
import "synchronization/watch_mode.proto";
import "synchronization/compression/algorithm.proto";
import "synchronization/core/mode.proto";
import "synchronization/core/permissions_mode.proto";
import "synchronization/core/symbolic_link_mode.proto";
import "synchronization/core/ignore/syntax.proto";
import "synchronization/core/ignore/ignore_vcs_mode.proto";
import "synchronization/hashing/algorithm.proto";
// Configuration encodes session configuration parameters. It is used for create
// commands to specify configuration options, for loading global configuration
// options, and for storing a merged configuration inside sessions. It should be
// considered immutable.
message Configuration {
// Synchronization parameters (fields 11-20).
// NOTE: These run from field indices 11-20 (rather than 1-10, which are
// reserved for symbolic link configuration parameters) due to the
// historical order in which these fields were added. Field 17 (the digest
// algorithm) is also listed out of its chronological order of addition due
// to its relative importance in the configuration.
// SynchronizationMode specifies the synchronization mode that should be
// used in synchronization.
core.SynchronizationMode synchronizationMode = 11;
// HashingAlgorithm specifies the content hashing algorithm used to track
// content and perform differential transfers.
hashing.Algorithm hashingAlgorithm = 17;
// MaximumEntryCount specifies the maximum number of filesystem entries that
// endpoints will tolerate managing. A zero value indicates no limit.
uint64 maximumEntryCount = 12;
// MaximumStagingFileSize is the maximum (individual) file size that
// endpoints will stage. A zero value indicates no limit.
uint64 maximumStagingFileSize = 13;
// ProbeMode specifies the filesystem probing mode.
behavior.ProbeMode probeMode = 14;
// ScanMode specifies the synchronization root scanning mode.
ScanMode scanMode = 15;
// StageMode specifies the file staging mode.
StageMode stageMode = 16;
// Fields 18-20 are reserved for future synchronization configuration
// parameters.
// Symbolic link configuration parameters (fields 1-10).
// NOTE: These run from field indices 1-10. The reason for this is that
// symbolic link configuration parameters is due to the historical order in
// which configuration fields were added.
// SymbolicLinkMode specifies the symbolic link mode.
core.SymbolicLinkMode symbolicLinkMode = 1;
// Fields 2-10 are reserved for future symbolic link configuration
// parameters.
// Watch configuration parameters (fields 21-30).
// WatchMode specifies the filesystem watching mode.
WatchMode watchMode = 21;
// WatchPollingInterval specifies the interval (in seconds) for poll-based
// file monitoring. A value of 0 specifies that the default interval should
// be used.
uint32 watchPollingInterval = 22;
// Fields 23-30 are reserved for future watch configuration parameters.
// Ignore configuration parameters (fields 31-60).
// IgnoreSyntax specifies the syntax and semantics to use for ignores.
// NOTE: This field is out of order due to the historical order in which it
// was added.
ignore.Syntax ignoreSyntax = 34;
// DefaultIgnores specifies the ignore patterns brought in from the global
// configuration.
// DEPRECATED: This field is no longer used when loading from global
// configuration. Instead, ignores provided by global configuration are
// simply merged into the ignore list of the main configuration. However,
// older sessions still use this field.
repeated string defaultIgnores = 31;
// Ignores specifies the ignore patterns brought in from the create request.
repeated string ignores = 32;
// IgnoreVCSMode specifies the VCS ignore mode that should be used in
// synchronization.
ignore.IgnoreVCSMode ignoreVCSMode = 33;
// Fields 35-60 are reserved for future ignore configuration parameters.
// Permissions configuration parameters (fields 61-80).
// PermissionsMode species the manner in which permissions should be
// propagated between endpoints.
core.PermissionsMode permissionsMode = 61;
// Field 62 is reserved for PermissionsPreservationMode.
// DefaultFileMode specifies the default permission mode to use for new
// files in "portable" permission propagation mode.
uint32 defaultFileMode = 63;
// DefaultDirectoryMode specifies the default permission mode to use for new
// files in "portable" permission propagation mode.
uint32 defaultDirectoryMode = 64;
// DefaultOwner specifies the default owner identifier to use when setting
// ownership of new files and directories in "portable" permission
// propagation mode.
string defaultOwner = 65;
// DefaultGroup specifies the default group identifier to use when setting
// ownership of new files and directories in "portable" permission
// propagation mode.
string defaultGroup = 66;
// Fields 67-80 are reserved for future permission configuration parameters.
// Compression configuration parameters (fields 81-90).
// CompressionAlgorithm specifies the compression algorithm to use when
// communicating with the endpoint. This only applies to remote endpoints.
compression.Algorithm compressionAlgorithm = 81;
// Fields 82-90 are reserved for future compression configuration
// parameters.
}