aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/config/promisor.adoc
blob: 93e5e0d9b55eb4bb14a66e2ac4f06106b4a023cf (plain) (blame)
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
promisor.quiet::
	If set to "true" assume `--quiet` when fetching additional
	objects for a partial clone.

promisor.advertise::
	If set to "true", a server will use the "promisor-remote"
	capability, see linkgit:gitprotocol-v2[5], to advertise the
	promisor remotes it is using, if it uses some. Default is
	"false", which means the "promisor-remote" capability is not
	advertised.

promisor.sendFields::
	A comma or space separated list of additional remote related
	field names. A server sends these field names and the
	associated field values from its configuration when
	advertising its promisor remotes using the "promisor-remote"
	capability, see linkgit:gitprotocol-v2[5]. Currently, only the
	"partialCloneFilter" and "token" field names are supported.
+
`partialCloneFilter`:: contains the partial clone filter
used for the remote.
+
`token`:: contains an authentication token for the remote.
+
When a field name is part of this list and a corresponding
"remote.foo.<field-name>" config variable is set on the server to a
non-empty value, then the field name and value are sent when
advertising the promisor remote "foo".
+
This list has no effect unless the "promisor.advertise" config
variable is set to "true", and the "name" and "url" fields are always
advertised regardless of this setting.

promisor.acceptFromServer::
	If set to "all", a client will accept all the promisor remotes
	a server might advertise using the "promisor-remote"
	capability. If set to "knownName" the client will accept
	promisor remotes which are already configured on the client
	and have the same name as those advertised by the client. This
	is not very secure, but could be used in a corporate setup
	where servers and clients are trusted to not switch name and
	URLs. If set to "knownUrl", the client will accept promisor
	remotes which have both the same name and the same URL
	configured on the client as the name and URL advertised by the
	server. This is more secure than "all" or "knownName", so it
	should be used if possible instead of those options. Default
	is "none", which means no promisor remote advertised by a
	server will be accepted. By accepting a promisor remote, the
	client agrees that the server might omit objects that are
	lazily fetchable from this promisor remote from its responses
	to "fetch" and "clone" requests from the client. Name and URL
	comparisons are case sensitive. See linkgit:gitprotocol-v2[5].

promisor.checkFields::
	A comma or space separated list of additional remote related
	field names. A client checks if the values of these fields
	transmitted by a server correspond to the values of these
	fields in its own configuration before accepting a promisor
	remote. Currently, "partialCloneFilter" and "token" are the
	only supported field names.
+
If one of these field names (e.g., "token") is being checked for an
advertised promisor remote (e.g., "foo"), three conditions must be met
for the check of this specific field to pass:
+
1. The corresponding local configuration (e.g., `remote.foo.token`)
   must be set.
2. The server must advertise the "token" field for remote "foo".
3. The value of the locally configured `remote.foo.token` must exactly
   match the value advertised by the server for the "token" field.
+
If any of these conditions is not met for any field name listed in
`promisor.checkFields`, the advertised remote "foo" is rejected.
+
For the "partialCloneFilter" field, this allows the client to ensure
that the server's filter matches what it expects locally, preventing
inconsistencies in filtering behavior. For the "token" field, this can
be used to verify that authentication credentials match expected
values.
+
Field values are compared case-sensitively.
+
The "name" and "url" fields are always checked according to the
`promisor.acceptFromServer` policy, independently of this setting.
+
The field names and values should be passed by the server through the
"promisor-remote" capability by using the `promisor.sendFields` config
variable. The fields are checked only if the
`promisor.acceptFromServer` config variable is not set to "None". If
set to "None", this config variable has no effect. See
linkgit:gitprotocol-v2[5].