These patches are about the characters and words that can be configured to display in the PS1 prompt after the branch name. I've been unable to find a consistent terminology. I refer to them as follows: [short | long] [type] state indicator where short is for characters (e.g. ?), long is for words (e.g. |SPARSE), and type is the type of indicator (e.g. sparse or upstream). I'd be happy to change the commit messages to a different terminology if that's preferred. There are a few inconsistencies with the PS1 prompt upstream state indicator (GIT_PS1_SHOWUPSTREAM). * With GIT_PS1_SHOWUPSTREAM="auto", if there are no other short state indicators (e.g. + for staged changes, $ for stashed changes, etc.), the upstream state indicator appears adjacent to the branch name (e.g. (main=)) instead of being separated by SP or GIT_PS1_STATESEPARATOR (e.g. (main =)). * If there are long state indicators (e.g. |SPARSE), a short upstream state indicator (i.e. GIT_PS1_SHOWUPSTREAM="auto") is to the right of the long state indicator (e.g. (main +|SPARSE=)) instead of with the other short state indicators (e.g. (main +=|SPARSE)). * The long upstream state indicator (e.g. GIT_PS1_SHOWUPSTREAM="verbose") is separated from other (short or long) state indicators by a hard-coded SP. Other long state indicators are separated by a hard-coded pipe (|). These patches are to make the upstream state indicators more consistent with other state indicators. ---------------------------------------------------------------------------- Changes since v1: * Added __git_ps1 examples and before/after tables to commit messages where applicable. This should make it clearer what the behavior is for other (not upstream) state indicators, and how the patches make the upstream state indicator more consistent. * Removed some extraneous information about long state indicators from patch 2 commit message. This wasn't really helpful, and was a distraction. ---------------------------------------------------------------------------- Justin Donnelly (4): git-prompt: rename `upstream` to `upstream_type` git-prompt: make upstream state indicator location consistent git-prompt: make long upstream state indicator consistent git-prompt: put upstream comments together contrib/completion/git-prompt.sh | 59 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 29 deletions(-) base-commit: 4c53a8c20f8984adb226293a3ffd7b88c3f4ac1a Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1162%2Fjustinrdonnelly%2Fgit-prompt-upstream-consistency-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1162/justinrdonnelly/git-prompt-upstream-consistency-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/1162 Range-diff vs v1: 1: 1db836bb309 = 1: 1db836bb309 git-prompt: rename `upstream` to `upstream_type` 2: b503cac5ae3 ! 2: 4bf120b1bf8 git-prompt: make upstream state indicator location consistent @@ Commit message git-prompt: make upstream state indicator location consistent Make upstream state indicator location more consistent with similar - state indicators (e.g. sparse). Group the short state indicator (`=`, - `<`, `>`, or `<>`) with other short state indicators immediately after - the branch name. Group the long state indicator (e.g. `u+2-1 - origin/main`) with other long state indicators after the short state - indicators. Previously short and long upstream state indicators appeared - after all other state indicators. + state indicators (e.g. sparse). Group the short upstream state indicator + (`=`, `<`, `>`, or `<>`) with other short state indicators immediately + after the branch name. Previously short and long upstream state + indicators appeared after all other state indicators. Use a separator (`SP` or `GIT_PS1_STATESEPARATOR`) between branch name and short upstream state indicator. Previously the short upstream state indicator would sometimes appear directly adjacent to the branch name - (e.g. `(main=)`) instead of being separated (e.g. `(main =)`). + instead of being separated. + + For comparison, `__git_ps1` examples without upstream state indicator: + (main) + (main %) + (main *%) + (main|SPARSE) + (main %|SPARSE) + (main *%|SPARSE) + (main|SPARSE|REBASE 1/2) + (main %|SPARSE|REBASE 1/2) + + Note that if there are short state indicators, they appear together + after the branch name and separated from it by `SP` or + `GIT_PS1_STATESEPARATOR`. + + Before/after examples with short upstream state indicator: + | Before | After | + | ---------------- | ---------------- | + | (main=) | (main =) | + | (main|SPARSE=) | (main =|SPARSE) | + | (main %|SPARSE=) | (main %=|SPARSE) | Signed-off-by: Justin Donnelly <justinrdonnelly@xxxxxxxxx> 3: 83766e33614 ! 3: 0af083413b8 git-prompt: make long upstream state indicator consistent @@ Metadata ## Commit message ## git-prompt: make long upstream state indicator consistent - Use a pipe as a delimiter between short state indicators and long - upstream state indicator (e.g. `(main *|u+2-1 origin/main)` instead of - `(main * u+2-1 origin/main)`) . This is consistent with long state - indicators for sparse and in-progress operations (e.g. merge). + Use a pipe as a separator before long upstream state indicator. This is + consistent with long state indicators for sparse and in-progress + operations (e.g. merge). + + For comparison, `__git_ps1` examples without upstream state indicator: + (main) + (main %) + (main *%) + (main|SPARSE) + (main %|SPARSE) + (main *%|SPARSE) + (main|SPARSE|REBASE 1/2) + (main %|SPARSE|REBASE 1/2) + + Note that if there are long state indicators, they appear after short + state indicators if there are any, or after the branch name if there are + no short state indicators. Each long state indicator begins with a pipe + (`|`) as a separator. + + Before/after examples with long upstream state indicator: + | Before | After | + | ------------------------------- | ------------------------------- | + | (main u=) | (main|u=) | + | (main u= origin/main) | (main|u= origin/main) | + | (main u+1) | (main|u+1) | + | (main u+1 origin/main) | (main|u+1 origin/main) | + | (main % u=) | (main %|u=) | + | (main % u= origin/main) | (main %|u= origin/main) | + | (main % u+1) | (main %|u+1) | + | (main % u+1 origin/main) | (main %|u+1 origin/main) | + | (main|SPARSE u=) | (main|SPARSE|u=) | + | (main|SPARSE u= origin/main) | (main|SPARSE|u= origin/main) | + | (main|SPARSE u+1) | (main|SPARSE|u+1) | + | (main|SPARSE u+1 origin/main) | (main|SPARSE|u+1 origin/main) | + | (main %|SPARSE u=) | (main %|SPARSE|u=) | + | (main %|SPARSE u= origin/main) | (main %|SPARSE|u= origin/main) | + | (main %|SPARSE u+1) | (main %|SPARSE|u+1) | + | (main %|SPARSE u+1 origin/main) | (main %|SPARSE|u+1 origin/main) | Signed-off-by: Justin Donnelly <justinrdonnelly@xxxxxxxxx> 4: 58ff3d8affe = 4: 06e51dc5093 git-prompt: put upstream comments together -- gitgitgadget