threads / discuss / 33906

push not resolving commit-ish?

Subject: push not resolving commit-ish?

## tl;dr

12 messages between May 23, 2013 and May 23, 2013.

replies: 11people: 3as markdown or json

Michael S. Tsirkin· May 23, 2013, 10:53 UTC · lore

Looks like push can't resolve tags to commits. Why is that?

linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
error: Trying to write non-commit object
a8c6d53c4d84b3a5eb182758a9cdceceba4691da to branch refs/heads/vhost-next
To /scm/linux
 ! [remote rejected] v3.10-rc2 -> vhost-next (failed to write)
error: failed to push some refs to '/scm/linux'
linux$ git log v3.10-rc2|head -5
commit c7788792a5e7b0d5d7f96d0766b4cb6112d47d75
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Mon May 20 14:37:38 2013 -0700
    Linux 3.10-rc2

linux$ $ git push -f $PWD c7788792a5e7b0d5d7f96d0766b4cb6112d47d75:refs/heads/vhost-next Everything up-to-date

Michael S. Tsirkin· May 23, 2013, 10:56 UTC · re: Michael S. Tsirkin · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 01:53:10PM +0300, Michael S. Tsirkin wrote:
Show 23 quoted lines
> Looks like push can't resolve tags to commits.
> Why is that?
> 
> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
> error: Trying to write non-commit object
> a8c6d53c4d84b3a5eb182758a9cdceceba4691da to branch refs/heads/vhost-next
> To /scm/linux
>  ! [remote rejected] v3.10-rc2 -> vhost-next (failed to write)
> error: failed to push some refs to '/scm/linux'
> 
> linux$ git log v3.10-rc2|head -5
> commit c7788792a5e7b0d5d7f96d0766b4cb6112d47d75
> Author: Linus Torvalds <torvalds@linux-foundation.org>
> Date:   Mon May 20 14:37:38 2013 -0700
> 
>     Linux 3.10-rc2
> 
> 
> linux$ $ git push -f $PWD
> c7788792a5e7b0d5d7f96d0766b4cb6112d47d75:refs/heads/vhost-next
> Everything up-to-date
> 
> 
Forgot to say - this is recent git.git master:
1.8.3.rc3.8.g5e49f30
Felipe Contreras· May 23, 2013, 10:56 UTC · re: Michael S. Tsirkin · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 5:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> Looks like push can't resolve tags to commits.
> Why is that?
>
> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next

Perhaps v3.10-rc2^{}. Yeah, totally and completely not-user-friendly, I already complained about it to no avail.

-- 
Felipe Contreras
Junio C Hamano· May 23, 2013, 18:10 UTC · re: Felipe Contreras · lore

Re: push not resolving commit-ish?

Felipe Contreras <felipe.contreras@gmail.com> writes:
Show 7 quoted lines
> On Thu, May 23, 2013 at 5:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
>> Looks like push can't resolve tags to commits.
>> Why is that?
>>
>> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
>
> Perhaps v3.10-rc2^{}. Yeah, totally and completely not-user-friendly,

More commonly "v3.10-rc2^0:vhost-next", if you are truly pushing it out to a remote repository, but then it invites a puzzlement "What do you plan to do next after pushing? The only reason v3.10-rc2 is used is because there is not yet a local branch that will host the vhost-next changes that is built on top of that tag (otherwise you would be pushing that branch to vhost-next)".

But in this particular case, you are force-pushing into the current repository, and it is spelled much more commonly

    git branch -f vhost-next v3.10-rc2
I would think.
Michael S. Tsirkin· May 23, 2013, 21:05 UTC · re: Junio C Hamano · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 11:10:32AM -0700, Junio C Hamano wrote:
Show 23 quoted lines
> Felipe Contreras <felipe.contreras@gmail.com> writes:
> 
> > On Thu, May 23, 2013 at 5:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> >> Looks like push can't resolve tags to commits.
> >> Why is that?
> >>
> >> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
> >
> > Perhaps v3.10-rc2^{}. Yeah, totally and completely not-user-friendly,
> 
> More commonly "v3.10-rc2^0:vhost-next", if you are truly pushing it
> out to a remote repository, but then it invites a puzzlement "What
> do you plan to do next after pushing?  The only reason v3.10-rc2 is
> used is because there is not yet a local branch that will host the
> vhost-next changes that is built on top of that tag (otherwise you
> would be pushing that branch to vhost-next)".
> 
> But in this particular case, you are force-pushing into the current
> repository, and it is spelled much more commonly
> 
>     git branch -f vhost-next v3.10-rc2
> 
> I would think.

That was just a bad example though, I really use it for push to remove.

Junio C Hamano· May 23, 2013, 21:06 UTC · re: Michael S. Tsirkin · lore

Re: push not resolving commit-ish?

"Michael S. Tsirkin" <mst@redhat.com> writes:
Show 27 quoted lines
> On Thu, May 23, 2013 at 11:10:32AM -0700, Junio C Hamano wrote:
>> Felipe Contreras <felipe.contreras@gmail.com> writes:
>> 
>> > On Thu, May 23, 2013 at 5:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
>> >> Looks like push can't resolve tags to commits.
>> >> Why is that?
>> >>
>> >> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
>> >
>> > Perhaps v3.10-rc2^{}. Yeah, totally and completely not-user-friendly,
>> 
>> More commonly "v3.10-rc2^0:vhost-next", if you are truly pushing it
>> out to a remote repository, but then it invites a puzzlement "What
>> do you plan to do next after pushing?  The only reason v3.10-rc2 is
>> used is because there is not yet a local branch that will host the
>> vhost-next changes that is built on top of that tag (otherwise you
>> would be pushing that branch to vhost-next)".
>> 
>> But in this particular case, you are force-pushing into the current
>> repository, and it is spelled much more commonly
>> 
>>     git branch -f vhost-next v3.10-rc2
>> 
>> I would think.
>
> That was just a bad example though, I really use it for
> push to remove.
Then it invites a puzzlement as you can see above.
Michael S. Tsirkin· May 23, 2013, 21:16 UTC · re: Junio C Hamano · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 11:10:32AM -0700, Junio C Hamano wrote:
Show 16 quoted lines
> Felipe Contreras <felipe.contreras@gmail.com> writes:
> 
> > On Thu, May 23, 2013 at 5:53 AM, Michael S. Tsirkin <mst@redhat.com> wrote:
> >> Looks like push can't resolve tags to commits.
> >> Why is that?
> >>
> >> linux$ git push -f $PWD v3.10-rc2:refs/heads/vhost-next
> >
> > Perhaps v3.10-rc2^{}. Yeah, totally and completely not-user-friendly,
> 
> More commonly "v3.10-rc2^0:vhost-next", if you are truly pushing it
> out to a remote repository, but then it invites a puzzlement "What
> do you plan to do next after pushing?  The only reason v3.10-rc2 is
> used is because there is not yet a local branch that will host the
> vhost-next changes that is built on top of that tag (otherwise you
> would be pushing that branch to vhost-next)".

This was just a bad example. The real reason is this:

I have a development branch, vhost-next. I have a tag there like for_linus for things that are ready to go out. I don't always point it at the tip of the branch since I might want to rebase/amend X last commits.

It's a tag and not a branch since I need to sign the tag. I push to a branch and not just the tag since this way people can track it and do downstream development on top. So pushing the tag to branch would save me some churn.

Show 6 quoted lines
> But in this particular case, you are force-pushing into the current
> repository, and it is spelled much more commonly
> 
>     git branch -f vhost-next v3.10-rc2
> 
> I would think.
Junio C Hamano· May 23, 2013, 21:21 UTC · re: Michael S. Tsirkin · lore

Re: push not resolving commit-ish?

"Michael S. Tsirkin" <mst@redhat.com> writes:
> It's a tag and not a branch since I need to sign the tag.
> I push to a branch and not just the tag since this way
> people can track it and do downstream development on top.
> So pushing the tag to branch would save me some churn.
It seems our messages crossed.

Everything you said before the last sentence makes sense to me, and if the last sentence were "pushing the commit that is tagged to branch", it also makes sense to me.

Michael S. Tsirkin· May 23, 2013, 21:09 UTC · re: Junio C Hamano · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 11:05:00AM -0700, Junio C Hamano wrote:
Show 6 quoted lines
> "Michael S. Tsirkin" <mst@redhat.com> writes:
> 
> > Looks like push can't resolve tags to commits.
> > Why is that?
> 
> How else would you push a tag out?

Well my reaction is, it seems to figure out it needs a commit and then instead of just getting it, it errors out. Why not just DWIM?

But at least I see the reason now, thanks.
-- 
MST
Junio C Hamano· May 23, 2013, 21:19 UTC · re: Michael S. Tsirkin · lore

Re: push not resolving commit-ish?

"Michael S. Tsirkin" <mst@redhat.com> writes:
Show 10 quoted lines
> On Thu, May 23, 2013 at 11:05:00AM -0700, Junio C Hamano wrote:
>> "Michael S. Tsirkin" <mst@redhat.com> writes:
>> 
>> > Looks like push can't resolve tags to commits.
>> > Why is that?
>> 
>> How else would you push a tag out?
>
> Well my reaction is, it seems to figure out it needs a commit and then
> instead of just getting it, it errors out.  Why not just DWIM?
Ahh, that one.

The local branch name hierarchy refs/heads/ is special in that you cannot have a tag sitting at the tip, so when "push" decides to update something under refs/heads/ on the receiving end, it may not be a bad idea to peel it to a commit (and fail if it does not) before creating a pack and telling the other end what the value of the updated tip should be, and I do not think it will hurt anybody.

Restriction in the other direction (i.e. "if push does not go to refs/tags/, unconditionally unwrap") is a no-no, though.

Michael S. Tsirkin· May 23, 2013, 21:26 UTC · re: Junio C Hamano · lore

Re: push not resolving commit-ish?

On Thu, May 23, 2013 at 02:19:40PM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> "Michael S. Tsirkin" <mst@redhat.com> writes:
> 
> > On Thu, May 23, 2013 at 11:05:00AM -0700, Junio C Hamano wrote:
> >> "Michael S. Tsirkin" <mst@redhat.com> writes:
> >> 
> >> > Looks like push can't resolve tags to commits.
> >> > Why is that?
> >> 
> >> How else would you push a tag out?
> >
> > Well my reaction is, it seems to figure out it needs a commit and then
> > instead of just getting it, it errors out.  Why not just DWIM?
> 
> Ahh, that one.
> 
> The local branch name hierarchy refs/heads/ is special in that you
> cannot have a tag sitting at the tip, so when "push" decides to
> update something under refs/heads/ on the receiving end, it may not
> be a bad idea to peel it to a commit (and fail if it does not)
> before creating a pack and telling the other end what the value of
> the updated tip should be, and I do not think it will hurt anybody.
Yes, that would help my case.
> 
> Restriction in the other direction (i.e. "if push does not go to
> refs/tags/, unconditionally unwrap") is a no-no, though.

← back to recent threads