This repository has been archived by the owner on Apr 25, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
283 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<IfModule mod_rewrite.c> | ||
Options -MultiViews +SymLinksIfOwnerMatch | ||
|
||
RewriteEngine On | ||
RewriteBase /gitlist/ | ||
|
||
RewriteCond %{REQUEST_FILENAME} !-f | ||
RewriteRule ^(.*)$ index.php/$1 [L,NC] | ||
</IfModule> | ||
<Files config.ini> | ||
order allow,deny | ||
deny from all | ||
</Files> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
* | ||
!.gitignore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
[git] | ||
client = '~NEARD_LIN_PATH~/tools/git/git2.8.0/bin/git.exe' | ||
repositories[] = '' | ||
|
||
[app] | ||
debug = false | ||
cache = false | ||
|
||
[filetypes] | ||
; extension = type | ||
; dist = xml | ||
|
||
[binary_filetypes] | ||
; extension = true | ||
; svh = false | ||
; map = true | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
gitlistVersion = "0.6.0" | ||
gitlistConf = "config.ini" | ||
|
||
bundleRelease = "@RELEASE_VERSION@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,245 @@ | ||
<?php | ||
|
||
namespace GitList\Git; | ||
|
||
use Gitter\Client as BaseClient; | ||
|
||
class Client extends BaseClient | ||
{ | ||
protected $defaultBranch; | ||
protected $hidden; | ||
protected $projects; | ||
|
||
public function __construct($options = null) | ||
{ | ||
parent::__construct($options['path']); | ||
$this->setDefaultBranch($options['default_branch']); | ||
$this->setHidden($options['hidden']); | ||
$this->setProjects($options['projects']); | ||
} | ||
|
||
public function getRepositoryFromName($paths, $repo) | ||
{ | ||
$repositories = $this->getRepositories($paths); | ||
$path = $repositories[$repo]['path']; | ||
|
||
return $this->getRepository($path); | ||
} | ||
|
||
/** | ||
* Searches for valid repositories on the specified path. | ||
* | ||
* @param array $paths Array of paths where repositories will be searched | ||
* | ||
* @return array Found repositories, containing their name, path and description sorted | ||
* by repository name | ||
*/ | ||
public function getRepositories($paths) | ||
{ | ||
$allRepositories = []; | ||
|
||
foreach ($paths as $path) { | ||
/*$repositories = $this->recurseDirectory($path); | ||
if (empty($repositories)) { | ||
throw new \RuntimeException('There are no GIT repositories in ' . $path); | ||
} | ||
// Use "+" to preserve keys, only a problem with numeric repos. | ||
$allRepositories = $allRepositories + $repositories;*/ | ||
|
||
// START Neard edit | ||
$name = str_replace(':', '', str_replace('/', '#', $path)); | ||
$repositories[$name] = array( | ||
'name' => $name, | ||
'path' => $path, | ||
'description' => file_exists($path . '/.git/description') ? file_get_contents($path . '/.git/description') : '' | ||
); | ||
|
||
$allRepositories = array_merge($allRepositories, $repositories); | ||
// END Neard edit | ||
} | ||
|
||
$allRepositories = array_unique($allRepositories, SORT_REGULAR); | ||
uksort($allRepositories, function ($k1, $k2) { | ||
return strtolower($k2) < strtolower($k1); | ||
}); | ||
|
||
return $allRepositories; | ||
} | ||
|
||
/** | ||
* Return name of default branch as a string. | ||
*/ | ||
public function getDefaultBranch() | ||
{ | ||
return $this->defaultBranch; | ||
} | ||
|
||
/** | ||
* Overloads the parent::createRepository method for the correct Repository class instance. | ||
* | ||
* {@inheritdoc} | ||
*/ | ||
public function createRepository($path, $bare = null) | ||
{ | ||
if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { | ||
throw new \RuntimeException('A GIT repository already exists at ' . $path); | ||
} | ||
|
||
$repository = new Repository($path, $this); | ||
|
||
return $repository->create($bare); | ||
} | ||
|
||
/** | ||
* Overloads the parent::getRepository method for the correct Repository class instance. | ||
* | ||
* {@inheritdoc} | ||
*/ | ||
public function getRepository($path) | ||
{ | ||
if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { | ||
throw new \RuntimeException('There is no GIT repository at ' . $path); | ||
} | ||
|
||
return new Repository($path, $this); | ||
} | ||
|
||
/** | ||
* Set default branch as a string. | ||
* | ||
* @param string $branch name of branch to use when repo's HEAD is detached | ||
* | ||
* @return object | ||
*/ | ||
protected function setDefaultBranch($branch) | ||
{ | ||
$this->defaultBranch = $branch; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Get hidden repository list. | ||
* | ||
* @return array List of repositories to hide | ||
*/ | ||
protected function getHidden() | ||
{ | ||
return $this->hidden; | ||
} | ||
|
||
/** | ||
* Set the hidden repository list. | ||
* | ||
* @param array $hidden List of repositories to hide | ||
* | ||
* @return object | ||
*/ | ||
protected function setHidden($hidden) | ||
{ | ||
$this->hidden = $hidden; | ||
|
||
return $this; | ||
} | ||
|
||
/** | ||
* Get project list. | ||
* | ||
* @return array List of repositories to show | ||
*/ | ||
protected function getProjects() | ||
{ | ||
return $this->projects; | ||
} | ||
|
||
/** | ||
* Set the shown repository list. | ||
* | ||
* @param array $projects List of repositories to show | ||
*/ | ||
protected function setProjects($projects) | ||
{ | ||
$this->projects = $projects; | ||
|
||
return $this; | ||
} | ||
|
||
private function recurseDirectory($path, $topLevel = true) | ||
{ | ||
$dir = new \DirectoryIterator($path); | ||
|
||
$repositories = []; | ||
|
||
foreach ($dir as $file) { | ||
if ($file->isDot()) { | ||
continue; | ||
} | ||
|
||
if (strrpos($file->getFilename(), '.') === 0) { | ||
continue; | ||
} | ||
|
||
if (!$file->isReadable()) { | ||
continue; | ||
} | ||
|
||
if ($file->isDir()) { | ||
$isBare = file_exists($file->getPathname() . '/HEAD'); | ||
$isRepository = file_exists($file->getPathname() . '/.git/HEAD'); | ||
|
||
if ($isRepository || $isBare) { | ||
$hidden = function ($path, $hide) { | ||
$return = false; | ||
|
||
array_walk($hide, function ($value, $key) use ($path, &$return) { | ||
if (($path === $value) || (1 === preg_match($value, $path))) { | ||
$return = true; | ||
} | ||
}); | ||
|
||
return $return; | ||
}; | ||
|
||
if ($hidden($file->getPathname(), $this->getHidden())) { | ||
continue; | ||
} | ||
|
||
if ($isBare) { | ||
$description = $file->getPathname() . '/description'; | ||
} else { | ||
$description = $file->getPathname() . '/.git/description'; | ||
} | ||
|
||
if (file_exists($description)) { | ||
$description = file_get_contents($description); | ||
} else { | ||
$description = null; | ||
} | ||
|
||
if (!$topLevel) { | ||
$repoName = $file->getPathInfo()->getFilename() . '/' . $file->getFilename(); | ||
} else { | ||
$repoName = $file->getFilename(); | ||
} | ||
|
||
if (is_array($this->getProjects()) && !in_array($repoName, $this->getProjects())) { | ||
continue; | ||
} | ||
|
||
$repositories[$repoName] = [ | ||
'name' => $repoName, | ||
'path' => $file->getPathname(), | ||
'description' => $description, | ||
]; | ||
|
||
continue; | ||
} | ||
$repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), false)); | ||
} | ||
} | ||
|
||
return $repositories; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
gitlistVersion = "2.0.0" | ||
gitlistVersion = "1.1.1" | ||
gitlistConf = "config.ini" | ||
|
||
bundleRelease = "@RELEASE_VERSION@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
bundle.name = gitlist | ||
bundle.release = 2022.07.11 | ||
bundle.release = 1.1.1 | ||
bundle.type = apps | ||
bundle.format = 7z | ||
|
||
|