mirror of https://github.com/MISP/MISP
chg: [internal] Simplify getting current repo commit
parent
70f9f10e8b
commit
5fd3c17cad
|
@ -40,20 +40,33 @@ class GitTool
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns current SHA1 hash of current commit
|
||||
* `git rev-parse HEAD`
|
||||
* @param string $repoPath
|
||||
* @return string
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function currentCommit()
|
||||
public static function currentCommit($repoPath)
|
||||
{
|
||||
$head = rtrim(FileAccessTool::readFromFile(ROOT . '/.git/HEAD'));
|
||||
if (is_file($repoPath . '/.git')) {
|
||||
$fileContent = FileAccessTool::readFromFile($repoPath . '/.git');
|
||||
if (substr($fileContent, 0, 8) === 'gitdir: ') {
|
||||
$gitDir = $repoPath . '/' . trim(substr($fileContent, 8)) . '/';
|
||||
} else {
|
||||
throw new Exception("$repoPath/.git is file, but contains non expected content $fileContent");
|
||||
}
|
||||
} else {
|
||||
$gitDir = $repoPath . '/.git/';
|
||||
}
|
||||
|
||||
$head = rtrim(FileAccessTool::readFromFile($gitDir . 'HEAD'));
|
||||
if (substr($head, 0, 5) === 'ref: ') {
|
||||
$path = substr($head, 5);
|
||||
return rtrim(FileAccessTool::readFromFile(ROOT . '/.git/' . $path));
|
||||
return rtrim(FileAccessTool::readFromFile($gitDir . $path));
|
||||
} else if (strlen($head) === 40) {
|
||||
return $head;
|
||||
} else {
|
||||
throw new Exception("Invalid head $head");
|
||||
throw new Exception("Invalid head '$head' in $gitDir/HEAD");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,22 +107,6 @@ class GitTool
|
|||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $submodule Path to Git repo
|
||||
* @return string|null
|
||||
* @throws Exception
|
||||
*/
|
||||
public static function submoduleCurrentCommit($submodule)
|
||||
{
|
||||
try {
|
||||
$commit = ProcessTool::execute(['git', 'rev-parse', 'HEAD'], $submodule);
|
||||
} catch (ProcessException $e) {
|
||||
CakeLog::notice("Could not get Git commit for $submodule: {$e->getMessage()}");
|
||||
return null;
|
||||
}
|
||||
return rtrim($commit);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $commit
|
||||
* @param string|null $submodule Path to Git repo
|
||||
|
|
|
@ -3289,7 +3289,7 @@ class AppModel extends Model
|
|||
if ($commit === null) {
|
||||
App::uses('GitTool', 'Tools');
|
||||
try {
|
||||
$commit = GitTool::currentCommit();
|
||||
$commit = GitTool::currentCommit(ROOT);
|
||||
} catch (Exception $e) {
|
||||
$this->logException('Could not get current git commit', $e, LOG_NOTICE);
|
||||
$commit = false;
|
||||
|
|
|
@ -4280,7 +4280,7 @@ class Server extends AppModel
|
|||
$submoduleName = (strpos($submoduleName, '/') >= 0 ? explode('/', $submoduleName) : $submoduleName);
|
||||
$submoduleName = end($submoduleName);
|
||||
|
||||
$submoduleCurrentCommitId = GitTool::submoduleCurrentCommit($path);
|
||||
$submoduleCurrentCommitId = GitTool::currentCommit($path);
|
||||
|
||||
$currentTimestamp = GitTool::commitTimestamp($submoduleCurrentCommitId, $path);
|
||||
if ($submoduleCurrentCommitId !== $superprojectSubmoduleCommitId) {
|
||||
|
|
Loading…
Reference in New Issue