git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Jakub Narębski" <jnareb@gmail.com>
To: Jeff Hostetler <git@jeffhostetler.com>, git@vger.kernel.org
Cc: gitster@pobox.com, Johannes.Schindelin@gmx.de,
	Jeff Hostetler <jeffhost@microsoft.com>
Subject: Re: [PATCH v3 7/8] status: update git-status.txt for --porcelain=v2
Date: Sat, 30 Jul 2016 19:22:54 +0200	[thread overview]
Message-ID: <fe5d1dd7-11da-e09b-5880-cf103e34fb9a@gmail.com> (raw)
In-Reply-To: <1469567483-58794-8-git-send-email-git@jeffhostetler.com>

W dniu 26.07.2016 o 23:11, Jeff Hostetler pisze:

> +Porcelain Format Version 2
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +Version 2 format adds more detailed information about the state of
> +the worktree and changed items.
> +
> +If `--branch` is given, a series of header lines are printed with
> +information about the current branch.
> +
> +    Line                                 Notes
> +    --------------------------------------------------------
> +    # branch.oid <commit> | (initial)    Current commit
> +    # branch.head <branch> | (detached)  Current branch
> +    # branch.upstream <upstream_branch>  If set
> +    # branch.ab +<ahead> -<behind>       If set and present

"If set and present" means "If upstream set and present", isn't it?
Well, it is a shortcut, and I think easy to understand.

> +    --------------------------------------------------------

This is a nice change, available because of lack of backward
compatibility with v1.  The porcelain v2 format branch-related
information could be enhanced without risk of breaking parsers,
or having new information put at the end even if it does not fit
there (like in previous iteration).

One thing that can serve as goal for the series is using the
question: would it make __git_ps1() from git-prompt.sh be able
to render fully decorated prompt with all bells and whistles,
and with all combinations of options.  Thus beside upstream
in the future we might want SVN upstream, and/or pushed-to
remote branch (and remote push upstream repository), etc.

But that's for the future (and it is possible for the future)...

> +
> +A series of lines are then displayed for the tracked entries.
> +Ordinary changed entries have the following format:
> +
> +    1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>
> +
> +Renamed or copied entries have the following format:
> +
> +    2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><nr> <path>\t<pathSrc>

Nice solution to avoid those all zeros / null-SHA1s

> +
> +    Field       Meaning
> +    --------------------------------------------------------
> +    <XY>        A 2 character field containing the staged and
> +                unstaged XY values described in the short format,
> +                with unchanged indicated by a "." rather than
> +                a space.
> +    <sub>       A 4 character field describing the submodule state.
> +                "N..." when the entry is not a submodule.
> +                "S<c><m><u>" when the entry is a submodule.
> +                <c> is "C" if the commit changed; otherwise ".".
> +                <m> is "M" if it has tracked changes; otherwise ".".
> +                <u> is "U" if there are untracked changes; otherwise ".".
> +    <mH>        The 6 character octal file mode in the HEAD.
> +    <mI>        The octal file mode in the index.
> +    <mW>        The octal file mode in the worktree.
> +    <hH>        The SHA1 value in the HEAD.
> +    <hI>        The SHA1 value in the index.
> +    <X><nr>     The rename or copied percentage score. For example "R100"
> +                or "C75".
> +    <path>      The current pathname.
> +    <pathSrc>   The original path. This is only present when the entry
> +                has been renamed or copied.
> +    --------------------------------------------------------
> +
> +Unmerged entries have the following format; the first character is
> +a "u" to distinguish from ordinary changed entries.
> +
> +    u <xy> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>
> +
> +    Field       Meaning
> +    --------------------------------------------------------
> +    <XY>        A 2 character field describing the conflict type
> +                as described in the short format.
> +    <sub>       A 4 character field describing the submodule state
> +                as described above.
> +    <m1>        The octal file mode for stage 1.
> +    <m2>        The octal file mode for stage 2.
> +    <m3>        The octal file mode for stage 3.
> +    <mW>        The octal file mode in the worktree.
> +    <h1>        The SHA1 value for stage 1.
> +    <h2>        The SHA1 value for stage 2.
> +    <h3>        The SHA1 value for stage 3.
> +    <path>      The current pathname.
> +    --------------------------------------------------------

A question: do unmerged entries always have only one single filename?
Or unmerged entries are always only about CONFLICT(contents), and no
other?

Would a note (or a link to other documentation) about octopus merges
be out of place here?

> +
> +A series of lines are then displayed for untracked and ignored entries.
> +
> +    <x> <path>
> +
> +Where <x> is "?" for untracked entries and "!" for ignored entries.

A question: are they displayed in that order, i.e. first all untracked,
then all ignored, or it is something one cannot rely about?

> +
> +In all 3 line formats, pathnames will be "C Quoted" if they contain

"C Quoted" or "C-Quoted"?  How it is described in other places of
the Git documentation?

> +any of the following characters: TAB, LF, double quotes, or backslashes.
> +These characters will be replaced with \t, \n, \", and \\, respectively,
> +and the pathname will be enclosed in double quotes.
> +
> +When the `-z` option is given, a NUL (zero) byte follows each pathname;
> +serving as both a separator and line termination. No pathname quoting
> +or backslash escaping is performed. All fields are output in the same
> +order.

Does it mean that

    2 [...] <cq-path>\t<cq-pathSrc>\n

line (including line terminator) is replaced with

    2 [...] <path>\0<pathSrc>\0

that is, it replaces a separator (TAB, "\t") and line termination (LF, "\n");
here spelled in full?

BTW. do we have name for "C-Quoted" paths?

> +
>  CONFIGURATION
>  -------------
 


  reply	other threads:[~2016-07-30 17:23 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-26 21:11 [PATCH v3 0/8] status: V2 porcelain status Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 1/8] status: rename long-format print routines Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 2/8] status: cleanup API to wt_status_print Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 3/8] status: support --porcelain[=<version>] Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 4/8] status: per-file data collection for --porcelain=v2 Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 5/8] status: print per-file porcelain v2 status data Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 6/8] status: print branch info with --porcelain=v2 --branch Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 7/8] status: update git-status.txt for --porcelain=v2 Jeff Hostetler
2016-07-30 17:22   ` Jakub Narębski [this message]
2016-08-01 15:39     ` Jeff Hostetler
2016-08-02 15:19       ` Jakub Narębski
2016-08-02 16:29         ` Jeff Hostetler
2016-07-26 21:11 ` [PATCH v3 8/8] status: tests " Jeff Hostetler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fe5d1dd7-11da-e09b-5880-cf103e34fb9a@gmail.com \
    --to=jnareb@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@jeffhostetler.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jeffhost@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).