threads / discuss / 20141

pushing specific branches to a public mirror repos

Subject: pushing specific branches to a public mirror repos

## tl;dr

5 messages between Jul 17, 2009 and Jul 17, 2009.

replies: 4people: 3as markdown or json

Graeme Geldenhuys· Jul 17, 2009, 08:30 UTC · lore
Hi,

I cloned a SubVersion repository and am maintaining a Git mirror of it on GitHub. Here is an example of some of the SubVersion branches that got cloned.

refs/remotes/cleanroom refs/remotes/fixes_2_0 refs/remotes/fixes_2_2 refs/remotes/fixes_2_2_0_dos refs/remotes/florian refs/remotes/fpc_2_3 refs/remotes/generics refs/remotes/genfunc refs/remotes/trunk ...

By default 'git svn' created a "master" branch which tracks "remotes/trunk". This is currently the only branch available on GitHub mirror repository and I push it as follows:

On our server which manages the subversion -> local git repos -> github sync process.

  $ cd /path/to/repository/
  $ git svn fetch
  $ git push github master

This works fine. Now I don't have any other local branches or any local modifications (I used to have, but reverted all of them) so now a 'git svn fetch' does clean fast-forward merges without problems.

I currently have the following git config setting for the remote github repository:

[remote "github"]
	url = git@github.com:graemeg/freepascal.git
	push = +refs/remotes/*:refs/heads/*

As far as I understand, if I do 'git push github', it is going to push all the SubVersion branches (as listed above) as heads to GitHub - but this is not what I want. Many of those branches in SubVersion are old, outdated or private development areas.

I only want to push the "trunk" and "fixes_2_2" SubVersion branches to GitHub as heads. How must I change by remote.github.push config setting, or must I do a manual push as I do with the local tracking "master" branch.

In summary:
  * Can I change remote.github.push so that if I run 'git push github'
    that it will ONLY push remotes/trunk and remotes/fixes_2_2 to
    GitHub mirror
  * or must I manually push those two to GitHub mirror as follows
     once off create a tracking branch:
       $ git branch --track fixes_2_2 remotes/fixes_2_2
     then hourly do the following:
       $ cd /path/to/repository/
       $ git svn fetch
       $ git push github master
       $ git push github fixes_2_2
Regards,
   - Graeme -
-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
Johannes Sixt· Jul 17, 2009, 08:51 UTC · re: Graeme Geldenhuys · lore

Re: pushing specific branches to a public mirror repos

Graeme Geldenhuys schrieb:
Show 10 quoted lines
> I currently have the following git config setting for the remote github
> repository:
> 
> [remote "github"]
>     url = git@github.com:graemeg/freepascal.git
>     push = +refs/remotes/*:refs/heads/*
> 
> I only want to push the "trunk" and "fixes_2_2" SubVersion branches to
> GitHub as heads. How must I change by remote.github.push config setting,
> or must I do a manual push as I do with the local tracking "master" branch.
You can have more than one push line in the config:
    push = +refs/remotes/trunk:refs/heads/trunk
    push = +refs/remotes/fixes_2_2:refs/heads/fixes_2_2
-- Hannes
Graeme Geldenhuys· Jul 17, 2009, 09:11 UTC · re: Johannes Sixt · lore

Re: pushing specific branches to a public mirror repos

Johannes Sixt wrote:
Show 5 quoted lines
> 
> You can have more than one push line in the config:
> 
>     push = +refs/remotes/trunk:refs/heads/trunk
>     push = +refs/remotes/fixes_2_2:refs/heads/fixes_2_2

Excellent, thanks. I thought about that, but wasn't sure and did not want to try because I already screwed up the GitHub mirror once before.

 >     push = +refs/remotes/trunk:refs/heads/trunk
Must this stay as is, or must I push 'remotes/trunk' to 'heads/master'?
      push = +refs/remotes/trunk:refs/heads/trunk
vs
      push = +refs/remotes/trunk:refs/heads/master
 From my server...
$ git ls-remote github
6b9b6460aa79a4b86c6bb1535b78e4fc555f89d5	HEAD
6b9b6460aa79a4b86c6bb1535b78e4fc555f89d5	refs/heads/master

My local "master" branch is currently tracking the refs/remotes/trunk, but for some reason (which I don't understand), if I do a 'git svn fetch' by default master branch is not updated. I still have to run 'git svn rebase -l' to get master in sync. Is there something I can change in the config to automate that as well?

Regards,
   - Graeme -
-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
Bert Wesarg· Jul 17, 2009, 09:47 UTC · re: Graeme Geldenhuys · lore

Re: pushing specific branches to a public mirror repos

On Fri, Jul 17, 2009 at 11:11, Graeme Geldenhuys<graemeg@gmail.com> wrote:
Show 5 quoted lines
> My local "master" branch is currently tracking the refs/remotes/trunk, but
> for some reason (which I don't understand), if I do a 'git svn fetch' by
> default master branch is not updated. I still have to run 'git svn rebase
> -l' to get master in sync. Is there something I can change in the config to
> automate that as well?
Try 'git svn rebase' instead.
Bert
Show 5 quoted lines
>
>
>
> Regards,
>  - Graeme -
Johannes Sixt· Jul 17, 2009, 10:05 UTC · re: Graeme Geldenhuys · lore

Re: pushing specific branches to a public mirror repos

Graeme Geldenhuys schrieb:
Show 5 quoted lines
> Must this stay as is, or must I push 'remotes/trunk' to 'heads/master'?
> 
>      push = +refs/remotes/trunk:refs/heads/trunk
> vs
>      push = +refs/remotes/trunk:refs/heads/master
Both are OK. Pick the one that suits your needs.
-- Hannes

← back to recent threads