threads / discuss / 20119

Correct way of making existing remote repository "bare"

Subject: Correct way of making existing remote repository "bare"

## tl;dr

7 messages between Jul 15, 2009 and Jul 16, 2009.

replies: 6people: 5as markdown or json

Graeme Geldenhuys· Jul 15, 2009, 12:20 UTC · lore
Hi,

Yesterday I initialized a new repository on our server. I did some coding locally, added the remote server (git remote add ....) and then pushed my changes to the remote server.

But I noticed that my remote server is not a "bare" repository and git complains when I push to it again. What is the correct way to make an existing remote repository bare?

This is what I did and it worked, but not sure if this is the correct way of doing it.

Steps I done:
* ssh to remote server
* git clone --bare -l <path_to_repos> <new_dir>
* renamed old repository directory
* renamed new repository dir to what old repository used to be.
Like I said, this did the tick, but is this the correct way of doing it?
Regards,
   - Graeme -
-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
Johannes Schindelin· Jul 15, 2009, 14:08 UTC · re: Graeme Geldenhuys · lore

Re: Correct way of making existing remote repository "bare"

Hi,
On Wed, 15 Jul 2009, Graeme Geldenhuys wrote:
Show 8 quoted lines
> Steps I done:
> 
> * ssh to remote server
> * git clone --bare -l <path_to_repos> <new_dir>
> * renamed old repository directory
> * renamed new repository dir to what old repository used to be.
> 
> Like I said, this did the tick, but is this the correct way of doing it?
That's the easiest.  However, I regularly avoid those steps by doing
	mv bla/.git bla.git
	git --git-dir=bla.git config core.bare true
	rm -rf bla

This requires a bit more familiarity with the Git internals than your solution, though (although it makes sure that the config is unchanged, as well as possibly installed hooks).

Ciao, Dscho

Dirk Süsserott· Jul 15, 2009, 14:21 UTC · re: Johannes Schindelin · lore

Re: Correct way of making existing remote repository "bare"

Am 15.07.2009 16:08 schrieb Johannes Schindelin:
Show 23 quoted lines
> Hi,
> 
> On Wed, 15 Jul 2009, Graeme Geldenhuys wrote:
> 
>> Steps I done:
>>
>> * ssh to remote server
>> * git clone --bare -l <path_to_repos> <new_dir>
>> * renamed old repository directory
>> * renamed new repository dir to what old repository used to be.
>>
>> Like I said, this did the tick, but is this the correct way of doing it?
> 
> That's the easiest.  However, I regularly avoid those steps by doing
> 
> 	mv bla/.git bla.git
> 	git --git-dir=bla.git config core.bare true
> 	rm -rf bla
> 
> This requires a bit more familiarity with the Git internals than your 
> solution, though (although it makes sure that the config is unchanged, as 
> well as possibly installed hooks).
> 
Dscho, you boiled down my solution to real git commands. Great. -- Dirk
Graeme Geldenhuys· Jul 15, 2009, 14:44 UTC · re: Johannes Schindelin · lore

Re: Correct way of making existing remote repository "bare"

Johannes Schindelin wrote:
> 
> That's the easiest.  However, I regularly avoid those steps by doing
Thanks Johannes and Dirk. I'll make a not of this.

Maybe somebody could add this to some Git FAQ? I did some Google'ing and didn't find any documentation on this (well nothing blatantly visible).

Regards,
   - Graeme -
-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://opensoft.homeip.net/fpgui/
Eric Raible· Jul 16, 2009, 07:59 UTC · re: Johannes Schindelin · lore

Re: Correct way of making existing remote repository "bare"

Johannes Schindelin <Johannes.Schindelin <at> gmx.de> writes:
Show 6 quoted lines
> That's the easiest.  However, I regularly avoid those steps by doing
> 
> 	mv bla/.git bla.git
> 	git --git-dir=bla.git config core.bare true
> 	rm -rf bla
> 
Is it simpler and more complete to do this?
	git config core.bare true
	git config core.logAllRefUpdates
	mv bla/.git bla.git
	rm -rf bla
Dirk Süsserott· Jul 15, 2009, 14:12 UTC · re: Graeme Geldenhuys · lore

Re: Correct way of making existing remote repository "bare"

Am 15.07.2009 14:20 schrieb Graeme Geldenhuys:
Show 26 quoted lines
> Hi,
> 
> Yesterday I initialized a new repository on our server. I did some 
> coding locally, added the remote server (git remote add ....) and then 
> pushed my changes to the remote server.
> 
> But I noticed that my remote server is not a "bare" repository and git 
> complains when I push to it again. What is the correct way to make an 
> existing remote repository bare?
> 
> This is what I did and it worked, but not sure if this is the correct 
> way of doing it.
> 
> Steps I done:
> 
> * ssh to remote server
> * git clone --bare -l <path_to_repos> <new_dir>
> * renamed old repository directory
> * renamed new repository dir to what old repository used to be.
> 
> Like I said, this did the tick, but is this the correct way of doing it?
> 
> 
> Regards,
>   - Graeme -
> 

Sounds like that's the correct way. I sometimes faced the same problem and was lazy:

$ ssh to the remote && cd repo $ rm everything except for the .git directory (make sure everything is committed before doing this) $ mv .git/* . && rmdir .git # i.e.move the .git contents one level up $ edit config change 'core.bare=false' to 'core.bare=true' (or add a similar line)

done.

I think what you did is 'porcellain' while my solution is 'plumbing'. Any complaints?

     Dirk
Junio C Hamano· Jul 15, 2009, 19:39 UTC · re: Dirk Süsserott · lore

Re: Correct way of making existing remote repository "bare"

Dirk Süsserott <newsletter@dirk.my1.cc> writes:
> I think what you did is 'porcellain' while my solution is 'plumbing'.
> Any complaints?
No.

We need to be careful and either (1) to have anybody who adds 'plumbing' procedure to any FAQ responsible for keeping it up to date, as the implementation detail is subject to change, or (2) only to have 'Porcelain' description in the documentation.

← back to recent threads