pushing remote branches
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
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.
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 viagit://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
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 viagit://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 isgit:// (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/experimentsinstead 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
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/experimentsinstead 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/experimentsI 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
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.