@@ -11,13 +11,29 @@ public function getRepositories($path)
1111 $ repositories = array ();
1212
1313 if (false !== strpos ($ path , '* ' )) {
14- $ repositoriesTmp = glob ($ path );
14+ $ repositoriesTmp = $ this -> globDirectory ($ path );
1515 } else {
1616 $ repositoriesTmp = $ this ->recurseDirectory ($ path );
1717 }
1818
1919 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+ }
2137 }
2238
2339 return $ repositories ;
@@ -28,30 +44,29 @@ public function getRepositories($path)
2844 */
2945 private function recurseDirectory ($ path )
3046 {
31- $ dir = new \DirectoryIterator ($ path );
47+ $ dirs = new \DirectoryIterator ($ path );
3248
3349 $ repositories = array ();
3450
35- foreach ($ dir as $ file ) {
36- if ($ file ->isDot ()) {
51+ foreach ($ dirs as $ dir ) {
52+ if ($ dir ->isDot () || ! $ dir -> isDir ()) {
3753 continue ;
3854 }
3955
40- if (strrpos ($ file ->getFilename (), '. ' ) === 0 ) {
56+ // Ignore hidden directories
57+ if (0 === substr ($ dir ->getFilename (), 0 , 1 )) {
4158 continue ;
4259 }
4360
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 ' );
4763
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 ;
5467 }
68+
69+ $ repositories = array_merge ($ repositories , $ this ->recurseDirectory ($ dir ->getPathname ()));
5570 }
5671
5772 return $ repositories ;
0 commit comments