Skip to contentSkip to conversation

rev-parse: documentation adjustment - mention remote tracking with @{u}

PATCH Superseded Tao Klerks via GitGitGadget 3 participants 4 messages Jun 20, 2022 – Jun 23, 2022 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 rev-parse: documentation adjustment - mention remote tracking with @{u}

From: Tao Klerks <[email protected]>

The documentation explained the conversion from remote branch path to local tracking ref path for @{push}, but not for @{upstream}.

Add the note to @{upstream}, and reference it in @{push} to avoid undue repetition.

---
rev-parse: documentation adjustment - mention remote tracking with @{u}

Small clarification in the doc for git rev-parse.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1265%2FTaoK%2Ftao-upstreak-doc-fix-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1265/TaoK/tao-upstreak-doc-fix-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1265

 Documentation/revisions.txt | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)
Documentation/revisions.txt +9 -8
index f5f17b65a12..33809036f04 100644
@@ -97,18 +97,19 @@ some output processing may assume ref names in UTF-8.
 
 '[<branchname>]@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
   The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')
-  refers to the branch that the branch specified by branchname is set to build on
-  top of (configured with `branch.<name>.remote` and
-  `branch.<name>.merge`).  A missing branchname defaults to the
-  current one. These suffixes are also accepted when spelled in uppercase, and
-  they mean the same thing no matter the case.
+  refers to the remote branch that the branch specified by branchname
+  is set to build on top of (configured with `branch.<name>.remote` and
+  `branch.<name>.merge`). As `branch.<name>.merge` is the branch path on the
+  remote, it is first converted to a local tracking branch (i.e., something in
+  `refs/remotes/`). A missing branchname defaults to the current one. These
+  suffixes are also accepted when spelled in uppercase, and they mean the same
+  thing no matter the case.
 
 '[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{push\}'::
   The suffix '@\{push}' reports the branch "where we would push to" if
   `git push` were run while `branchname` was checked out (or the current
-  `HEAD` if no branchname is specified). Since our push destination is
-  in a remote repository, of course, we report the local tracking branch
-  that corresponds to that branch (i.e., something in `refs/remotes/`).
+  `HEAD` if no branchname is specified). Like for '@\{upstream\}', we report
+  the local tracking branch that corresponds to that remote branch.
 +
 Here's an example to make it more clear:
 +

base-commit: 5b71c59bc3b9365075e2a175aa7b6f2b0c84ce44

Signature · 1 line
gitgitgadget
#1 lore raw

Documentation/revisions.txt some output processing may assume ref names in UTF-8.

Quoted 10 lines · Tao Klerks via GitGitGadget

'[<branchname>]@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')

Documentation/revisions.txt +3 -5
-  refers to the branch that the branch specified by branchname is set to build on
-  top of (configured with `branch.<name>.remote` and
-  `branch.<name>.merge`).  A missing branchname defaults to the
-  current one. These suffixes are also accepted when spelled in uppercase, and
-  they mean the same thing no matter the case.
+  refers to the remote branch that the branch specified by branchname
+  is set to build on top of (configured with `branch.<name>.remote` and
+  `branch.<name>.merge`).

Let's refrain from inventing confusing new phrases that are not defined in "git help glossary".

What is a "remote branch"? I think this is better left as "the branch", to avoid confusion with remote-tracking branch we keep locally. I think a version with a slight tweak, e.g.

... refers to the name of the branch (configured with branch.<name>.merge) at the remote (configured with branch.<name>.remote) that the branch is set to build on top of.

would be OK, though.

Review

Quoted 3 lines

... As branch.<name>.merge is the branch path on the

(quoted diff) +2 -0
+  remote, it is first converted to a local tracking branch (i.e., something in
+  `refs/remotes/`).

Let's correct it to "remote-tracking branch".

But more importantly, the order of explanation feels a bit backwards. Something like...

A branch B may be set up to build on top of a branch X (configured with branch.<name>.merge) at a remote R (configured with branch.<name>.remote). B@{u} refers to the remote-tracking branch for the branch X taken from remote R, typically found at refs/remotes/R/X.

... to cover both of the above, perhaps, may flow more naturally?

Quoted 17 lines

... A missing branchname defaults to the current one. These

Documentation/revisions.txt +4 -3
+  suffixes are also accepted when spelled in uppercase, and they mean the same
+  thing no matter the case.
 
 '[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{push\}'::
   The suffix '@\{push}' reports the branch "where we would push to" if
   `git push` were run while `branchname` was checked out (or the current
-  `HEAD` if no branchname is specified). Since our push destination is
-  in a remote repository, of course, we report the local tracking branch
-  that corresponds to that branch (i.e., something in `refs/remotes/`).
+  `HEAD` if no branchname is specified). Like for '@\{upstream\}', we report
+  the local tracking branch that corresponds to that remote branch.
 +
 Here's an example to make it more clear:
 +

base-commit: 5b71c59bc3b9365075e2a175aa7b6f2b0c84ce44

#2 lore raw
Quoted 12 lines · Junio C Hamano

Review

Quoted 3 lines · Tao Klerks via GitGitGadget

... As branch.<name>.merge is the branch path on the

(quoted diff) +2 -0
+  remote, it is first converted to a local tracking branch (i.e., something in
+  `refs/remotes/`).

Let's correct it to "remote-tracking branch".

But more importantly, the order of explanation feels a bit backwards. Something like...

Quoted 8 lines

A branch B may be set up to build on top of a branch X (configured with branch.<name>.merge) at a remote R (configured with branch.<name>.remote). B@{u} refers to the remote-tracking branch for the branch X taken from remote R, typically found at refs/remotes/R/X.

... to cover both of the above, perhaps, may flow more naturally?

Looks great, thanks! I feel like a bit of a fraud signing my name to it now, but the important thing is that's a much better improvement than I proposed. Patch v2 coming.

#3 lore raw

PATCH v2 1/1 rev-parse: documentation adjustment - mention remote tracking with @{u}

In reply to Tao Klerks via GitGitGadget

From: Tao Klerks <[email protected]>

The documentation explained the conversion from remote branch path to local tracking ref path for @{push}, but not for @{upstream}.

Add the explanation to @{upstream}, and reference it in @{push} to avoid undue repetition.

---
rev-parse: documentation adjustment - mention remote tracking with @{u}

Small clarification in the doc for git rev-parse.

Changes in V2:

* Applied Junio's proposed simplification

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1265%2FTaoK%2Ftao-upstreak-doc-fix-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1265/TaoK/tao-upstreak-doc-fix-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1265

Range-diff vs v1:

1: 58d2735d752 ! 1: 9e47e12e9cb rev-parse: documentation adjustment - mention remote tracking with @{u}
@@ Commit message
The documentation explained the conversion from remote branch path to
local tracking ref path for @{push}, but not for @{upstream}.

- Add the note to @{upstream}, and reference it in @{push} to avoid undue
- repetition.
+ Add the explanation to @{upstream}, and reference it in @{push} to avoid
+ undue repetition.

## Documentation/revisions.txt ##
@@ Documentation/revisions.txt: some output processing may assume ref names in UTF-8.
+ before the current one.

'[<branchname>]@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
- The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')
+- The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')
- refers to the branch that the branch specified by branchname is set to build on
- top of (configured with branch.<name>.remote and
- branch.<name>.merge). A missing branchname defaults to the
- current one. These suffixes are also accepted when spelled in uppercase, and
- they mean the same thing no matter the case.
-+ refers to the remote branch that the branch specified by branchname -+ is set to build on top of (configured with branch.<name>.remote and -+ branch.<name>.merge). As branch.<name>.merge is the branch path on the -+ remote, it is first converted to a local tracking branch (i.e., something in -+ refs/remotes/). A missing branchname defaults to the current one. These -+ suffixes are also accepted when spelled in uppercase, and they mean the same -+ thing no matter the case.
++ A branch B may be set up to build on top of a branch X (configured with ++ branch.<name>.merge) at a remote R (configured with
++ branch.<name>.remote). B@{u} refers to the remote-tracking branch for ++ the branch X taken from remote R, typically found at refs/remotes/R/X.

'[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{push\}'::
The suffix '@\{push}' reports the branch "where we would push to" if
@@ Documentation/revisions.txt: some output processing may assume ref names in UTF-
- in a remote repository, of course, we report the local tracking branch
- that corresponds to that branch (i.e., something in refs/remotes/).
+ HEAD if no branchname is specified). Like for '@\{upstream\}', we report
-+ the local tracking branch that corresponds to that remote branch. ++ the remote-tracking branch that corresponds to that branch at the remote.
+
Here's an example to make it more clear:
+

 Documentation/revisions.txt | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
Documentation/revisions.txt +6 -9
index f5f17b65a12..7fcfbcbac7e 100644
@@ -96,19 +96,16 @@ some output processing may assume ref names in UTF-8.
   before the current one.
 
 '[<branchname>]@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
-  The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')
-  refers to the branch that the branch specified by branchname is set to build on
-  top of (configured with `branch.<name>.remote` and
-  `branch.<name>.merge`).  A missing branchname defaults to the
-  current one. These suffixes are also accepted when spelled in uppercase, and
-  they mean the same thing no matter the case.
+  A branch B may be set up to build on top of a branch X (configured with
+  `branch.<name>.merge`) at a remote R (configured with
+  `branch.<name>.remote`). B@{u} refers to the remote-tracking branch for
+  the branch X taken from remote R, typically found at `refs/remotes/R/X`.
 
 '[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{push\}'::
   The suffix '@\{push}' reports the branch "where we would push to" if
   `git push` were run while `branchname` was checked out (or the current
-  `HEAD` if no branchname is specified). Since our push destination is
-  in a remote repository, of course, we report the local tracking branch
-  that corresponds to that branch (i.e., something in `refs/remotes/`).
+  `HEAD` if no branchname is specified). Like for '@\{upstream\}', we report
+  the remote-tracking branch that corresponds to that branch at the remote.
 +
 Here's an example to make it more clear:
 +

base-commit: 5b71c59bc3b9365075e2a175aa7b6f2b0c84ce44

Signature · 1 line
gitgitgadget