}
);
sort($dirs, SORT_NUMERIC);
- $n = end($dirs) + 1;
+ $n = end($dirs) + mt_rand(65536, 16777216);
chdir($this->workDir);
$dir = $this->workDir . '/' . $n . '/';
- mkdir($dir, 0777);//FIXME
+ mkdir($dir, fileperms($this->workDir) & 0777);
$r = new Repository();
$r->id = $n;
$r->workDir = $dir;
$r->gitDir = $this->gitDir . '/' . $n . '.git/';
- mkdir($r->gitDir, 0777);//FIXME
+ mkdir($r->gitDir, fileperms($this->gitDir) & 0777);
return $r;
}
$repos = array();
foreach ($some as $oneDir) {
$r = new Repository();
- $r->loadById(substr($oneDir, 0, -4));
+ try {
+ $r->loadById(substr($oneDir, 0, -4));
+ } catch (\VersionControl_Git_Exception $e) {
+ if (strpos($e->getMessage(), 'does not have any commits') !== false) {
+ //the git repo is broken as the initial commit
+ // has not been finished
+ continue;
+ }
+ throw $e;
+ }
$repos[] = $r;
}
return array($repos, count($dirs), $page);