git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* share object storage for multiple clones of different repositories
@ 2011-11-04 23:10 Gelonida N
  2011-11-05  2:26 ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Gelonida N @ 2011-11-04 23:10 UTC (permalink / raw
  To: git

Hi,

(Thunderbird frozewhile sending my previous message so here a resend)


I wondered whether it is possible, that all of my git repository clones
share the same object storage whether they are cloned from they same
remote repository or not.

In my case this might save a lot of diskspace and accelerate cloning
as some huge files are part of several repositories' history and as I'd
like to clone the same repository multiple times in order to have
parallel working directories for parallel tests on different versions /
branches / tags

Further this might reduce clone times.



My goal would be to:
- reduce disk space
- reduce clone time, as objects would be taken from the existing shared
  object storage

If possible it would be great if also all new created shared objects
would end up in the new object storage.


If git doesn't support this natively, then would following approach work
for reducing the disk space (clone time would not be reduced though)



SHARED_STORAGE=$HOME/shared_storage
mkdir $SHARED_STORAGE

git clone remotehost1:repo1
cd repo1
rsync -av .git/objects $SHARED_REPO
rm -rf .git/objects
ln -s $SHARED_REPO/objects .git/


git clone remotehost2:repo2
cd repo2
rsync -av .git/objects $SHARED_REPO
rm -rf .git/objects
ln -s $SHARED_REPO/objects .git/

Thanks for any feedback or other suggestions.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: share object storage for multiple clones of different repositories
  2011-11-04 23:10 share object storage for multiple clones of different repositories Gelonida N
@ 2011-11-05  2:26 ` Junio C Hamano
  2011-11-05  7:37   ` Frans Klaver
  0 siblings, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2011-11-05  2:26 UTC (permalink / raw
  To: Gelonida N; +Cc: git

Gelonida N <gelonida@gmail.com> writes:

> SHARED_STORAGE=$HOME/shared_storage
> mkdir $SHARED_STORAGE
>
> git clone remotehost1:repo1
> cd repo1
> rsync -av .git/objects $SHARED_REPO

Up to this part it is probably OK.  Repeat that for all your local
repositories to collect all objects in $HOME/shared_storage.

After doing that, do this in all of your local repositories:

	rm -rf .git/objects
        mkdir -p .git/objects/info
        echo $HOME/shared/storage >.git/objects/info/alternates

The reason why nobody should follow your original recipe is because any
"git gc"/"git repack" in any of your local repositories would break others
with that approach.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: share object storage for multiple clones of different repositories
  2011-11-05  2:26 ` Junio C Hamano
@ 2011-11-05  7:37   ` Frans Klaver
  2011-11-05 16:06     ` Gelonida N
  0 siblings, 1 reply; 5+ messages in thread
From: Frans Klaver @ 2011-11-05  7:37 UTC (permalink / raw
  To: Gelonida N, Junio C Hamano; +Cc: git

On Sat, 05 Nov 2011 03:26:11 +0100, Junio C Hamano <gitster@pobox.com>  
wrote:

> Gelonida N <gelonida@gmail.com> writes:
>
>> SHARED_STORAGE=$HOME/shared_storage
>> mkdir $SHARED_STORAGE
>>
>> git clone remotehost1:repo1
>> cd repo1
>> rsync -av .git/objects $SHARED_REPO
>
> Up to this part it is probably OK.  Repeat that for all your local
> repositories to collect all objects in $HOME/shared_storage.
>
> After doing that, do this in all of your local repositories:
>
> 	rm -rf .git/objects
>         mkdir -p .git/objects/info
>         echo $HOME/shared/storage >.git/objects/info/alternates
>
> The reason why nobody should follow your original recipe is because any
> "git gc"/"git repack" in any of your local repositories would break  
> others
> with that approach.


Alternatively there's the git-new-workdir script in contrib/workdir in  
git.git. Haven't tested it, but it seems like it does what you want.

Frans

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: share object storage for multiple clones of different repositories
  2011-11-05  7:37   ` Frans Klaver
@ 2011-11-05 16:06     ` Gelonida N
  2011-11-05 16:20       ` Gelonida N
  0 siblings, 1 reply; 5+ messages in thread
From: Gelonida N @ 2011-11-05 16:06 UTC (permalink / raw
  To: git

Thanks for both of your replies,


I'll probably mix both approaches and try out how it works.
I didn't know about git.git
What is the best url for an intrudoction into git.git?




On 11/05/2011 08:37 AM, Frans Klaver wrote:
> On Sat, 05 Nov 2011 03:26:11 +0100, Junio C Hamano <gitster@pobox.com>
> wrote:
> 
>> Gelonida N <gelonida@gmail.com> writes:
>>
>>> SHARED_STORAGE=$HOME/shared_storage
>>> mkdir $SHARED_STORAGE
>>>
>>> git clone remotehost1:repo1
>>> cd repo1
>>> rsync -av .git/objects $SHARED_REPO
>>
>> Up to this part it is probably OK.  Repeat that for all your local
>> repositories to collect all objects in $HOME/shared_storage.
>>
>> After doing that, do this in all of your local repositories:
>>
>>     rm -rf .git/objects
>>         mkdir -p .git/objects/info
>>         echo $HOME/shared/storage >.git/objects/info/alternates
>>
>> The reason why nobody should follow your original recipe is because any
>> "git gc"/"git repack" in any of your local repositories would break
>> others
>> with that approach.
> 
> 
> Alternatively there's the git-new-workdir script in contrib/workdir in
> git.git. Haven't tested it, but it seems like it does what you want.
> 
> Frans

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: share object storage for multiple clones of different repositories
  2011-11-05 16:06     ` Gelonida N
@ 2011-11-05 16:20       ` Gelonida N
  0 siblings, 0 replies; 5+ messages in thread
From: Gelonida N @ 2011-11-05 16:20 UTC (permalink / raw
  To: git

On 11/05/2011 05:06 PM, Gelonida N wrote:
> Thanks for both of your replies,
> 
> 
> I'll probably mix both approaches and try out how it works.
> I didn't know about git.git
> What is the best url for an intrudoction into git.git?
> 
> 
>>
>> Alternatively there's the git-new-workdir script in contrib/workdir in
>> git.git. Haven't tested it, but it seems like it does what you want.
>>
>> Frans
> 
> 

In an installed git (at least on Ubuntu) the contrib directory can be
found at /usr/share/doc/git/contrib

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-11-05 16:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-04 23:10 share object storage for multiple clones of different repositories Gelonida N
2011-11-05  2:26 ` Junio C Hamano
2011-11-05  7:37   ` Frans Klaver
2011-11-05 16:06     ` Gelonida N
2011-11-05 16:20       ` Gelonida N

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).