Re: [RFC PATCH] object-name: add @{upstreamhead} shorthand
- From
Bence Ferdinandy <bence@ferdinandy.com>
- Date
- Oct 21, 2024, 20:09 UTC
- Message-ID
- <D51R90BTHJMY.1C1XY5P4CHTWG@ferdinandy.com>
- In-Reply-To
- <20241021191441.GD1219228@coredump.intra.peff.net>
On Mon Oct 21, 2024 at 21:14, Jeff King <peff@peff.net> wrote:
Show 34 quoted lines
> On Sun, Oct 20, 2024 at 11:42:38PM +0200, Bence Ferdinandy wrote:
>
>> I basically use it for two things:
>>
>> - variations of `git log remote/HEAD..` for which I currently have an alias
>> with "origin" hardcoded. E.g. I'm on a feature branch I'm reviewing and
>> I want to know what commits are new compared to origin/(master|main|trunk),
>> but I use HEAD, because I never know (and don't really want to pay attention
>> to) what project uses what. And although "origin" is usually ok, but not
>> always if there are forks in play, so @{upstreamhead} would make it agnostic
>> to the remote's name.
>
> I'm a little skeptical that this is useful. If a local branch has a
> particular remote branch configured as its upstream, then shouldn't your
> search for new commits be against that configured upstream branch, not
> whatever that remote's HEAD happens to be?
>
> In many cases, of course, I'd expect that HEAD to also be the upstream
> branch. But then you could just use @{upstream}.
>
> And in some cases, you really want to compare against a known base
> point, regardless of the configured upstream. But then you should use
> the full name of that base point, rather than the remote half of the
> upstream config.
>
> It sounds more like a band-aid for scripts that are expected to be used
> across repos that may use other names for what is effectively "origin".
> In which case I question whether we really want new lookup syntax,
> versus having those scripts learn to query the remote name.
>
> E.g., I think you could do:
>
> upstream=$(git rev-parse --symbolic-full-name @{upstream})
> git log ${upstream%/*}/HEAD..That particular one will break if you have something like refs/remotes/origin/foo/bar, but I get your point.
> > And possibly we could make it easier to just grab the remote name with a > single command.
As I was running this patch through my head yesterday I sort of distilled my argument in favour to "writing remote agnostic scripts are unnecessarily complicated", but I do agree, that if there were a git command that could return the remote for a branch without any extra scripting hacks would easily get you the same result, and may even be useful elsewhere.
I'm not sure where this would be the best. Maybe: git branch --show-current-remote ?
Thanks for the feedback!
Best, Bence
-- bence.ferdinandy.com