Skip to content

Commit 5594c95

Browse files
committed
gitk: Addressing error running on MacOS with large repos.
The change is stemmed from a problem on the MacOS where, if --all is passed to gitk it should show all the refs/commits graphically. However, on really large git repos, in my instance a git repo with over 52,000 commits, gitk will report an error, "Error executing git log: couldn't execute "git": argument list too long". Mac OS has a limit of which my large repo exceeds. This works fine on Linux, however, not sure about Windows. Looking at gitk script, the decision to have all commit-ids on the command line comes from return value of parseviewargs() function which uses the value of "allknown" to return. If it is '1' then --all is translated to a string of all the commit-ids in the repo, otherwise --all is passed as-is to `git log` cli, which according to git-log man page it is the same as listing all the commit-ids. So, this change is to prevent --all option from being expanded into list of all refs on the command line. Signed-off-by: Arash Bannazadeh-Mahani <[email protected]>
1 parent bc12974 commit 5594c95

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

gitk-git/gitk

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,13 @@ proc parseviewargs {n arglist} {
250250
set nextisval 1
251251
lappend glflags $arg
252252
}
253-
"--not" - "--all" {
253+
"--not" {
254254
lappend revargs $arg
255+
}
256+
"--all" {
257+
# we recognize this argument;
258+
# no expansion needed, use it with 'git log' as-is
259+
set allknown 0
255260
}
256261
"--merge" {
257262
set vmergeonly($n) 1

0 commit comments

Comments
 (0)