Re: qgit reports errors in the git repository

From: Pavel Roskin <proski@gnu.org>
Date: 2005-12-16 11:35:49
On Thu, 2005-12-15 at 20:00 +0100, Marco Costalba wrote:

>  Yes! this is a bug.
> Thanks  for the patch, applied.

Actually, the qgit git repository appear to be broken right now.  First
of all, requests to missing files return code 200 rather that 404.
git-http-fetch crashes trying to parse the returned page as alternates.
I've fixed it.

It's a hack, not a signed patch, please be cautious:

diff --git a/http-fetch.c b/http-fetch.c
index ad59f1c..2767676 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -520,6 +520,8 @@ static void process_alternates_response(
 				}
 			}
 			// skip 'objects' at end
+			okay &= (posn - i > 8);
+			okay &= (strncmp(data + posn - 8, "/objects", 8) == 0);
 			if (okay) {
 				target = xmalloc(serverlen + posn - i - 6);
 				strncpy(target, base, serverlen);
@@ -601,7 +603,7 @@ static void fetch_alternates(char *base)
 	else
 		got_alternates = -1;
 
-	free(data);
+//	free(data);
 	free(url);
 }
 

The free() was commented out because glibc detects double free and
prints backtrace.  It's Fedora Core 4 on x86_64, all up-to-date.  I
don't see where "data" is freed, maybe it's a bug in glibc.

Even clean fetch of qgit doesn't work:

$ cg-clone http://digilander.libero.it/mcostalba/qgit.git
defaulting to local storage area
Fetching head...
Fetching objects...
progress: 8 objects, 12858 bytes
error: File 8fef66ee82bcbbc26426d21e537478867f648e12 (http://digilander.libero.it/mcostalba/qgit.git/objects/fc/0712e55de18eda32aee44bd7863fee37fc83aa) corrupt

Getting pack list for http://digilander.libero.it/mcostalba/qgit.git/
progress: 11 objects, 76091 bytes
Getting alternates list for http://digilander.libero.it/mcostalba/qgit.git/
error: Unable to find fc0712e55de18eda32aee44bd7863fee37fc83aa under http://digilander.libero.it/mcostalba/qgit.git/

Cannot obtain needed commit fc0712e55de18eda32aee44bd7863fee37fc83aa
while processing commit 5013d718eea0b19a28faebf93eade68127f4b2b4.
Waiting for http://digilander.libero.it/mcostalba/qgit.git/objects/20/35781249a0d6c788e4aef07432c335d9694b9b
progress: 12 objects, 80655 bytes
cg-fetch: objects fetch failed
cg-clone: fetch failed

Anyway, I'm using the latest revision I could get,
9e5ccecbef2a9cb4b75887791b410c0e07d630cc.

> Unfortunatly, regarding the main question on git-cat-file I cannot
> reproduce the bug.

I've made a clean checkout of git using git-fetch:
git-clone git://www.kernel.org/pub/scm/git/git.git

Now qgit complains about 1ed91937e5cd59fdbdfa5f15f6fac132d2b21ce0.

> The problem is that on my box the object
> 23ea3e201cea0deea909569e08e950a9ec2345f7 is
> _never_ fed to git-cat-file because is filtered out ending with "^{}"
> git-ls-remote ./.git |grep 23ea3e201cea0deea909569e08e950a9ec2345f7
> 23ea3e201cea0deea909569e08e950a9ec2345f7        refs/tags/v0.99.9g^{}

Same for me.

> The corresponding tag feeded to git-cat-file is 
> bd67d7d845eb5ae929306dadd3dff41cf04ce004
> 
> I have just made a
> git pull
> git fetch --tags
> 
> from git repository.

OK, "git fetch --tags" made the difference for the old repository!  Now
it also complains about 1ed91937e5cd59fdbdfa5f15f6fac132d2b21ce0.

I was using cogito only on the old repository.  I think cogito doesn't
run "git fetch --tags" or anything equivalent.

> So, please, test with this:
> 
> --- a/src/git_startup.cpp
> +++ b/src/git_startup.cpp
> @@ -111,6 +111,7 @@ bool Git::getRefs() {
>  
>          if (itNext != rLst.constEnd() && (*itNext).right(3) == "^{}")
> {
>              signedTag = true;
> +            dbg(refSha);
>              if (run("git-cat-file tag " + refSha, &runOutput)) {
>                  QString msg(runOutput.section("\n\n", 1));
>                  if (!msg.isEmpty())
> 
> and send me the output. Mine is
[skip]

Both are attached.

-- 
Regards,
Pavel Roskin

refSha is <a0e7d36193b96f552073558acf5fcc1f10528917>
refSha is <f25a265a342aed6041ab0cc484224d9ca54b6f41>
refSha is <c5db5456ae3b0873fc659c19fafdde22313cc441>
refSha is <7ceca275d047c90c0c7d5afb13ab97efdf51bd6e>
refSha is <b3e9704ecdf48869f635f0aa99ddfb513f885aff>
refSha is <07e38db6a5a03690034d27104401f6c8ea40f1fc>
refSha is <f12e22d4c12c3d0263fa681f25c06569f643da0f>
refSha is <f8696fcd2abc446a5ccda3e414b731eff2a7e981>
refSha is <1094cf40f7029f803421c1dcc971238507c830c5>
refSha is <da30c6c39cd3b048952a15929c5440acfd71b912>
refSha is <9165ec17fde255a1770886189359897dbb541012>
refSha is <02b2acff8bafb6d73c6513469cdda0c6c18c4138>
refSha is <b041895af323bdef10cc9a718bda468ba3622bc0>
refSha is <cfc2ea6116410a545573d5fa5311d3c3b2df69d1>
refSha is <0b122201af0afb6a6a8059ff446a1e26b1d0c823>
refSha is <d186f3d21148f373a5ea5e43804f5f6707670a87>
refSha is <48055bb38d650ab39957ed07d640469176c12419>
refSha is <b79a5a49c9e412e27a336e705fb7b462367f4c16>
refSha is <ebd5d002da3f6cfbd0aa3ff5b5c4a9d9eeee630d>
refSha is <08f9f32076455ff75b59b41d7003927869082a3f>
refSha is <67b4b78858d9d9dd044f758a90a4270e48543cf1>
refSha is <c512b0344196931ad3a9a049eb3f5d3f05b09328>
refSha is <3d65a838c77f816527acf84c899419eb6825dcee>
refSha is <3521017556c5de4159da4615a39fa4d5d2c279b5>
refSha is <107e3d2b4d5b9ecd9a15a23ad1c64652b8b67ba9>
refSha is <10e5ae69eb6cdcdd149bb23e1e73131adf4ab3b7>
refSha is <b685b14cd9385e8b0f5742ebcd35ef8c8c12ec4d>
refSha is <bd67d7d845eb5ae929306dadd3dff41cf04ce004>
refSha is <5c857638d55bdd575d3f38bf3b99f1a2f99d3e46>
refSha is <4a6a394c62f33a3bf94badd6b14bc1f48647905f>
refSha is <c0f7d44ecba75d54a73ba542adde0ff80d2da03a>
refSha is <0c675e9d0b5f5d1fbb7b0169d71769993b225701>
refSha is <ca6cec9c5843d85d23b1184d584a11699d92e927>
refSha is <93ea4a9599564101be20507a3a756d38427a70ac>
refSha is <71c1a700da60da8cf99d586cc618c46fef201ed1>
refSha is <1ed91937e5cd59fdbdfa5f15f6fac132d2b21ce0>
refSha is <5f4cd4ca015dc795b9f7f4fed11b3f80a60ac175>
refSha is <112c4fd6b3fe400a075d575c0fe1a583aafe8f2c>
refSha is <dcd118f6b933d7a81739c3c4269e2bf4654e4a99>
refSha is <055e4ae3ae6eb344cbabf2a5256a49ea66040131>
refSha is <2d2846cd06fce719c35b58a8b81f7ae42f1986ca>
refSha is <781aab17fe544cbfcaba0f0ea5cacf7672717236>

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

Received on Fri Dec 16 11:36:33 2005

This archive was generated by hypermail 2.1.8 : 2005-12-16 11:36:39 EST