easy repository initialization that turned out not to be that easy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I stumbled about some tasks that I expected to be easy but
turned out not to be that easy ...

(with git version 1.5.3.rc2.29.gc4640f)


1) How can I switch a private repository to shared as if it
was created by 'git-init --shared' in the first place?

Just executing 'git-init --shared' in the repo doesn't
adjust permissions as needed.

Cloning it to shared doesn't work either because the meaning
of 'git-clone --bare --shared' is different from
'git-init --shared'.

So I created a fresh repository

   mkdir shared.git
   cd shared.git
   git --bare init --shared

and tried to naively fetch all by executing

   git fetch ../private.git

Hmm... it does a lot of things, but I ended without branches.
fetch apparently has nothing like '--all'.

... but push has, so I finally did

   cd ../private.git
   git push --all ../shared.git
   git push --tags ../shared.git

Note, 'git push --all --tags' refused to work, so I needed
to push branches and tags separately.

Is it really that hard, or did I miss something?


2) How can I set up an empty bare repository that shares
objects with an existing repository? I'd like to do that
to save space and bandwidth.

I started to search for something like 'git init --reference'
or 'git init -l', similar to what 'git clone' provides.

I don't remember all approaches I tried, but finally I used

   git clone --bare -l existing.git new.git
   cd new.git
   mv refs/head/master .
   rm -rf refs/heads/* refs/tags/*
   mv master refs/heads

I remember that I needed to leave the master in place because
otherwise a 'git push' didn't recognize that objects are already
present and transferred everything, which is quite annoying over
a slower network connection. With master in place the first push
to new.git worked as expected. Only the additional objects were
sent.

Did I miss something?

	Steffen
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux