function list_files_recursive($base_dir, $cur_dir = '') { $dir = rtrim($base_dir, '/'); if (!empty($cur_dir)) { $dir .= '/' . $cur_dir; } $fns = @scandir($dir); if ($fns === false) { return false; } $ret = array(); foreach ($fns as $fn) { if (in_array($fn, array('.', '..'))) { continue; } if (@is_dir($dir . '/' . $fn)) { $childs = list_files_recursive($base_dir, $cur_dir . '/' . $fn); if (is_array($childs)) { $ret = array_merge($ret, $childs); } } else { $ret[] = ltrim($cur_dir . '/' . $fn, '/'); } } return $ret; }
function repo_get_all_files($repo_dir) { $fns = list_files_recursive($repo_dir); if ($fns === false) { return false; } $ret = array(); foreach ($fns as $fn) { // filter the actual git repository if (strpos($fn, '.git/') !== false) { continue; } // and .gitignore files if (strpos($fn, '.gitignore') !== false) { continue; } $ret[] = $fn; } return $ret; }