git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt
@ 2009-01-09  6:24 Tim Shepard
  2009-01-09  8:58 ` Junio C Hamano
  2009-01-09 14:08 ` Miklos Vajna
  0 siblings, 2 replies; 5+ messages in thread
From: Tim Shepard @ 2009-01-09  6:24 UTC (permalink / raw)
  To: git



I have git 1.5.6.5 installed from the Debian/lenny package.

Poking around in http://git.kernel.org/ looking for a git repository
that might have the latest -rt development happening, I found

  http://git.kernel.org/?p=linux/kernel/git/rostedt/linux-2.6-rt.git

which looked promising.

But when I tried cloning it using:

    git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-rt.git linux-2.6-rt

it pulled several hundred megabytes through my (rather slow) DSL line
and then printed out

  error: Trying to write ref refs/tags/v2.6.11 with nonexistant object 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c
  fatal: Cannot update the ref 'refs/tags/v2.6.11'.

and then removed everything it had just pulled.


Looking at http://git.kernel.org/?p=linux/kernel/git/rostedt/linux-2.6-rt.git;a=tags
I see that apparently v2.6.11 and v.2.6.11-tree both point at a tree
object and not a commit.

Is this a bug in git?    (Even if there is something wrong with the
git repository I was trying to clone, the fact that it removed all the
work that took a long time to pull is annoying.)

Is this problem already fixed in some newer version of git?


			-Tim Shepard
			 shep@alum.mit.edu

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

* Re: 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt
  2009-01-09  6:24 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt Tim Shepard
@ 2009-01-09  8:58 ` Junio C Hamano
  2009-01-09 21:08   ` Tim Shepard
  2009-01-14 23:10   ` Johannes Schindelin
  2009-01-09 14:08 ` Miklos Vajna
  1 sibling, 2 replies; 5+ messages in thread
From: Junio C Hamano @ 2009-01-09  8:58 UTC (permalink / raw)
  To: Tim Shepard; +Cc: git, Johannes Schindelin, Daniel Barkalow

Tim Shepard <shep@alum.mit.edu> writes:

> I have git 1.5.6.5 installed from the Debian/lenny package.
>
> Poking around in http://git.kernel.org/ looking for a git repository
> that might have the latest -rt development happening, I found
>
>   http://git.kernel.org/?p=linux/kernel/git/rostedt/linux-2.6-rt.git
>
> which looked promising.
>
> But when I tried cloning it using:
>
>     git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-rt.git linux-2.6-rt
>
> it pulled several hundred megabytes through my (rather slow) DSL line
> and then printed out
>
>   error: Trying to write ref refs/tags/v2.6.11 with nonexistant object 5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c
>   fatal: Cannot update the ref 'refs/tags/v2.6.11'.
>
> and then removed everything it had just pulled.
>
> Looking at http://git.kernel.org/?p=linux/kernel/git/rostedt/linux-2.6-rt.git;a=tags
> I see that apparently v2.6.11 and v.2.6.11-tree both point at a tree
> object and not a commit.
>
> Is this a bug in git?

It is not a problem for the tag pointing to a tree, but linux-2.6-rt.git
tree uses (like everybody else) objects/alternates to borrow objects from
the repository of Linus.

I think we lost the alternate object store support when git-fetch was
rewritten from the original shell script (that did support fetching from
such a repository over rsync:// transport) to a reimplementation in C,
with commit b888d61 (Make fetch a builtin, 2007-09-10).  

Later, cd547b4 (fetch/push: readd rsync support, 2007-10-01) attempted to
resurrect some rsync support (b888d61 lost rsync support completely for
git-fetch), but introduced these lines in transport.c:

	/* NEEDSWORK: handle one level of alternates */
	result = run_command(&rsync);

These have not been touched ever since, and then finally commit 8434c2f
(Build in clone, 2008-04-27) killed support of cloning from a repository
that uses alternates for rsync transport for git-clone (before that, the
shell script version had a special case to still allow such operation over
rsync).

It appears practically nobody uses rsync:// transport anymore these days;
you are unfortunately the first one who noticed it.

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

* Re: 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt
  2009-01-09  6:24 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt Tim Shepard
  2009-01-09  8:58 ` Junio C Hamano
@ 2009-01-09 14:08 ` Miklos Vajna
  1 sibling, 0 replies; 5+ messages in thread
From: Miklos Vajna @ 2009-01-09 14:08 UTC (permalink / raw)
  To: Tim Shepard; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 596 bytes --]

On Fri, Jan 09, 2009 at 01:24:19AM -0500, Tim Shepard <shep@alum.mit.edu> wrote:
> 
> 
> I have git 1.5.6.5 installed from the Debian/lenny package.
> 
> Poking around in http://git.kernel.org/ looking for a git repository
> that might have the latest -rt development happening, I found
> 
>   http://git.kernel.org/?p=linux/kernel/git/rostedt/linux-2.6-rt.git
> 
> which looked promising.
> 
> But when I tried cloning it using:
> 
>     git clone rsync://rsync.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-rt.git linux-2.6-rt

I would use the git:// link from gitweb.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt
  2009-01-09  8:58 ` Junio C Hamano
@ 2009-01-09 21:08   ` Tim Shepard
  2009-01-14 23:10   ` Johannes Schindelin
  1 sibling, 0 replies; 5+ messages in thread
From: Tim Shepard @ 2009-01-09 21:08 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Johannes Schindelin, Daniel Barkalow, Miklos Vajna



Junio,

Thank you for your good explanation.

Also thanks to Miklos Vajna who also replied to suggest using git:// transport.


(Over 3 years ago I used git glone to get a copy of torvalds/linux-2.6.git
 using rsync transport and I copied the recipe I used then.  It has been
 working for "git pull" updates, and for one from-scratch re-clone
 I did sometime last year. I had no reason to suspect it was broken.)

This morning I re-started the clone using git:// transport and it worked OK.


			-Tim Shepard
			 shep@alum.mit.edu

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

* Re: 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt
  2009-01-09  8:58 ` Junio C Hamano
  2009-01-09 21:08   ` Tim Shepard
@ 2009-01-14 23:10   ` Johannes Schindelin
  1 sibling, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2009-01-14 23:10 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Tim Shepard, git, Daniel Barkalow

Hi,

On Fri, 9 Jan 2009, Junio C Hamano wrote:

> I think we lost the alternate object store support when git-fetch was 
> rewritten from the original shell script (that did support fetching from 
> such a repository over rsync:// transport) to a reimplementation in C, 
> with commit b888d61 (Make fetch a builtin, 2007-09-10).
> 
> Later, cd547b4 (fetch/push: readd rsync support, 2007-10-01) attempted to
> resurrect some rsync support (b888d61 lost rsync support completely for
> git-fetch), but introduced these lines in transport.c:
> 
> 	/* NEEDSWORK: handle one level of alternates */
> 	result = run_command(&rsync);

Indeed... And I know who's responsible for those lines.

However, I am swamped with work these days, and my Git time budget was 
_way_ overspent what with the recent patches.

So whoever would like to give it a go, go wild.

This is actually a very fine opportunity for people to get involved who 
always wanted to; it is a relatively low-hanging fruit.

It should just be a matter of getting objects/info/alternates (one can 
easily reuse a large part of the args[] array filled before the quoted 
code) into a temporary file.

If that does not succeed, return 0, otherwise fetch those objects, too 
(again reusing most of the args[] array).

It is that easy because objects as well as packs are immutable, so we can 
just build the union of objects/packs from the remote and its alternate.

Then all which is left to do is to add a test case to t/t5510-fetch.sh, 
and you're set.

As there are already test cases for rsync:// in it, it should be as simple 
as putting an empty file into a newly created directory, create an 
alternate for the "remote" pointing to the directory, fetching, and 
testing that the empty file was copied.

That's possible because rsync:// is dumb and does not verify the files it 
copied.

Oh, and don't forget to remove the NEEDSWORK comment :-)

And now I'm curious who's up for it...

Ciao,
Dscho

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

end of thread, other threads:[~2009-01-14 23:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-09  6:24 1.5.6.5 fails to clone git.kernel.org/[...]/rostedt/linux-2.6-rt Tim Shepard
2009-01-09  8:58 ` Junio C Hamano
2009-01-09 21:08   ` Tim Shepard
2009-01-14 23:10   ` Johannes Schindelin
2009-01-09 14:08 ` Miklos Vajna

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).