On Oct 16, 2007, at 9:00 PM, Shawn O. Pearce wrote:
Luke Lu <git@xxxxxxxxxx> wrote:
Resubmitting patch after passing gitweb regression tests.
...
@@ -1519,6 +1524,11 @@ sub git_get_projects_list {
return if (m!^[/.]$!);
# only directories can be git repositories
return unless (-d $_);
+ # don't traverse too deep (Find is super slow on os x)
+ if (($File::Find::name =~ tr!/!!) - $pfxdepth >
$project_maxdepth) {
+ $File::Find::prune = 1;
+ return;
+ }
Thanks. I'm squashing this into your patch. I'm not sure what
the impact is of altering $File::Find::name in the middle of the
find algorithm and I'm not sure we want to figure that out later.
We found out the hard way today that altering a non-local'd $_
in the function is what was causing the breakage.
This is generally a good advice. But tr!/!! doesn't alter the string
at all (OK, replicates it), unless you use the /d option. tr/stuff//
is an idiom to count stuff. Check perldoc perlop for details. I don't
think it's necessary.
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 48e21da..9f47c3f 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1525,7 +1525,8 @@ sub git_get_projects_list {
# only directories can be git repositories
return unless (-d $_);
# don't traverse too deep (Find is super slow on os x)
- if (($File::Find::name =~ tr!/!!) - $pfxdepth >
$project_maxdepth) {
+ local $_ = $File::Find::name;
+ if (tr!/!! - $pfxdepth > $project_maxdepth) {
$File::Find::prune = 1;
return;
}
--
Shawn.
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html