git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Clone with local alternates?
@ 2006-04-18 23:48 David Woodhouse
  2006-04-18 23:56 ` Shawn Pearce
  2006-04-19  9:36 ` Eric W. Biederman
  0 siblings, 2 replies; 7+ messages in thread
From: David Woodhouse @ 2006-04-18 23:48 UTC (permalink / raw)
  To: git

Often I want to clone a remote repository but would like to use an
existing local source tree as 'alternates'. 

One way of doing this is to clone the local tree with 'git-clone -l -s',
find the latest common commit shared with the remote tree to be fetched,
revert to that with 'git-reset --head $last' and then pulling from the
remote. 

Is that _really_ the best way of doing it though? It would be better if
we just had a '--local-alternates=/foo' option to git-clone when cloning
a remote repository.

-- 
dwmw2

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

* Re: Clone with local alternates?
  2006-04-18 23:48 Clone with local alternates? David Woodhouse
@ 2006-04-18 23:56 ` Shawn Pearce
  2006-04-18 23:59   ` David Woodhouse
                     ` (2 more replies)
  2006-04-19  9:36 ` Eric W. Biederman
  1 sibling, 3 replies; 7+ messages in thread
From: Shawn Pearce @ 2006-04-18 23:56 UTC (permalink / raw)
  To: David Woodhouse; +Cc: git

David Woodhouse <dwmw2@infradead.org> wrote:
> Often I want to clone a remote repository but would like to use an
> existing local source tree as 'alternates'. 
> 
> One way of doing this is to clone the local tree with 'git-clone -l -s',
> find the latest common commit shared with the remote tree to be fetched,
> revert to that with 'git-reset --head $last' and then pulling from the
> remote. 
> 
> Is that _really_ the best way of doing it though? It would be better if
> we just had a '--local-alternates=/foo' option to git-clone when cloning
> a remote repository.

  git clone --reference=/foo git://remote/foo

would do the trick.  This is new in 1.3.0.  I just noticed its also
not documented in 1.3.0.  :-)

-- 
Shawn.

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

* Re: Clone with local alternates?
  2006-04-18 23:56 ` Shawn Pearce
@ 2006-04-18 23:59   ` David Woodhouse
  2006-04-19  0:19   ` [PATCH] Document git-clone --reference Shawn Pearce
  2006-04-19  8:39   ` Clone with local alternates? David Woodhouse
  2 siblings, 0 replies; 7+ messages in thread
From: David Woodhouse @ 2006-04-18 23:59 UTC (permalink / raw)
  To: Shawn Pearce; +Cc: git

On Tue, 2006-04-18 at 19:56 -0400, Shawn Pearce wrote:
>   git clone --reference=/foo git://remote/foo
> 
> would do the trick.  This is new in 1.3.0.  I just noticed its also
> not documented in 1.3.0.  :-)

Aha. Thanks.

-- 
dwmw2

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

* [PATCH] Document git-clone --reference
  2006-04-18 23:56 ` Shawn Pearce
  2006-04-18 23:59   ` David Woodhouse
@ 2006-04-19  0:19   ` Shawn Pearce
  2006-04-19  8:39   ` Clone with local alternates? David Woodhouse
  2 siblings, 0 replies; 7+ messages in thread
From: Shawn Pearce @ 2006-04-19  0:19 UTC (permalink / raw)
  To: git; +Cc: dwmw2

The new --reference flag introduced to git-clone in
GIT 1.3.0 was not documented but is rather handy.
So document it.

Also corrected a minor issue with the documentation for the
-s flag; the info/alternates file name was spelled wrong.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

---

  Shawn Pearce <spearce@spearce.org> wrote:
  >   git clone --reference=/foo git://remote/foo
  > 
  > would do the trick.  This is new in 1.3.0.  I just noticed its also
  > not documented in 1.3.0.  :-)

 Documentation/git-clone.txt |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

base 6625864c8ce9868ba4ab41165d97084f3f04bbed
last 66a5bd88d2a8d9d64d86733852fbaba9caa756b0
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 9ac54c2..131e445 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -10,6 +10,7 @@ SYNOPSIS
 --------
 [verse]
 'git-clone' [-l [-s]] [-q] [-n] [--bare] [-o <name>] [-u <upload-pack>]
+	  [--reference <repository>]
 	  <repository> [<directory>]
 
 DESCRIPTION
@@ -46,10 +47,18 @@ OPTIONS
 -s::
 	When the repository to clone is on the local machine,
 	instead of using hard links, automatically setup
-	.git/objects/info/alternatives to share the objects
+	.git/objects/info/alternates to share the objects
 	with the source repository.  The resulting repository
 	starts out without any object of its own.
 
+--reference <repository>::
+	If the reference repository is on the local machine
+	automatically setup .git/objects/info/alternates to
+	obtain objects from the reference repository.  Using
+	an already existing repository as an alternate will
+	require less objects to be copied from the repository
+	being cloned, reducing network and local storage costs.
+
 --quiet::
 -q::
 	Operate quietly.  This flag is passed to "rsync" and
@@ -112,6 +121,16 @@ Make a local clone that borrows from the
 ------------
 
 
+Clone from upstream while borrowing from an existing local directory::
++
+------------
+$ git clone --reference my2.6 \
+	git://git.kernel.org/pub/scm/.../linux-2.7 \
+	my2.7
+$ cd my2.7
+------------
+
+
 Create a bare repository to publish your changes to the public::
 +
 ------------
-- 
1.3.0.rc4.g8060

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

* Re: Clone with local alternates?
  2006-04-18 23:56 ` Shawn Pearce
  2006-04-18 23:59   ` David Woodhouse
  2006-04-19  0:19   ` [PATCH] Document git-clone --reference Shawn Pearce
@ 2006-04-19  8:39   ` David Woodhouse
  2006-04-19  9:42     ` Eric W. Biederman
  2 siblings, 1 reply; 7+ messages in thread
From: David Woodhouse @ 2006-04-19  8:39 UTC (permalink / raw)
  To: Shawn Pearce; +Cc: git

On Tue, 2006-04-18 at 19:56 -0400, Shawn Pearce wrote:
>   git clone --reference=/foo git://remote/foo

That's nice. What would be even _nicer_ is if I could enforce its usage
on the server. I keep a clean copy of Linus' kernel tree on the machine
with the git dæmon, so I'd like to make it refuse to send any objects
which are in that tree and which people should already have fetched from
elsewhere anyway.

-- 
dwmw2

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

* Re: Clone with local alternates?
  2006-04-18 23:48 Clone with local alternates? David Woodhouse
  2006-04-18 23:56 ` Shawn Pearce
@ 2006-04-19  9:36 ` Eric W. Biederman
  1 sibling, 0 replies; 7+ messages in thread
From: Eric W. Biederman @ 2006-04-19  9:36 UTC (permalink / raw)
  To: David Woodhouse; +Cc: git

David Woodhouse <dwmw2@infradead.org> writes:

> Often I want to clone a remote repository but would like to use an
> existing local source tree as 'alternates'. 
>
> One way of doing this is to clone the local tree with 'git-clone -l -s',
> find the latest common commit shared with the remote tree to be fetched,
> revert to that with 'git-reset --head $last' and then pulling from the
> remote. 

Simpler than the git-reset you can simply do 
git-fetch remote branch:branch and git will find common ancestor
for you and create a new branch that mirrors the old one.

I mention this because it can be interesting to have branches
from several remote repositories all in one local repository.

Eric

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

* Re: Clone with local alternates?
  2006-04-19  8:39   ` Clone with local alternates? David Woodhouse
@ 2006-04-19  9:42     ` Eric W. Biederman
  0 siblings, 0 replies; 7+ messages in thread
From: Eric W. Biederman @ 2006-04-19  9:42 UTC (permalink / raw)
  To: David Woodhouse; +Cc: Shawn Pearce, git

David Woodhouse <dwmw2@infradead.org> writes:

> On Tue, 2006-04-18 at 19:56 -0400, Shawn Pearce wrote:
>>   git clone --reference=/foo git://remote/foo
>
> That's nice. What would be even _nicer_ is if I could enforce its usage
> on the server. I keep a clean copy of Linus' kernel tree on the machine
> with the git dæmon, so I'd like to make it refuse to send any objects
> which are in that tree and which people should already have fetched from
> elsewhere anyway.

Given how large the linux kernel archive is I can see the desire.

At git startup there is an exchange of common commits. to
find the best place to build the pack from so what you want
is possible.  I haven't a clue how you would describe it
though in the face of multiple branches, coming off the
trunk at different times.

Eric

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

end of thread, other threads:[~2006-04-19  9:44 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-18 23:48 Clone with local alternates? David Woodhouse
2006-04-18 23:56 ` Shawn Pearce
2006-04-18 23:59   ` David Woodhouse
2006-04-19  0:19   ` [PATCH] Document git-clone --reference Shawn Pearce
2006-04-19  8:39   ` Clone with local alternates? David Woodhouse
2006-04-19  9:42     ` Eric W. Biederman
2006-04-19  9:36 ` Eric W. Biederman

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 NNTP newsgroup(s).