{"thread":{"id":"8861","subject":"gitk - error in git repo on cygwin","startedAt":"2007-07-04T13:33:44Z","lastAt":"2007-07-05T01:58:33Z","messageCount":3,"participants":["Mark Levedahl","Paul Mackerras"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"46484","messageId":"468BA1B8.4010406@gmail.com","threadId":"8861","inReplyTo":null,"subject":"gitk - error in git repo on cygwin","fromName":"Mark Levedahl","fromEmail":"mlevedahl@gmail.com","sentAt":"2007-07-04T13:33:44Z","receivedAt":"2007-07-04T13:33:44Z","isPatch":false,"sender":{"key":"mdl123@verizon.net","avatar":"https://avatars.githubusercontent.com/u/5302462?v=4"},"body":"Beginning with commit \"[66e46f37de3ed3211a8ae0e8fc09c063bc3a1e08] gitk: \nStore ids in rowrangelist and idrowranges rather than row numbers\", gitk \nrun on Cygwin encounters an error looking at the git repository. The \nerror occurs during startup (just run gitk on master), with error:\n\ncan't read \"commitrow(0,8572)\": no such element in array\ncan't read \"commitrow(0,8572)\": no such element in array\n    while executing\n\"lappend linenos $commitrow($curview,$rid)\"\n    (procedure \"rowranges\" line 14)\n    invoked from within\n\"rowranges $id\"\n    (procedure \"optimize_rows\" line 21)\n    invoked from within\n\"optimize_rows $rowoptim 0 [expr {$rowoptim + $nr}]\"\n    (procedure \"layoutmore\" line 16)\n    invoked from within\n\"layoutmore $tlimit $allread\"\n    (procedure \"chewcommits\" line 9)\n    invoked from within\n\"chewcommits 0\"\n    (\"eval\" body line 1)\n    invoked from within\n\"eval $script\"\n    (procedure \"dorunq\" line 9)\n    invoked from within\n\"dorunq\"\n    (\"after\" script)\n\nThis doesn't happen on my Linux box, so this is most likely due to a tcl \nfeature introduced more recently than the tcl used in Cygwin (8.4.1). My \nguess would be that the more recent tcl is more forgiving of an \nattempted access to a non-existent element.\n\nMark\n"},{"id":"46521","messageId":"18060.12148.313090.53861@cargo.ozlabs.ibm.com","threadId":"8861","inReplyTo":"468BA1B8.4010406@gmail.com","subject":"Re: gitk - error in git repo on cygwin","fromName":"Paul Mackerras","fromEmail":"paulus@samba.org","sentAt":"2007-07-04T23:38:28Z","receivedAt":"2007-07-04T23:38:28Z","isPatch":false,"sender":{"key":"paulus@samba.org","avatar":"https://avatars.githubusercontent.com/u/1606439?v=4"},"body":"Mark Levedahl writes:\n\n> This doesn't happen on my Linux box, so this is most likely due to a tcl \n> feature introduced more recently than the tcl used in Cygwin (8.4.1). My \n> guess would be that the more recent tcl is more forgiving of an \n> attempted access to a non-existent element.\n\nI don't think anything like that has changed.  I think it is probably\ndue to the commits being batched up differently in getcommitlines.\nI'll look into it.\n\nPaul.\n"},{"id":"46524","messageId":"468C5049.9040403@gmail.com","threadId":"8861","inReplyTo":"18060.12148.313090.53861@cargo.ozlabs.ibm.com","subject":"Re: gitk - error in git repo on cygwin","fromName":"Mark Levedahl","fromEmail":"mlevedahl@gmail.com","sentAt":"2007-07-05T01:58:33Z","receivedAt":"2007-07-05T01:58:33Z","isPatch":false,"sender":{"key":"mdl123@verizon.net","avatar":"https://avatars.githubusercontent.com/u/5302462?v=4"},"body":"Paul Mackerras wrote:\n> I don't think anything like that has changed.  I think it is probably\n> due to the commits being batched up differently in getcommitlines.\n> I'll look into it.\n>\n> Paul.\n>\n>   \nIndeed, it does seem to be something order dependent. I added some debug \nprintouts, and looking in proc \"rowranges\" when the error occurs (for \ngitk f77a29e), I get:\n\n$commitrow($curview,$id) =  8571\n[lindex $rowrangelist $commitrow($curview,$id)] = \n29504118f8528f658fd0bfc02d8d78d4c01dc2cc 8571\n\nIn all previous cases, the lindex expression evalutates to two sha1's. \nSo clearly, the order of processing is different. I did check that the \ninput (from git-rev-list) is identical across the linux and Cygwin \ninvocations. Shrug.\n\nMark\n"}]}