@@ -32,11 +32,14 @@ OPTIONS
32
32
--branch::
33
33
Show the branch and tracking info even in short-format.
34
34
35
- --porcelain::
35
+ --porcelain[=<version>] ::
36
36
Give the output in an easy-to-parse format for scripts.
37
37
This is similar to the short output, but will remain stable
38
38
across Git versions and regardless of user configuration. See
39
39
below for details.
40
+ +
41
+ The version parameter is used to specify the format version.
42
+ This is optional and defaults to the original version 'v1' format.
40
43
41
44
--long::
42
45
Give the output in the long-format. This is the default.
@@ -96,7 +99,7 @@ configuration variable documented in linkgit:git-config[1].
96
99
97
100
-z::
98
101
Terminate entries with NUL, instead of LF. This implies
99
- the `--porcelain` output format if no other format is given.
102
+ the `--porcelain=v1 ` output format if no other format is given.
100
103
101
104
--column[=<options>]::
102
105
--no-column::
@@ -185,12 +188,12 @@ in which case `XY` are `!!`.
185
188
186
189
If -b is used the short-format status is preceded by a line
187
190
188
- ## branchname tracking info
191
+ ## branchname tracking info
189
192
190
- Porcelain Format
191
- ~~~~~~~~~~~~~~~~
193
+ Porcelain Format Version 1
194
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
192
195
193
- The porcelain format is similar to the short format, but is guaranteed
196
+ Version 1 porcelain format is similar to the short format, but is guaranteed
194
197
not to change in a backwards-incompatible way between Git versions or
195
198
based on user configuration. This makes it ideal for parsing by scripts.
196
199
The description of the short format above also describes the porcelain
@@ -212,6 +215,124 @@ field from the first filename). Third, filenames containing special
212
215
characters are not specially formatted; no quoting or
213
216
backslash-escaping is performed.
214
217
218
+ Porcelain Format Version 2
219
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
220
+
221
+ Version 2 format adds more detailed information about the state of
222
+ the worktree and changed items. Version 2 also defines an extensible
223
+ set of easy to parse optional headers.
224
+
225
+ Header lines start with "#" and are added in response to specific
226
+ command line arguments. Parsers should ignore headers they
227
+ don't recognize.
228
+
229
+ ### Branch Headers
230
+
231
+ If `--branch` is given, a series of header lines are printed with
232
+ information about the current branch.
233
+
234
+ Line Notes
235
+ ------------------------------------------------------------
236
+ # branch.oid <commit> | (initial) Current commit.
237
+ # branch.head <branch> | (detached) Current branch.
238
+ # branch.upstream <upstream_branch> If upstream is set.
239
+ # branch.ab +<ahead> -<behind> If upstream is set and
240
+ the commit is present.
241
+ ------------------------------------------------------------
242
+
243
+ ### Changed Tracked Entries
244
+
245
+ Following the headers, a series of lines are printed for tracked
246
+ entries. One of three different line formats may be used to describe
247
+ an entry depending on the type of change. Tracked entries are printed
248
+ in an undefined order; parsers should allow for a mixture of the 3
249
+ line types in any order.
250
+
251
+ Ordinary changed entries have the following format:
252
+
253
+ 1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>
254
+
255
+ Renamed or copied entries have the following format:
256
+
257
+ 2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><score> <path><sep><origPath>
258
+
259
+ Field Meaning
260
+ --------------------------------------------------------
261
+ <XY> A 2 character field containing the staged and
262
+ unstaged XY values described in the short format,
263
+ with unchanged indicated by a "." rather than
264
+ a space.
265
+ <sub> A 4 character field describing the submodule state.
266
+ "N..." when the entry is not a submodule.
267
+ "S<c><m><u>" when the entry is a submodule.
268
+ <c> is "C" if the commit changed; otherwise ".".
269
+ <m> is "M" if it has tracked changes; otherwise ".".
270
+ <u> is "U" if there are untracked changes; otherwise ".".
271
+ <mH> The octal file mode in HEAD.
272
+ <mI> The octal file mode in the index.
273
+ <mW> The octal file mode in the worktree.
274
+ <hH> The object name in HEAD.
275
+ <hI> The object name in the index.
276
+ <X><score> The rename or copy score (denoting the percentage
277
+ of similarity between the source and target of the
278
+ move or copy). For example "R100" or "C75".
279
+ <path> The pathname. In a renamed/copied entry, this
280
+ is the path in the index and in the working tree.
281
+ <sep> When the `-z` option is used, the 2 pathnames are separated
282
+ with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)
283
+ byte separates them.
284
+ <origPath> The pathname in the commit at HEAD. This is only
285
+ present in a renamed/copied entry, and tells
286
+ where the renamed/copied contents came from.
287
+ --------------------------------------------------------
288
+
289
+ Unmerged entries have the following format; the first character is
290
+ a "u" to distinguish from ordinary changed entries.
291
+
292
+ u <xy> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>
293
+
294
+ Field Meaning
295
+ --------------------------------------------------------
296
+ <XY> A 2 character field describing the conflict type
297
+ as described in the short format.
298
+ <sub> A 4 character field describing the submodule state
299
+ as described above.
300
+ <m1> The octal file mode in stage 1.
301
+ <m2> The octal file mode in stage 2.
302
+ <m3> The octal file mode in stage 3.
303
+ <mW> The octal file mode in the worktree.
304
+ <h1> The object name in stage 1.
305
+ <h2> The object name in stage 2.
306
+ <h3> The object name in stage 3.
307
+ <path> The pathname.
308
+ --------------------------------------------------------
309
+
310
+ ### Other Items
311
+
312
+ Following the tracked entries (and if requested), a series of
313
+ lines will be printed for untracked and then ignored items
314
+ found in the worktree.
315
+
316
+ Untracked items have the following format:
317
+
318
+ ? <path>
319
+
320
+ Ignored items have the following format:
321
+
322
+ ! <path>
323
+
324
+ ### Pathname Format Notes and -z
325
+
326
+ When the `-z` option is given, pathnames are printed as is and
327
+ without any quoting and lines are terminated with a NUL (ASCII 0x00)
328
+ byte.
329
+
330
+ Otherwise, all pathnames will be "C-quoted" if they contain any tab,
331
+ linefeed, double quote, or backslash characters. In C-quoting, these
332
+ characters will be replaced with the corresponding C-style escape
333
+ sequences and the resulting pathname will be double quoted.
334
+
335
+
215
336
CONFIGURATION
216
337
-------------
217
338
0 commit comments