1 /* 2 * Copyright (C) 2008, 2013 Google Inc. 3 * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> 4 * Copyright (C) 2008, 2020 Shawn O. Pearce <spearce@spearce.org> and others 5 * 6 * This program and the accompanying materials are made available under the 7 * terms of the Eclipse Distribution License v. 1.0 which is available at 8 * https://www.eclipse.org/org/documents/edl-v10.php. 9 * 10 * SPDX-License-Identifier: BSD-3-Clause 11 */ 12 13 package org.eclipse.jgit.transport; 14 15 /** 16 * Wire constants for the native Git protocol. 17 * 18 * @since 3.2 19 */ 20 public final class GitProtocolConstants { 21 /** 22 * Include tags if we are also including the referenced objects. 23 * 24 * @since 3.2 25 */ 26 public static final String OPTION_INCLUDE_TAG = "include-tag"; //$NON-NLS-1$ 27 28 /** 29 * Multi-ACK support for improved negotiation. 30 * 31 * @since 3.2 32 */ 33 public static final String OPTION_MULTI_ACK = "multi_ack"; //$NON-NLS-1$ 34 35 /** 36 * Multi-ACK detailed support for improved negotiation. 37 * 38 * @since 3.2 39 */ 40 public static final String OPTION_MULTI_ACK_DETAILED = "multi_ack_detailed"; //$NON-NLS-1$ 41 42 /** 43 * The client supports packs with deltas but not their bases. 44 * 45 * @since 3.2 46 */ 47 public static final String OPTION_THIN_PACK = "thin-pack"; //$NON-NLS-1$ 48 49 /** 50 * The client supports using the side-band for progress messages. 51 * 52 * @since 3.2 53 */ 54 public static final String OPTION_SIDE_BAND = "side-band"; //$NON-NLS-1$ 55 56 /** 57 * The client supports using the 64K side-band for progress messages. 58 * 59 * @since 3.2 60 */ 61 public static final String OPTION_SIDE_BAND_64K = "side-band-64k"; //$NON-NLS-1$ 62 63 /** 64 * The client supports packs with OFS deltas. 65 * 66 * @since 3.2 67 */ 68 public static final String OPTION_OFS_DELTA = "ofs-delta"; //$NON-NLS-1$ 69 70 /** 71 * The client supports shallow fetches. 72 * 73 * @since 3.2 74 */ 75 public static final String OPTION_SHALLOW = "shallow"; //$NON-NLS-1$ 76 77 /** 78 * The client wants the "deepen" command to be interpreted as relative to 79 * the client's shallow commits. 80 * 81 * @since 5.0 82 */ 83 public static final String OPTION_DEEPEN_RELATIVE = "deepen-relative"; //$NON-NLS-1$ 84 85 /** 86 * The client does not want progress messages and will ignore them. 87 * 88 * @since 3.2 89 */ 90 public static final String OPTION_NO_PROGRESS = "no-progress"; //$NON-NLS-1$ 91 92 /** 93 * The client supports receiving a pack before it has sent "done". 94 * 95 * @since 3.2 96 */ 97 public static final String OPTION_NO_DONE = "no-done"; //$NON-NLS-1$ 98 99 /** 100 * The client supports fetching objects at the tip of any ref, even if not 101 * advertised. 102 * 103 * @since 3.2 104 */ 105 public static final String OPTION_ALLOW_TIP_SHA1_IN_WANT = "allow-tip-sha1-in-want"; //$NON-NLS-1$ 106 107 /** 108 * The client supports fetching objects that are reachable from a tip of a 109 * ref that is allowed to fetch. 110 * 111 * @since 4.1 112 */ 113 public static final String OPTION_ALLOW_REACHABLE_SHA1_IN_WANT = "allow-reachable-sha1-in-want"; //$NON-NLS-1$ 114 115 /** 116 * Symbolic reference support for better negotiation. 117 * 118 * @since 3.6 119 */ 120 public static final String OPTION_SYMREF = "symref"; //$NON-NLS-1$ 121 122 /** 123 * The client will send a push certificate. 124 * 125 * @since 4.0 126 */ 127 public static final String OPTION_PUSH_CERT = "push-cert"; //$NON-NLS-1$ 128 129 /** 130 * The client specified a filter expression. 131 * 132 * @since 5.0 133 */ 134 public static final String OPTION_FILTER = "filter"; //$NON-NLS-1$ 135 136 /** 137 * The client specified a want-ref expression. 138 * 139 * @since 5.1 140 */ 141 public static final String OPTION_WANT_REF = "want-ref"; //$NON-NLS-1$ 142 143 /** 144 * The client requested that the whole response be multiplexed, with 145 * each non-flush and non-delim pkt prefixed by a sideband designator. 146 * 147 * @since 5.5 148 */ 149 public static final String OPTION_SIDEBAND_ALL = "sideband-all"; //$NON-NLS-1$ 150 151 /** 152 * The client supports atomic pushes. If this option is used, the server 153 * will update all refs within one atomic transaction. 154 * 155 * @since 3.6 156 */ 157 public static final String CAPABILITY_ATOMIC = "atomic"; //$NON-NLS-1$ 158 159 /** 160 * The client expects less noise, e.g. no progress. 161 * 162 * @since 4.0 163 */ 164 public static final String CAPABILITY_QUIET = "quiet"; //$NON-NLS-1$ 165 166 /** 167 * The client expects a status report after the server processes the pack. 168 * 169 * @since 3.2 170 */ 171 public static final String CAPABILITY_REPORT_STATUS = "report-status"; //$NON-NLS-1$ 172 173 /** 174 * The server supports deleting refs. 175 * 176 * @since 3.2 177 */ 178 public static final String CAPABILITY_DELETE_REFS = "delete-refs"; //$NON-NLS-1$ 179 180 /** 181 * The server supports packs with OFS deltas. 182 * 183 * @since 3.2 184 */ 185 public static final String CAPABILITY_OFS_DELTA = "ofs-delta"; //$NON-NLS-1$ 186 187 /** 188 * The client supports using the 64K side-band for progress messages. 189 * 190 * @since 3.2 191 */ 192 public static final String CAPABILITY_SIDE_BAND_64K = "side-band-64k"; //$NON-NLS-1$ 193 194 /** 195 * The server allows recording of push certificates. 196 * 197 * @since 4.0 198 */ 199 public static final String CAPABILITY_PUSH_CERT = "push-cert"; //$NON-NLS-1$ 200 201 /** 202 * Implementation name and version of the client or server. 203 * 204 * @since 4.0 205 */ 206 public static final String OPTION_AGENT = "agent"; //$NON-NLS-1$ 207 208 /** 209 * The server supports the receiving of push options. 210 * 211 * @since 4.5 212 */ 213 public static final String CAPABILITY_PUSH_OPTIONS = "push-options"; //$NON-NLS-1$ 214 215 /** 216 * The server supports the client specifying ref names. 217 * 218 * @since 5.1 219 */ 220 public static final String CAPABILITY_REF_IN_WANT = "ref-in-want"; //$NON-NLS-1$ 221 222 /** 223 * The server supports arbitrary options 224 * 225 * @since 5.2 226 */ 227 public static final String CAPABILITY_SERVER_OPTION = "server-option"; //$NON-NLS-1$ 228 229 /** 230 * Option for passing application-specific options to the server. 231 * 232 * @since 5.2 233 */ 234 public static final String OPTION_SERVER_OPTION = "server-option"; //$NON-NLS-1$ 235 236 /** 237 * The server supports listing refs using protocol v2. 238 * 239 * @since 5.0 240 */ 241 public static final String COMMAND_LS_REFS = "ls-refs"; //$NON-NLS-1$ 242 243 /** 244 * The server supports fetch using protocol v2. 245 * 246 * @since 5.0 247 */ 248 public static final String COMMAND_FETCH = "fetch"; //$NON-NLS-1$ 249 250 /** 251 * HTTP header to set by clients to request a specific git protocol version 252 * in the HTTP transport. 253 * 254 * @since 5.11 255 */ 256 public static final String PROTOCOL_HEADER = "Git-Protocol"; //$NON-NLS-1$ 257 258 /** 259 * Environment variable to set by clients to request a specific git protocol 260 * in the file:// and ssh:// transports. 261 * 262 * @since 5.11 263 */ 264 public static final String PROTOCOL_ENVIRONMENT_VARIABLE = "GIT_PROTOCOL"; //$NON-NLS-1$ 265 266 /** 267 * Protocol V2 ref advertisement attribute containing the peeled object id 268 * for annotated tags. 269 * 270 * @since 5.11 271 */ 272 public static final String REF_ATTR_PEELED = "peeled:"; //$NON-NLS-1$ 273 274 /** 275 * Protocol V2 ref advertisement attribute containing the name of the ref 276 * for symbolic refs. 277 * 278 * @since 5.11 279 */ 280 public static final String REF_ATTR_SYMREF_TARGET = "symref-target:"; //$NON-NLS-1$ 281 282 /** 283 * Protocol V2 acknowledgments section header. 284 * 285 * @since 5.11 286 */ 287 public static final String SECTION_ACKNOWLEDGMENTS = "acknowledgments"; //$NON-NLS-1$ 288 289 /** 290 * Protocol V2 packfile section header. 291 * 292 * @since 5.11 293 */ 294 public static final String SECTION_PACKFILE = "packfile"; //$NON-NLS-1$ 295 296 /** 297 * Protocol announcement for protocol version 1. This is the same as V0, 298 * except for this initial line. 299 * 300 * @since 5.11 301 */ 302 public static final String VERSION_1 = "version 1"; //$NON-NLS-1$ 303 304 /** 305 * Protocol announcement for protocol version 2. 306 * 307 * @since 5.11 308 */ 309 public static final String VERSION_2 = "version 2"; //$NON-NLS-1$ 310 311 /** 312 * Protocol request for protocol version 2. 313 * 314 * @since 5.11 315 */ 316 public static final String VERSION_2_REQUEST = "version=2"; //$NON-NLS-1$ 317 318 enum MultiAck { 319 OFF, CONTINUE, DETAILED; 320 } 321 322 private GitProtocolConstants() { 323 } 324 }