threads / discuss / 13067

how to use two bare repositories?

Subject: how to use two bare repositories?

## tl;dr

4 messages between Apr 11, 2008 and Apr 11, 2008.

replies: 3people: 3as markdown or json

Oliver Kullmann· Apr 11, 2008, 22:22 UTC · lore
Hi,
I have the following problem:

We use a public repository, a bare repository A, used with push and pull via ssh. A is only to be used by the core developer group.

Now I want to create another public repository B, from which anonymous pull is possible via http. So B should be another bare repository.

The problem is now that it seems not to be possible to update B:

1. pulling from A is not possible since B is bare;
2. fetching from A seems to work, checking the content of
   B via gitk seems to indicate that B has been updated
 --- however pulling from B doesn't work: The newly
 fetched changes are not transported to a repository
 which pulls from B ???
Hope somebody can shed light on this behaviour.
Thanks!
Oliver
Junio C Hamano· Apr 11, 2008, 23:17 UTC · re: Oliver Kullmann · lore

Re: how to use two bare repositories?

Oliver Kullmann <O.Kullmann@swansea.ac.uk> writes:
Show 11 quoted lines
> Now I want to create another public repository B,
> from which anonymous pull is possible via http.
> So B should be another bare repository.
>
> The problem is now that it seems not to be possible
> to update B:
>
> 1. pulling from A is not possible since B is bare;
> 2. fetching from A seems to work, checking the content of
>    B via gitk seems to indicate that B has been updated
>  --- however pulling from B doesn't work
The usual answer when you see a word "http" mentioned is...
	how are you arranging update-server-info to be run whenever B is
	updated?
Jean-Luc Herren· Apr 11, 2008, 23:19 UTC · re: Oliver Kullmann · lore

Re: how to use two bare repositories?

Oliver Kullmann wrote:
Show 19 quoted lines
> I have the following problem:
> 
> We use a public repository, a bare repository A,
> used with push and pull via ssh.
> A is only to be used by the core developer group.
> 
> Now I want to create another public repository B,
> from which anonymous pull is possible via http.
> So B should be another bare repository.
> 
> The problem is now that it seems not to be possible
> to update B:
> 
> 1. pulling from A is not possible since B is bare;
> 2. fetching from A seems to work, checking the content of
>    B via gitk seems to indicate that B has been updated
>  --- however pulling from B doesn't work: The newly
>  fetched changes are not transported to a repository
>  which pulls from B ???

Probably in your setup, B is tracking A as a remote and if you fetch, only those remotes are updated, but not the local branches in B. If you then clone from B, you don't get B's remotes, you get B's branches. You probably want to do this:

path/to/B$ git remote rm origin path/to/B$ git remote add --mirror origin path/to/A

Though, I wonder if it makes sense to have a 'git clone --bare' set up the remote in mirror mode by default. I'm unsure of what use remotes are in a bare repo.

jlh
Oliver Kullmann· Apr 11, 2008, 23:23 UTC · re: Oliver Kullmann · lore

Re: how to use two bare repositories?

Just adding a further question:

Apparently bare repositories are strange things, which perhaps are not really supported by git. Alright, then I use additionally a real repository C.

Now in the automated process of package generation, the user of my library gets always a clone of C, created by

git clone --no-hardlinks path-to-C

However having the origin C built into that clone is not really useful, since no user has access to C. The natural think to do would be to use instead

git clone --no-hardlinks --origin http:address-of-B path-to-C
but unfortunately 

git complains that "http:address-of-B" is not suitable as an origin??

However "http:address-of-B" works for pull ?

If option "origin" doesn't work, how else is it possible to provide the package-clone with a sensible default value for the pull-operation (this can only be B here)?

Oliver
On Fri, Apr 11, 2008 at 11:22:05PM +0100, Oliver Kullmann wrote:
Show 29 quoted lines
> Hi,
> 
> I have the following problem:
> 
> We use a public repository, a bare repository A,
> used with push and pull via ssh.
> A is only to be used by the core developer group.
> 
> Now I want to create another public repository B,
> from which anonymous pull is possible via http.
> So B should be another bare repository.
> 
> The problem is now that it seems not to be possible
> to update B:
> 
> 1. pulling from A is not possible since B is bare;
> 2. fetching from A seems to work, checking the content of
>    B via gitk seems to indicate that B has been updated
>  --- however pulling from B doesn't work: The newly
>  fetched changes are not transported to a repository
>  which pulls from B ???
> 
> Hope somebody can shed light on this behaviour.
> 
> Thanks!
> 
> Oliver
> 
> --

← back to recent threads