From bded54ba44f464e9e9cc0b0fd7fad19f6e64d80f Mon Sep 17 00:00:00 2001 From: caoyanyi Date: Tue, 2 Aug 2022 13:28:29 +0800 Subject: [PATCH] * Modify git clone for Gitea and Gogs. --- lib/scm/gitea.class.php | 5 +++- lib/scm/gogs.class.php | 5 +++- module/common/lang/common.php | 1 + module/gitea/lang/de.php | 1 - module/gitea/lang/en.php | 1 - module/gitea/lang/fr.php | 1 - module/gitea/lang/vi.php | 1 - module/gitea/lang/zh-cn.php | 1 - module/gitea/lang/zh-tw.php | 1 - module/gitlab/lang/de.php | 1 - module/gitlab/lang/en.php | 1 - module/gitlab/lang/fr.php | 1 - module/gitlab/lang/vi.php | 1 - module/gitlab/lang/zh-cn.php | 1 - module/gitlab/lang/zh-tw.php | 1 - module/gogs/lang/de.php | 1 - module/gogs/lang/en.php | 1 - module/gogs/lang/fr.php | 1 - module/gogs/lang/vi.php | 1 - module/gogs/lang/zh-cn.php | 1 - module/gogs/lang/zh-tw.php | 1 - module/repo/control.php | 28 ++++++++++++++++++++--- module/repo/model.php | 4 +++- module/repo/view/ajaxsidecommits.html.php | 2 +- 24 files changed, 38 insertions(+), 25 deletions(-) diff --git a/lib/scm/gitea.class.php b/lib/scm/gitea.class.php index c61f1fa15b..a9ed40bfe0 100644 --- a/lib/scm/gitea.class.php +++ b/lib/scm/gitea.class.php @@ -28,8 +28,11 @@ class Gitea $project = $app->control->loadModel('gitea')->apiGetSingleProject($repo->serviceHost, $repo->serviceProject); if(isset($project->tokenCloneUrl)) { - $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '"'; + $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '" > "' . $app->getTmpRoot() . "log/clone.progress." . strtolower($repo->SCM) . ".{$repo->name}.log\" 2>&1 &"; + if(PHP_OS == 'WINNT') $cmd = "start /b $cmd"; exec($cmd); + + return $app->control->locate($app->control->createLink('repo', 'showSyncCommit', "repoID={$repo->id}")); } } diff --git a/lib/scm/gogs.class.php b/lib/scm/gogs.class.php index 7ea7c81f88..eb8ad0754a 100644 --- a/lib/scm/gogs.class.php +++ b/lib/scm/gogs.class.php @@ -28,8 +28,11 @@ class Gogs $project = $app->control->loadModel('gogs')->apiGetSingleProject($repo->serviceHost, $repo->serviceProject); if(isset($project->tokenCloneUrl)) { - $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '"'; + $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '" > "' . $app->getTmpRoot() . "log/clone.progress." . strtolower($repo->SCM) . ".{$repo->name}.log\" 2>&1 &"; + if(PHP_OS == 'WINNT') $cmd = "start /b $cmd"; exec($cmd); + + return $app->control->locate($app->control->createLink('repo', 'showSyncCommit', "repoID={$repo->id}")); } } diff --git a/module/common/lang/common.php b/module/common/lang/common.php index aee6ec0b58..43ad3a3234 100644 --- a/module/common/lang/common.php +++ b/module/common/lang/common.php @@ -44,6 +44,7 @@ $lang->repo = new stdclass(); $lang->jenkins = new stdclass(); $lang->gitlab = new stdclass(); $lang->gitea = new stdclass(); +$lang->gogs = new stdclass(); $lang->mr = new stdclass(); $lang->compile = new stdclass(); $lang->job = new stdclass(); diff --git a/module/gitea/lang/de.php b/module/gitea/lang/de.php index 5eb0f97d89..6ed177b6f3 100644 --- a/module/gitea/lang/de.php +++ b/module/gitea/lang/de.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = 'Gitea Browse'; $lang->gitea->search = 'Search'; diff --git a/module/gitea/lang/en.php b/module/gitea/lang/en.php index 5eb0f97d89..6ed177b6f3 100644 --- a/module/gitea/lang/en.php +++ b/module/gitea/lang/en.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = 'Gitea Browse'; $lang->gitea->search = 'Search'; diff --git a/module/gitea/lang/fr.php b/module/gitea/lang/fr.php index 5eb0f97d89..6ed177b6f3 100644 --- a/module/gitea/lang/fr.php +++ b/module/gitea/lang/fr.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = 'Gitea Browse'; $lang->gitea->search = 'Search'; diff --git a/module/gitea/lang/vi.php b/module/gitea/lang/vi.php index ad89c301d3..599193344d 100644 --- a/module/gitea/lang/vi.php +++ b/module/gitea/lang/vi.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = 'Gitea Browse'; $lang->gitea->search = 'Search'; diff --git a/module/gitea/lang/zh-cn.php b/module/gitea/lang/zh-cn.php index 13e4c187a5..b51208fc93 100644 --- a/module/gitea/lang/zh-cn.php +++ b/module/gitea/lang/zh-cn.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = '浏览Gitea'; $lang->gitea->search = '搜索'; diff --git a/module/gitea/lang/zh-tw.php b/module/gitea/lang/zh-tw.php index 7e273df350..e6af6242d3 100644 --- a/module/gitea/lang/zh-tw.php +++ b/module/gitea/lang/zh-tw.php @@ -1,5 +1,4 @@ gitea = new stdclass; $lang->gitea->common = 'Gitea'; $lang->gitea->browse = '浏览Gitea'; $lang->gitea->search = '搜索'; diff --git a/module/gitlab/lang/de.php b/module/gitlab/lang/de.php index ef5d63cc87..f3b3b2d451 100644 --- a/module/gitlab/lang/de.php +++ b/module/gitlab/lang/de.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = 'GitLab Browse'; $lang->gitlab->search = 'Search'; diff --git a/module/gitlab/lang/en.php b/module/gitlab/lang/en.php index ef5d63cc87..f3b3b2d451 100644 --- a/module/gitlab/lang/en.php +++ b/module/gitlab/lang/en.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = 'GitLab Browse'; $lang->gitlab->search = 'Search'; diff --git a/module/gitlab/lang/fr.php b/module/gitlab/lang/fr.php index ef5d63cc87..f3b3b2d451 100644 --- a/module/gitlab/lang/fr.php +++ b/module/gitlab/lang/fr.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = 'GitLab Browse'; $lang->gitlab->search = 'Search'; diff --git a/module/gitlab/lang/vi.php b/module/gitlab/lang/vi.php index ef5d63cc87..f3b3b2d451 100644 --- a/module/gitlab/lang/vi.php +++ b/module/gitlab/lang/vi.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = 'GitLab Browse'; $lang->gitlab->search = 'Search'; diff --git a/module/gitlab/lang/zh-cn.php b/module/gitlab/lang/zh-cn.php index ef8637489c..402c550fbf 100644 --- a/module/gitlab/lang/zh-cn.php +++ b/module/gitlab/lang/zh-cn.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = '浏览GitLab'; $lang->gitlab->search = '搜索'; diff --git a/module/gitlab/lang/zh-tw.php b/module/gitlab/lang/zh-tw.php index cb886aeab1..3ceb69d896 100644 --- a/module/gitlab/lang/zh-tw.php +++ b/module/gitlab/lang/zh-tw.php @@ -1,5 +1,4 @@ gitlab = new stdclass; $lang->gitlab->common = 'GitLab'; $lang->gitlab->browse = '瀏覽GitLab'; $lang->gitlab->search = '搜索'; diff --git a/module/gogs/lang/de.php b/module/gogs/lang/de.php index 68f32e3bab..4f884b7518 100644 --- a/module/gogs/lang/de.php +++ b/module/gogs/lang/de.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = 'Gogs Browse'; $lang->gogs->search = 'Search'; diff --git a/module/gogs/lang/en.php b/module/gogs/lang/en.php index 68f32e3bab..4f884b7518 100644 --- a/module/gogs/lang/en.php +++ b/module/gogs/lang/en.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = 'Gogs Browse'; $lang->gogs->search = 'Search'; diff --git a/module/gogs/lang/fr.php b/module/gogs/lang/fr.php index 68f32e3bab..4f884b7518 100644 --- a/module/gogs/lang/fr.php +++ b/module/gogs/lang/fr.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = 'Gogs Browse'; $lang->gogs->search = 'Search'; diff --git a/module/gogs/lang/vi.php b/module/gogs/lang/vi.php index 6c7031c552..e59bfec93d 100644 --- a/module/gogs/lang/vi.php +++ b/module/gogs/lang/vi.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = 'Gogs Browse'; $lang->gogs->search = 'Search'; diff --git a/module/gogs/lang/zh-cn.php b/module/gogs/lang/zh-cn.php index 0f263ae5e7..a21dc80ba6 100644 --- a/module/gogs/lang/zh-cn.php +++ b/module/gogs/lang/zh-cn.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = '浏览Gogs'; $lang->gogs->search = '搜索'; diff --git a/module/gogs/lang/zh-tw.php b/module/gogs/lang/zh-tw.php index c7e79e5013..ee8ef6470c 100644 --- a/module/gogs/lang/zh-tw.php +++ b/module/gogs/lang/zh-tw.php @@ -1,5 +1,4 @@ gogs = new stdclass; $lang->gogs->common = 'Gogs'; $lang->gogs->browse = '浏览Gogs'; $lang->gogs->search = '搜索'; diff --git a/module/repo/control.php b/module/repo/control.php index 263aa3db46..f0cd4acaa2 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -300,7 +300,7 @@ class repo extends control } $this->app->loadClass('pager', $static = true); - $pager = new pager(0, 8, 1); + $pager = new pager(0, 10, 1); $logType = 'file'; $revisions = $this->repo->getCommits($repo, '/' . $entry, 'HEAD', $logType, $pager); @@ -416,7 +416,7 @@ class repo extends control /* Load pager. */ $this->app->loadClass('pager', $static = true); - $pager = new pager(0, 8, 1); + $pager = new pager(0, 10, 1); if($_POST) { @@ -939,6 +939,28 @@ class repo extends control if(empty($repo)) return; if($repo->synced) return print('finish'); + if(in_array($repo->SCM, array('Gitea', 'Gogs'))) + { + $logFile = realPath($this->app->getTmpRoot() . "/log/clone.progress." . strtolower($repo->SCM) . ".{$repo->name}.log"); + if($logFile) + { + $content = file($logFile); + $lastLine = $content[count($content) - 1]; + if(!strpos($lastLine, 'done')) + { + return print(1); + } + elseif(strpos($lastLine, 'fatal') !== false) + { + return print('finish'); + } + else + { + @unlink($logFile); + } + } + } + $this->commonAction($repoID); $this->scm->setEngine($repo); @@ -1079,7 +1101,7 @@ class repo extends control * @access public * @return void */ - public function ajaxSideCommits($repoID, $path, $objectID = 0, $type = 'dir', $recTotal = 0, $recPerPage = 8, $pageID = 1) + public function ajaxSideCommits($repoID, $path, $objectID = 0, $type = 'dir', $recTotal = 0, $recPerPage = 10, $pageID = 1) { if($this->get->repoPath) $path = $this->get->repoPath; $this->app->loadClass('pager', $static = true); diff --git a/module/repo/model.php b/module/repo/model.php index fe8ff36ed2..29a3d56f0d 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -1431,7 +1431,9 @@ class repoModel extends model $path = $this->app->getAppRoot() . 'www/data/repo/' . $this->post->name . '_' . $module; if(!realpath($path)) { - $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $path . '"'; + $project->tokenCloneUrl = 'https://oauth2:A1EVShVfuGo3PaQRuiQN@gitlab.zcorp.cc/easycorp/zentaopms.git'; + $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $path . '" > "' . $this->app->getTmpRoot() . "log/clone.progress.$module.{$this->post->name}.log\" 2>&1 &"; + if(PHP_OS == 'WINNT') $cmd = "start /b $cmd"; exec($cmd); } $_POST['path'] = $path; diff --git a/module/repo/view/ajaxsidecommits.html.php b/module/repo/view/ajaxsidecommits.html.php index 6321a9f742..1d038ba9dd 100644 --- a/module/repo/view/ajaxsidecommits.html.php +++ b/module/repo/view/ajaxsidecommits.html.php @@ -53,7 +53,7 @@ if(isset($entry)) $pathInfo .= '&type=file'; repo->diff, '', count($revisions) < 2 ? 'disabled btn btn-primary' : 'btn btn-primary')?> repo->createLink('log', "repoID=$repoID&objectID=$objectID&entry=" . $this->repo->encodePath($path) . "&revision=HEAD&type=$logType"), $lang->repo->allLog, '', "class='allLogs' data-app='{$this->app->tab}'");?>
- +
pageID == 1 ? 1 : $pager->pageID - 1;