All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Susi <psusi@cfl.rr.com>
To: Jeff King <peff@peff.net>
Cc: Simon Brenner <olsner@gmail.com>, git@vger.kernel.org
Subject: Re: [RFC] deprecating and eventually removing "git relink"?
Date: Mon, 21 Nov 2011 17:09:23 -0500	[thread overview]
Message-ID: <4ECACC13.7050507@cfl.rr.com> (raw)
In-Reply-To: <20111114103451.GA10847@sigill.intra.peff.net>

On 11/14/2011 5:34 AM, Jeff King wrote:
> One issue with this scheme (or most similar schemes) is that child repos
> are uniquely identified by their directory name. In the absence of
> alternates, it's perfectly reasonable to do:
>
>    git init; hack hack hack; commit commit commit
>    cd .. ; mv project new-project-name
>
> but here it would break the shared repo's link to the child (which is
> not just inconvenient, but dangerous, as we will not respect its refs
> when pruning). Probably the "warning" above should actually error out
> and force the user to say "yes, I deleted this child" or "no, I moved it
> here".

I hacked together a setup a few weeks ago that doesn't suffer from that 
problem.  I had two repos that had considerable shared history ( one 
forked from the other ), so I created a temporary repository and pointed 
its alternates to the other two.  I then did some shell magic to 
generate a list of all objects shared by both repos, and sent that list 
to git-pack-objects.  This gave me a pack file in the temp repo that 
contained all of the shared objects.  I then made a .keep file and hard 
linked this pack file ( and index, and .keep file ) into both original 
repos, deleted the temp repo, and then repacked both original repos. 
This left them both with two pack files: one that is shared, and one 
that is all of the objects specific to that repo.

Because the shared objects are in a pack file that both repos hard link 
to, neither one will break if I (re)move the other.  It would be nice if 
git relink could be enhanced to do this, then you can just periodically 
run relink with a list of repos and it could hard link all of the shared 
data into a big shared pack file, with no need to have a "master" repo 
that requires special handling.

  parent reply	other threads:[~2011-11-21 22:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-14  0:38 [RFC] deprecating and eventually removing "git relink"? Junio C Hamano
2011-11-14  6:06 ` Miles Bader
2011-11-14  6:27   ` Junio C Hamano
2011-11-14  9:03     ` Chris Packham
2011-11-14  8:48   ` Simon Brenner
2011-11-14 10:34     ` Jeff King
2011-11-14 20:18       ` Junio C Hamano
2011-11-14 20:25         ` Jeff King
2011-11-14 22:08           ` Junio C Hamano
2011-11-15  4:48             ` Miles Bader
2011-11-21 22:09       ` Phillip Susi [this message]
2011-11-21 22:19         ` Jeff King
2011-11-22  1:58           ` Phillip Susi
2011-11-14 10:24   ` Junio C Hamano
2011-11-15  4:40     ` Miles Bader

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ECACC13.7050507@cfl.rr.com \
    --to=psusi@cfl.rr.com \
    --cc=git@vger.kernel.org \
    --cc=olsner@gmail.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.