Skip to contentSkip to conversation

pushing remote branches

DISCUSSION Lorenzo Bettini 3 participants 6 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hi

I recently started to use git, and I experienced problems with branches: on my machine I did (on an already cloned repo)

git checkout -b experiments origin/experiments

and thus my config reads

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

isn't this enough to be able to push the experiments branch?

I tried

git push origin experiments

It tells me that it is a read-only url...

after adding

[remote "experiments"]

        url = git@...
        fetch = 

+refs/heads/experiments:refs/remotes/experiments/experiments

I can now push that branch with

git push experiments experiments

but I was wondering whether the initial config wasn't enough...

many thanks in advance
Lorenzo

Signature · 8 lines
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
ICQ# lbetto, 16080134     (GNU/Linux User # 158233)
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
http://www.myspace.com/supertrouperabba
BLOGS: http://tronprog.blogspot.com  http://longlivemusic.blogspot.com
http://www.gnu.org/software/src-highlite
http://www.gnu.org/software/gengetopt
http://www.gnu.org/software/gengen http://doublecpp.sourceforge.net
#1 lore raw

Hi Lorenzo,

Quoted 3 lines · Lorenzo Bettini
           url = git://...

isn't this enough to be able to push the experiments branch?

not normally.

The "git://" protocol is a read-only protocol by default. Since it is completely unauthenticated, enabling push via git:// is not a good idea in general.

Quoted 1 line
           url = git@...

This is a shortcut for something like ssh://git@..., which then allows write also.

#2 lore raw
Quoted 6 lines · Sitaram Chamarty

Hi Lorenzo,

Quoted 1 line · Lorenzo Bettini
           url = git://...
Quoted 7 lines
Quoted 1 line

isn't this enough to be able to push the experiments branch?

not normally.

The "git://" protocol is a read-only protocol by default. Since it is completely unauthenticated, enabling push via git:// is not a good idea in general.

so probably I managed to push origin master anyway because gitorious asked me for my ssh passphrase?

Quoted 5 lines
Quoted 2 lines
           url = git@...

This is a shortcut for something like ssh://git@..., which then allows write also.

Thus, if I had

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git@...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

instead of

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

I would have been able to push also to branch experiments? Without having to add

[remote "experiments"]

        url = git@...
        fetch = 

+refs/heads/experiments:refs/remotes/experiments/experiments

?

thanks in advance
Lorenzo

Signature · 8 lines
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
ICQ# lbetto, 16080134     (GNU/Linux User # 158233)
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
http://www.myspace.com/supertrouperabba
BLOGS: http://tronprog.blogspot.com  http://longlivemusic.blogspot.com
http://www.gnu.org/software/src-highlite
http://www.gnu.org/software/gengetopt
http://www.gnu.org/software/gengen http://doublecpp.sourceforge.net
#3 lore raw
Quoted 11 lines · Lorenzo Bettini
Quoted 10 lines · Sitaram Chamarty

Hi Lorenzo,

Quoted 3 lines · Lorenzo Bettini
               url = git://...

isn't this enough to be able to push the experiments branch?

Quoted 8 lines
Quoted 5 lines

not normally.

The "git://" protocol is a read-only protocol by default. Since it is
completely unauthenticated, enabling push via git:// is not a good idea in general.

so probably I managed to push origin master anyway because gitorious asked me for my ssh passphrase?

As far as I know you could not have pushed anything when the url is
git:// (at least by default. Push over git:// can be enabled but is highly inadvisable and I have not seen anyone enable it nor any good reason to)

Quoted 24 lines

Thus, if I had

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git@...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

instead of

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

Quoted 8 lines

I would have been able to push also to branch experiments? Without having
to add

[remote "experiments"]
url = git@...
fetch = +refs/heads/experiments:refs/remotes/experiments/experiments

?

(by the way: do you mean refs/remotes/origin/experiments in that last line above?)

Anyway to answer your question, I do not see the refspec line as the issue here, but the URL for the repo, which determines how you access it.

regards,

sitaram

#4 lore raw
Quoted 28 lines · Sitaram Chamarty
Quoted 28 lines

Thus, if I had

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git@...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

instead of

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

I would have been able to push also to branch experiments? Without having
to add

Quoted 9 lines
Quoted 5 lines

[remote "experiments"]
url = git@...
fetch = +refs/heads/experiments:refs/remotes/experiments/experiments

?

(by the way: do you mean refs/remotes/origin/experiments in that last line above?)

no, it's just like I wrote it...

you mean in

[remote "experiments"]
url = [email protected]...
fetch =
+refs/heads/experiments:refs/remotes/experiments/experiments

or in

[branch "experiments"]
remote = origin
merge = refs/heads/experiments

?

Quoted 2 lines

Anyway to answer your question, I do not see the refspec line as the issue here, but the URL for the repo, which determines how you access it.

so this would have been enough:

Quoted 9 lines
Quoted 9 lines

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

?

thanks
Lorenzo

Signature · 3 lines
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
BLOGS: http://tronprog.blogspot.com  http://longlivemusic.blogspot.com
#5 lore raw
Quoted 14 lines · Lorenzo Bettini
Quoted 2 lines

Anyway to answer your question, I do not see the refspec line as the issue here, but the URL for the repo, which determines how you access it.

so this would have been enough:

Quoted 9 lines
Quoted 9 lines

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/* url = git://...
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "experiments"]
remote = origin
merge = refs/heads/experiments

Because "git://" is almost always read-only, you wouldn't be able to push back to the origin with that configuration. If you are only following the project that is perfectly fine.

Otherwise, either use "git@..." in remote.origin.url to use git-over-ssh in both directions, or you can use pushurl if you have recent enough version of git, like:

    [remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git://...
        pushurl = git@...

When you primed your repository with "git clone git://...", it would be nice if "clone" added a "corresponding" pushurl for you. But ... part of the two lines are often different, depending on how hosting site is organized, so unfortunately "clone" cannot do so.