* 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
[parent not found: <e5bfff550512150501v48bb65abwf44b3fc21f33bdf6@mail.gmail.com>]
* 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
[parent not found: <e5bfff550512151100k33a66db5tdb2eb1ff2da10a59@mail.gmail.com>]
* 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
[parent not found: <e5bfff550512152258t3f7b2eb1i1c709572b18fe3f7@mail.gmail.com>]
[parent not found: <1134757942.2248.11.camel@dv>]
[parent not found: <e5bfff550512161247v4c187cc0gedae8234d454c3b6@mail.gmail.com>]
* 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
[parent not found: <e5bfff550512170044v59f96262ica6511e981889ea9@mail.gmail.com>]
* 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).