* qgit reports errors in the git repository
@ 2005-12-13 0:24 Pavel Roskin
2005-12-13 1:06 ` Linus Torvalds
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2005-12-13 0:24 UTC (permalink / raw)
To: git, Marco Costalba
Hello!
qgit reports an error from git-cat-file when run in the git repository.
The error shown in a message box with the text:
Git says:
fatal: git-cat-file 23ea3e201cea0deea909569e08e950a9ec2345f7: bad file
I believe qgit runs "git-cat-file -t tag" on in, but it's a commit. If
I change the git-cat-file invocation in src/git_startup.cpp to use
"commit" instead of "tag", qgit complains about
0918385dbd9656cab0d1d81ba7453d49bbc16250.
Maybe qgit should check the type of the object first? Or maybe there
should another type for git-cat-file that would match both tag and
commit?
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
2005-12-13 0:24 qgit reports errors in the git repository Pavel Roskin
@ 2005-12-13 1:06 ` Linus Torvalds
2005-12-15 5:27 ` Pavel Roskin
0 siblings, 1 reply; 9+ messages in thread
From: Linus Torvalds @ 2005-12-13 1:06 UTC (permalink / raw)
To: Pavel Roskin; +Cc: git, Marco Costalba
On Mon, 12 Dec 2005, Pavel Roskin wrote:
>
> Git says:
> fatal: git-cat-file 23ea3e201cea0deea909569e08e950a9ec2345f7: bad file
>
> I believe qgit runs "git-cat-file -t tag" on in, but it's a commit. If
> I change the git-cat-file invocation in src/git_startup.cpp to use
> "commit" instead of "tag", qgit complains about
> 0918385dbd9656cab0d1d81ba7453d49bbc16250.
>
> Maybe qgit should check the type of the object first? Or maybe there
> should another type for git-cat-file that would match both tag and
> commit?
Using "git-cat-file commit <object>" already works for both real commits
and for tags that point to commits.
However, the "0918385dbd9656cab0d1d81ba7453d49bbc16250" object is a tag
that points to a blob (Junios public gpg key), so you can't use that.
Basically, qgit should do either:
- check the type of the object by hand first (using "git-cat-file -t" and
then follow any tags it finds by hand)
_or_
- just use "git-cat-file commit" and if an error occurs, just silently
ignore that ref since it doesn't understand them.
which one is the right strategy depends on usage.
Linus
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
2005-12-13 1:06 ` Linus Torvalds
@ 2005-12-15 5:27 ` Pavel Roskin
[not found] ` <e5bfff550512150501v48bb65abwf44b3fc21f33bdf6@mail.gmail.com>
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2005-12-15 5:27 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git, Marco Costalba
On Mon, 2005-12-12 at 17:06 -0800, Linus Torvalds wrote:
>
> Basically, qgit should do either:
>
> - check the type of the object by hand first (using "git-cat-file -t" and
> then follow any tags it finds by hand)
I'm a complete Qt newbie, but this patch seems to work for me.
Signed-off-by: Pavel Roskin <proski@gnu.org>
diff --git a/src/git_startup.cpp b/src/git_startup.cpp
index e08d466..1f6e9ad 100644
--- a/src/git_startup.cpp
+++ b/src/git_startup.cpp
@@ -111,6 +111,10 @@ bool Git::getRefs() {
if (itNext != rLst.constEnd() && (*itNext).right(3) == "^{}") {
signedTag = true;
+ if (!run("git-cat-file -t " + refSha, &runOutput))
+ continue; // invalid SHA1
+ if (runOutput != "tag\n")
+ continue; // not a tag
if (run("git-cat-file tag " + refSha, &runOutput)) {
QString msg(runOutput.section("\n\n", 1));
if (!msg.isEmpty())
--
Regards,
Pavel Roskin
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512150501v48bb65abwf44b3fc21f33bdf6@mail.gmail.com>
@ 2005-12-15 16:44 ` Pavel Roskin
[not found] ` <e5bfff550512151100k33a66db5tdb2eb1ff2da10a59@mail.gmail.com>
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2005-12-15 16:44 UTC (permalink / raw)
To: Marco Costalba; +Cc: Linus Torvalds, git, Marco Costalba
Hello, Marco.
On Thu, 2005-12-15 at 14:01 +0100, Marco Costalba wrote:
> Just one quickly note. The error report says:
> git-cat-file 23ea3e201cea0deea909569e08e950a9ec2345f7
It's stderr from git-cat-file. I guess git-cat-file could be improved.
> the error message should be:
> git-cat-file tag 23ea3e201cea0deea909569e08e950a9ec2345f7
>
> because it is just the print out of the command line. Or we have 2 bugs ;-)
qgit doesn't print its command line at all when running commands
synchronously.
Signed-off-by: Pavel Roskin <proski@gnu.org>
diff --git a/src/myprocess.cpp b/src/myprocess.cpp
index 5eee6e1..baae026 100644
--- a/src/myprocess.cpp
+++ b/src/myprocess.cpp
@@ -49,6 +49,7 @@ int MyProcess::runAsync(SCRef rc, QObjec
bool MyProcess::runSync(SCRef runCmd, QString* ro) {
+ this->runCmd = runCmd;
runOutput = ro;
if (runOutput != NULL)
*runOutput = "";
--
Regards,
Pavel Roskin
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512151100k33a66db5tdb2eb1ff2da10a59@mail.gmail.com>
@ 2005-12-16 0:35 ` Pavel Roskin
[not found] ` <e5bfff550512152258t3f7b2eb1i1c709572b18fe3f7@mail.gmail.com>
0 siblings, 1 reply; 9+ messages in thread
From: Pavel Roskin @ 2005-12-16 0:35 UTC (permalink / raw)
To: Marco Costalba; +Cc: Linus Torvalds, git, Marco Costalba
[-- Attachment #1: Type: text/plain, Size: 3775 bytes --]
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
[-- Attachment #2: log.new --]
[-- Type: text/plain, Size: 2268 bytes --]
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>
[-- Attachment #3: log.old --]
[-- Type: application/x-trash, Size: 1590 bytes --]
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512161247v4c187cc0gedae8234d454c3b6@mail.gmail.com>
@ 2005-12-16 21:37 ` Junio C Hamano
2005-12-17 6:55 ` Junio C Hamano
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2005-12-16 21:37 UTC (permalink / raw)
To: Marco Costalba; +Cc: Pavel Roskin, junkio, git
Marco Costalba <mcostalba@gmail.com> writes:
> Type information is already available in git-ls-remote.sh...
???? is it ???? where and how ????
The only thing you know is where things are, and optionally if
that thing is a tag object or not (by presense or lack of
corresponding "it^{}").
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512161247v4c187cc0gedae8234d454c3b6@mail.gmail.com>
2005-12-16 21:37 ` Junio C Hamano
@ 2005-12-17 6:55 ` Junio C Hamano
[not found] ` <e5bfff550512170044v59f96262ica6511e981889ea9@mail.gmail.com>
1 sibling, 1 reply; 9+ messages in thread
From: Junio C Hamano @ 2005-12-17 6:55 UTC (permalink / raw)
To: Marco Costalba; +Cc: Pavel Roskin, git
Marco Costalba <mcostalba@gmail.com> writes:
>> > So perpahs this assumption is broken and works only on my box.
>> >
>> > Can you please send me also the git-ls-remote ./.git output?
>>
>> Attached. Apparently my sort (coreutils 5.2.1) thinks that caret
>> follows period in C locale, so v0.99^{} goes after v0.99.9n^{}. Since
>> there should be a reason for sort in git-ls-remote.sh, I assume it's the
>> script that should be fixed.
>>
>> Not that I would object against qgit being more robust :-)
Somehow I am getting your message without the message your
message is a reply to, but anyway, guessing without having
access to qgit source [*1*], you seem to be running ls-remote
against the local repository, reading its output and deciding if
"xyzzy" is followed immediately by "xyzzy^{}" then it is a tag
otherwise it is a non tag object?
If you are always doing that against the local repository, then
peek-remote would be more efficient, does not sort, and
"xyzzy^{}" comes immediately after "xyzzy", which I do not see
an immediate need of changing.
[Footnote]
*1* Why is that http:// URL does not work is mystery to me which
I do not particularly interested in figuring out myself. Maybe
the site is trying to be too helpful and showing "Oh where do
you want to go" page with status 200 which confuses the h*ck out
of downloaders?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512170044v59f96262ica6511e981889ea9@mail.gmail.com>
@ 2005-12-17 9:36 ` Junio C Hamano
2005-12-20 2:11 ` Pavel Roskin
1 sibling, 0 replies; 9+ messages in thread
From: Junio C Hamano @ 2005-12-17 9:36 UTC (permalink / raw)
To: Marco Costalba; +Cc: Pavel Roskin, git
Marco Costalba <mcostalba@gmail.com> writes:
> Using
>
> git-clone http://digilander.libero.it/mcostalba/qgit.git qgit_test
>
> does not work (never did). Peraphs it's time I dig a little bit deeper.
Do you keep qgit.git/info/refs, qgit.git/objects/info/packs, and
possibly qgit.git/objects/info/alternates up-to-date under
http://digilander.libero.it/mcostalba/? Your server seems to
give friendly "no such page" instead of usual 404 not found for
nonexisting paths, which means that you would probably need to
have an empty info/alternates file there, and if you do not have
packs then empty info/packs files as well.
Also I suspect once you start packing your repository the
downloaders would have a hard time --- instead of getting "not
found" as a cue to switch to fetching packs they would get the
"friendly page" and mistakenly think the loose object stored in
your repository is corrupt.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: qgit reports errors in the git repository
[not found] ` <e5bfff550512170044v59f96262ica6511e981889ea9@mail.gmail.com>
2005-12-17 9:36 ` Junio C Hamano
@ 2005-12-20 2:11 ` Pavel Roskin
1 sibling, 0 replies; 9+ messages in thread
From: Pavel Roskin @ 2005-12-20 2:11 UTC (permalink / raw)
To: Marco Costalba; +Cc: Junio C Hamano, git
Hello, Marco!
On Sat, 2005-12-17 at 09:44 +0100, Marco Costalba wrote:
> On 12/17/05, Junio C Hamano <junkio@cox.net> wrote:
> > Marco Costalba <mcostalba@gmail.com> writes:
> Pavel, please, test the following patch. If it works I will push the change.
I could not apply your patch (it got mangled), but the git server for
qgit is working now, so I updated from it, and it looks like your patch
is already there.
I don't see any error messages from any git repository I'm using. Thank
you for the fix!
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2005-12-20 2:12 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-13 0:24 qgit reports errors in the git repository Pavel Roskin
2005-12-13 1:06 ` Linus Torvalds
2005-12-15 5:27 ` Pavel Roskin
[not found] ` <e5bfff550512150501v48bb65abwf44b3fc21f33bdf6@mail.gmail.com>
2005-12-15 16:44 ` Pavel Roskin
[not found] ` <e5bfff550512151100k33a66db5tdb2eb1ff2da10a59@mail.gmail.com>
2005-12-16 0:35 ` Pavel Roskin
[not found] ` <e5bfff550512152258t3f7b2eb1i1c709572b18fe3f7@mail.gmail.com>
[not found] ` <1134757942.2248.11.camel@dv>
[not found] ` <e5bfff550512161247v4c187cc0gedae8234d454c3b6@mail.gmail.com>
2005-12-16 21:37 ` Junio C Hamano
2005-12-17 6:55 ` Junio C Hamano
[not found] ` <e5bfff550512170044v59f96262ica6511e981889ea9@mail.gmail.com>
2005-12-17 9:36 ` Junio C Hamano
2005-12-20 2:11 ` Pavel Roskin
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).