From: "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "D. Ben Knoble" <ben.knoble@gmail.com>, Jeff King <peff@peff.net>,
Harald Nordgren <haraldnordgren@gmail.com>,
Harald Nordgren <haraldnordgren@gmail.com>
Subject: [PATCH v2] object-name: accept @{p} as short for @{push}
Date: Fri, 02 Oct 2026 07:49:59 +0000 [thread overview]
Message-ID: <pull.2431.v2.git.git.1790927399813.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2431.git.git.1790797186658.gitgitgadget@gmail.com>
From: Harald Nordgren <haraldnordgren@gmail.com>
"git log @{p}" fails with "unknown revision", even though "@{u}"
works for "@{upstream}".
The "@{upstream}" notation came with its "@{u}" short form from the
very beginning in 28fb84382b (Introduce <branch>@{upstream} notation,
2009-09-10). When "@{push}" was added in adfe5d0434 (sha1_name:
implement @{push} shorthand, 2015-05-21), "@{p}" was held back to
avoid confusion with a proposed "@{publish}" and talk of an "@{pull}".
Neither of those was ever added.
Add the missing "@{p}" for symmetry with "@{u}".
Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
---
object-name: accept @{p} as short for @{push}
@{u} works as the short form of @{upstream}, but @{p} fails with
"unknown revision". This makes @{p} resolve to the same branch as
@{push}, in any case, and documents it next to @{u}.
Changes in v2:
* Commit message explains history.
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2431%2FHaraldNordgren%2Fpush-shorthand-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2431/HaraldNordgren/push-shorthand-v2
Pull-Request: https://github.com/git/git/pull/2431
Range-diff vs v1:
1: f772f79954 ! 1: 1097f119a3 object-name: accept @{p} as short for @{push}
@@ Metadata
## Commit message ##
object-name: accept @{p} as short for @{push}
- Typing "git log @{p}.." fails with "unknown revision", even though
- "@{u}" works as the short form of "@{upstream}". Users who reach for
- the one letter spelling of the push destination by analogy get an
- error.
+ "git log @{p}" fails with "unknown revision", even though "@{u}"
+ works for "@{upstream}".
- Accept "@{p}" wherever "@{push}" is accepted, in any case, just like
- "@{u}".
+ The "@{upstream}" notation came with its "@{u}" short form from the
+ very beginning in 28fb84382b (Introduce <branch>@{upstream} notation,
+ 2009-09-10). When "@{push}" was added in adfe5d0434 (sha1_name:
+ implement @{push} shorthand, 2015-05-21), "@{p}" was held back to
+ avoid confusion with a proposed "@{publish}" and talk of an "@{pull}".
+ Neither of those was ever added.
+
+ Add the missing "@{p}" for symmetry with "@{u}".
Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
Documentation/revisions.adoc | 2 +-
object-name.c | 2 +-
t/t1514-rev-parse-push.sh | 7 +++++++
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/Documentation/revisions.adoc b/Documentation/revisions.adoc
index 3fbfbd3d5f..68ce6f3dc2 100644
--- a/Documentation/revisions.adoc
+++ b/Documentation/revisions.adoc
@@ -122,7 +122,7 @@ some output processing may assume ref names in UTF-8.
`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\}'::
+'[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{p\}'::
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). Like for '@\{upstream\}', we report
diff --git a/object-name.c b/object-name.c
index 4eda8c8eac..6546685760 100644
--- a/object-name.c
+++ b/object-name.c
@@ -657,7 +657,7 @@ static inline int upstream_mark(const char *string, int len)
static inline int push_mark(const char *string, int len)
{
- const char *suffix[] = { "@{push}" };
+ const char *suffix[] = { "@{push}", "@{p}" };
return at_mark(string, len, suffix, ARRAY_SIZE(suffix));
}
diff --git a/t/t1514-rev-parse-push.sh b/t/t1514-rev-parse-push.sh
index d868a08110..5a4f16867a 100755
--- a/t/t1514-rev-parse-push.sh
+++ b/t/t1514-rev-parse-push.sh
@@ -60,6 +60,13 @@ test_expect_success '@{push} with pushremote defined' '
resolve topic@{push} refs/remotes/other/topic
'
+test_expect_success '@{p} is short for @{push}' '
+ test_config push.default current &&
+ test_config branch.topic.pushremote other &&
+ resolve topic@{p} refs/remotes/other/topic &&
+ resolve topic@{P} refs/remotes/other/topic
+'
+
test_expect_success '@{push} with push refspecs' '
test_config push.default nothing &&
test_config remote.origin.push refs/heads/*:refs/heads/magic/* &&
base-commit: a018953688f1b10bddf91bff8747068f5f4746a4
--
gitgitgadget
next prev parent reply other threads:[~2026-10-02 7:50 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 19:39 [PATCH] object-name: accept @{p} as short for @{push} Harald Nordgren via GitGitGadget
2026-09-30 21:39 ` D. Ben Knoble
2026-09-30 22:07 ` Junio C Hamano
2026-09-30 22:39 ` Jeff King
2026-10-01 3:29 ` Junio C Hamano
2026-09-30 22:52 ` Junio C Hamano
2026-10-01 7:05 ` Harald Nordgren
2026-10-02 7:49 ` Harald Nordgren via GitGitGadget [this message]
2026-10-02 12:08 ` [PATCH v2] " Ben Knoble
2026-10-02 13:57 ` Harald Nordgren
2026-10-02 14:47 ` Junio C Hamano
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.2431.v2.git.git.1790927399813.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=haraldnordgren@gmail.com \
--cc=peff@peff.net \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox