From: Johannes Sixt <j.sixt@viscovery.net>
To: Pat Thoyts <patthoyts@users.sourceforge.net>
Cc: "Murphy, John" <john.murphy@bankofamerica.com>, git@vger.kernel.org
Subject: Re: [PATCH] Re: Gitk --all error when there are more than 797 refs in a repository
Date: Fri, 18 Sep 2009 17:16:40 +0200 [thread overview]
Message-ID: <4AB3A458.5070100@viscovery.net> (raw)
In-Reply-To: <878wgcbb52.fsf@users.sourceforge.net>
Pat Thoyts schrieb:
> "Murphy, John" <john.murphy@bankofamerica.com> writes:
>> There is a error when running gitk --all when there are more than 797 refs in a repository.
>> We get an error message:
>>
>> Error reading commits: fatal ambiguous argument '3': unknown revision or path not in the working tree.
>> Use '--' to separate paths from revisions.
>>
>> I believe issue is with this line of the code in proc parseviewrevs:
>>
>> if {[catch {set ids [eval exec git rev-parse "$revs"]} err]}
>>
>> When there are more than 797 refs the output of git rev-parse is too large to fit into the string, ids.
>>
>> 797 refs = 32,677 bytes.
>> 798 refs = 32,718 bytes my guess is a little too close for comfort to 32,768 bytes.
>>
>> As I was deleting refs locally the error message would change from '3' to any char [A-Z,0-9].
I cannot reproduce the error. I have a repository with 100 commits in a
linear history and 5000 refs (50 refs per commit). They are named
refs/heads/branch-XXXX. I don't see any problems with 'gitk --all'.
> +proc git-rev-parse {args} {
> + set ids {}
> + set pipe [open |[linsert $args 0 git rev-parse] r]
> + while {[gets $pipe line] != -1} {
> + lappend ids $line
> + }
> + close $pipe
> + return $ids
> +}
> +
> proc parseviewrevs {view revs} {
> global vposids vnegids
>
> if {$revs eq {}} {
> set revs HEAD
> }
> - if {[catch {set ids [eval exec git rev-parse $revs]} err]} {
> + if {[catch {set ids [git-rev-parse $revs]} err]} {
Sorry, but you are changing the wrong end of git rev-parse. The limit is
on the command line, but if you run 'gitk --all', then $revs is simply
"--all" - no limit is exceeded. You changed the output of rev-parse, but
there is no limit on how much Tcl can eat of rev-parse's output.
The error must be in some other git invocation.
-- Hannes
next prev parent reply other threads:[~2009-09-18 15:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-17 19:07 Gitk --all error when there are more than 797 refs in a repository Murphy, John
2009-09-18 14:06 ` [PATCH] " Pat Thoyts
2009-09-18 15:16 ` Johannes Sixt [this message]
2009-09-19 0:07 ` Paul Mackerras
2009-09-21 14:02 ` Murphy, John
2009-09-21 14:09 ` Johannes Sixt
2009-09-21 14:11 ` Murphy, John
2009-09-21 15:59 ` Johannes Sixt
2009-09-21 23:56 ` Pat Thoyts
2009-09-22 1:23 ` Murphy, John
2009-09-22 1:39 ` Junio C Hamano
2009-09-22 1:47 ` Junio C Hamano
2009-09-22 22:48 ` Pat Thoyts
2009-11-03 10:04 ` Alex Riesen
2009-11-03 10:41 ` Paul Mackerras
2009-09-22 23:30 ` Paul Mackerras
2009-09-23 0:02 ` Junio C Hamano
2009-11-03 9:40 ` Paul Mackerras
2009-11-03 14:59 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AB3A458.5070100@viscovery.net \
--to=j.sixt@viscovery.net \
--cc=git@vger.kernel.org \
--cc=john.murphy@bankofamerica.com \
--cc=patthoyts@users.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.