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