summaryrefslogtreecommitdiff
path: root/Documentation/config/protocol.txt
blob: c46e9b3d00a97e2290f717b72ef9b1811dce57b7 (plain)
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
protocol.allow::
	If set, provide a user defined default policy for all protocols which
	don't explicitly have a policy (`protocol.<name>.allow`).  By default,
	if unset, known-safe protocols (http, https, git, ssh, file) have a
	default policy of `always`, known-dangerous protocols (ext) have a
	default policy of `never`, and all other protocols have a default
	policy of `user`.  Supported policies:
+
--

* `always` - protocol is always able to be used.

* `never` - protocol is never able to be used.

* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is
  either unset or has a value of 1.  This policy should be used when you want a
  protocol to be directly usable by the user but don't want it used by commands which
  execute clone/fetch/push commands without user input, e.g. recursive
  submodule initialization.

--

protocol.<name>.allow::
	Set a policy to be used by protocol `<name>` with clone/fetch/push
	commands. See `protocol.allow` above for the available policies.
+
The protocol names currently used by git are:
+
--
  - `file`: any local file-based path (including `file://` URLs,
    or local paths)

  - `git`: the anonymous git protocol over a direct TCP
    connection (or proxy, if configured)

  - `ssh`: git over ssh (including `host:path` syntax,
    `ssh://`, etc).

  - `http`: git over http, both "smart http" and "dumb http".
    Note that this does _not_ include `https`; if you want to configure
    both, you must do so individually.

  - any external helpers are named by their protocol (e.g., use
    `hg` to allow the `git-remote-hg` helper)
--

protocol.version::
	If set, clients will attempt to communicate with a server
	using the specified protocol version.  If the server does
	not support it, communication falls back to version 0.
	If unset, the default is `0`, unless `feature.experimental`
	is enabled, in which case the default is `2`.
	Supported versions:
+
--

* `0` - the original wire protocol.

* `1` - the original wire protocol with the addition of a version string
  in the initial response from the server.

* `2` - link:technical/protocol-v2.html[wire protocol version 2].

--