'%s', 'time' => '%at', 'sha' => '%H', 'email' => '%ae', ]; $prettyPattern = Helper::getDelimiter() . Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); return implode(self::DELIMITER, ['show', $tag, "--pretty=\"$prettyPattern\""]); } static function createBranch(string $branch, string $sourceBranch) { return implode(self::DELIMITER, ['branch', $branch, $sourceBranch]); } static function createTag(string $tag, string $message = NULL, $commitSHA = NULL) { $command = ['tag']; if ($message) { array_push($command, '-a', $tag); array_push($command, '-m', $message); } else { array_push($command, $tag); } if ($commitSHA) { array_push($command, $commitSHA); } return implode(self::DELIMITER, $command); } static function getTagList() { return implode(self::DELIMITER, ['tag', '-l']); } static function deleteTag(string $tagName) { return implode(self::DELIMITER, ['tag', '-d', $tagName]); } static function getShow($option = NULL) { if ($option) { return 'show'; } else { $pattern = [ 'log' => '%s', 'time' => '%at', 'sha' => '%H', 'email' => '%ae', ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()); return implode(self::DELIMITER, ['show', "--pretty=\"$prettyPattern\""]); } } static function checkLastCommitDiffCmd() { return implode(self::DELIMITER, ['diff', 'HEAD^', 'HEAD']); } static function checkDiffCmd(string $SHA1Hash, string $SHA1Hash2) { if (!$SHA1Hash || !$SHA1Hash2) { return FALSE; } return implode(self::DELIMITER, ['diff', $SHA1Hash, $SHA1Hash2, '-B']); } static function getTotalCommitNumberCmd() { return implode(self::DELIMITER, ['rev-list', '--all', '--count']); } public static function deleteBranch(string $branch) { if (!$branch) { return FALSE; } return implode(self::DELIMITER, ['branch', '-D', $branch]); } public static function catObject(string $revisionOrObject) { if (!$revisionOrObject) { return FALSE; } return implode(self::DELIMITER, ['cat-file', '-p', $revisionOrObject]); } public static function getObjectType(string $object) { if (!$object) { return false; } return implode(self::DELIMITER, ['cat-file', '-t', $object]); } public static function getObjectSize(string $object) { if (!$object) { return false; } return implode(self::DELIMITER, ['cat-file', '-s', $object]); } public static function getLastLog(string $branch, string $filePath, string $lastSha = '') { if (!$branch) { return FALSE; } $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); $lastSha = strlen($lastSha) > 4 ? $lastSha : $branch; return implode(self::DELIMITER, ['log', '-1', '--left-only', $lastSha, "--pretty=\"$prettyPattern\"", '--', $filePath]); } public static function getCommitListFromLocal(string $sourceCommitHash, string $targetCommitHash) { $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); return implode(self::DELIMITER, ['log', '--cherry-pick', '--right-only', "$sourceCommitHash...$targetCommitHash", "--pretty=\"$prettyPattern\""]); } public static function getCommitList(string $branch, string $path = '', string $keyword = '', int $page = 0, int $perpage = 0) { if (!$branch) { return FALSE; } $command = ['log', $branch]; if ($keyword) { array_push($command, '--grep=' . $keyword); } $page = $page ? $page : 1; $perpage = $perpage ? $perpage : 20; $start = ($page - 1) * $perpage; $command = array_merge($command, ['--skip', $start, '-' . $perpage]); $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); array_push($command, "--pretty=\"$prettyPattern\""); if ($path) { array_push($command, '--', $path); } return implode(self::DELIMITER, $command); } public static function getCommitListFromRemote(string $localCommitHash, string $remoteRkey, string $remoteAccessURL, string $remoteCommitHash) { if (!$localCommitHash || !$remoteRkey || !$remoteAccessURL || !$remoteCommitHash) { return FALSE; } $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); return implode(self::DELIMITER, [$localCommitHash, $remoteRkey, $remoteAccessURL, $remoteCommitHash, $prettyPattern]); } public static function getCommitCount(string $branch) { if (!$branch) { return FALSE; } return implode(self::DELIMITER, ['rev-list', $branch, '--count']); } public static function getBranchList() { return 'branch'; } public static function getCountObjects() { return implode(self::DELIMITER, ['count-objects', '-v']); } public static function getBranchCompare(string $branch1, string $branch2) { if (!$branch1 || !$branch2) { return FALSE; } return implode(self::DELIMITER, ['rev-list', "$branch1..$branch2", '--count']); } public static function getCommitLog(string $commitSHA) { if (!$commitSHA) { return FALSE; } $pattern = [ 'log' => '%s', 'time' => '%at', 'sha' => '%H', 'email' => '%ae', 'parent' => '%P', ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()); return implode(self::DELIMITER, ['log', $commitSHA, '-1', "--pretty=\"$prettyPattern\""]); } public static function getDiffCount(string $commitSHA1, string $commitSHA2) { if (!$commitSHA2) { return FALSE; } if (!$commitSHA1 || preg_match('/^0+$/i', $commitSHA1)) { return implode(self::DELIMITER, ['show', $commitSHA2, '--name-only', '--pretty=%H']); } return implode(self::DELIMITER, ['diff', "$commitSHA1...$commitSHA2", '--name-only']); } public static function getDiffDetail(string $commitSHA1, string $commitSHA2) { if (!$commitSHA2) { return FALSE; } if (!$commitSHA1 || preg_match('/^0+$/i', $commitSHA1)) { return implode(self::DELIMITER, ['show', $commitSHA2]); } return implode(self::DELIMITER, ['diff', "$commitSHA1...$commitSHA2"]); } public static function getBranchListBySHA(string $commitSHA1) { if (!$commitSHA1) { return FALSE; } return implode(self::DELIMITER, ['branch', '-a', '--contains', $commitSHA1]); } public static function getTagListBySHA(string $commitSHA1) { if (!$commitSHA1) { return FALSE; } return implode(self::DELIMITER, ['tag', '--contains', $commitSHA1]); } public static function getChangedFileList(string $commitSHA1) { if (!$commitSHA1) { return FALSE; } return implode(self::DELIMITER, ['log', '--stat', $commitSHA1, '-1', '--name-only']); } public static function getRevisionRange(string $startHash, string $endHash, string $branch) { if (!$startHash || !$endHash || !$branch) { return FALSE; } $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); return implode(self::DELIMITER, ['log', $startHash . '..' . $endHash, $branch, "--pretty=\"$prettyPattern\""]); } public static function getCommitInfoByHash(string $hash) { if (!$hash) { return FALSE; } $pattern = [ 'sha' => '%H', 'log' => '%s', 'body' => '%b', 'email' => '%ae', 'time' => '%at' ]; $prettyPattern = Helper::toJSON($pattern, Helper::getDelimiter()) . Helper::getDelimiter(); return implode(self::DELIMITER, ['log', "--pretty=\"$prettyPattern\"", '-1', $hash]); } }