@@ -11,13 +11,29 @@ public function getRepositories($path)
11
11
$ repositories = array ();
12
12
13
13
if (false !== strpos ($ path , '* ' )) {
14
- $ repositoriesTmp = glob ($ path );
14
+ $ repositoriesTmp = $ this -> globDirectory ($ path );
15
15
} else {
16
16
$ repositoriesTmp = $ this ->recurseDirectory ($ path );
17
17
}
18
18
19
19
foreach ($ repositoriesTmp as $ repo ) {
20
- $ repositories [basename ($ repo )] = new Repository ($ repo );
20
+ $ repositories [] = new Repository ($ repo );
21
+ }
22
+
23
+ return $ repositories ;
24
+ }
25
+
26
+ private function globDirectory ($ path )
27
+ {
28
+ $ repositories = array ();
29
+
30
+ foreach (glob ($ path , GLOB_ONLYDIR ) as $ dir ) {
31
+ $ isBare = file_exists ($ dir . '/HEAD ' );
32
+ $ isRepository = file_exists ($ dir . '/.git/HEAD ' );
33
+
34
+ if ($ isRepository || $ isBare ) {
35
+ $ repositories [] = $ dir ;
36
+ }
21
37
}
22
38
23
39
return $ repositories ;
@@ -28,30 +44,29 @@ public function getRepositories($path)
28
44
*/
29
45
private function recurseDirectory ($ path )
30
46
{
31
- $ dir = new \DirectoryIterator ($ path );
47
+ $ dirs = new \DirectoryIterator ($ path );
32
48
33
49
$ repositories = array ();
34
50
35
- foreach ($ dir as $ file ) {
36
- if ($ file ->isDot ()) {
51
+ foreach ($ dirs as $ dir ) {
52
+ if ($ dir ->isDot () || ! $ dir -> isDir ()) {
37
53
continue ;
38
54
}
39
55
40
- if (strrpos ($ file ->getFilename (), '. ' ) === 0 ) {
56
+ // Ignore hidden directories
57
+ if (0 === substr ($ dir ->getFilename (), 0 , 1 )) {
41
58
continue ;
42
59
}
43
60
44
- if ($ file ->isDir ()) {
45
- $ isBare = file_exists ($ file ->getPathname () . '/HEAD ' );
46
- $ isRepository = file_exists ($ file ->getPathname () . '/.git/HEAD ' );
61
+ $ isBare = file_exists ($ dir ->getPathname () . '/HEAD ' );
62
+ $ isRepository = file_exists ($ dir ->getPathname () . '/.git/HEAD ' );
47
63
48
- if ($ isRepository || $ isBare ) {
49
- $ repositories [] = $ file ->getPathname ();
50
- continue ;
51
- } else {
52
- $ repositories = array_merge ($ repositories , $ this ->recurseDirectory ($ file ->getPathname ()));
53
- }
64
+ if ($ isRepository || $ isBare ) {
65
+ $ repositories [] = $ dir ->getPathname ();
66
+ continue ;
54
67
}
68
+
69
+ $ repositories = array_merge ($ repositories , $ this ->recurseDirectory ($ dir ->getPathname ()));
55
70
}
56
71
57
72
return $ repositories ;
0 commit comments