* Add branch remove.

This commit is contained in:
caoyanyi
2022-08-12 16:56:58 +08:00
parent 74874aa869
commit 04780426db
3 changed files with 29 additions and 14 deletions
+15
View File
@@ -565,4 +565,19 @@ class gogsModel extends model
return $newBranches;
}
/**
* Api delete branch.
*
* @param int $gogsID
* @param string $project
* @param string $branch
* @access public
* @return void
*/
public function apiDeleteBranch($gogsID, $project, $branch)
{
$url = sprintf($this->getApiRoot($gogsID), "/repos/$project/branches/$branch");
return json_decode(commonModel::http($url, null, array(), array(), 'json', 'DELETE'));
}
}
+1 -1
View File
@@ -368,7 +368,7 @@ class mr extends control
}
}
if(isset($MR->hostID)) $rawMR = $this->mr->apiAcceptMR($MR->hostID, $MR->targetProject, $MR->mriid, $MR);
if(isset($MR->hostID)) $rawMR = $this->mr->apiAcceptMR($MR);
if(isset($rawMR->state) and $rawMR->state == 'merged')
{
$this->mr->logMergedAction($MR);
+13 -13
View File
@@ -1039,37 +1039,37 @@ class mrModel extends model
/**
* Accept MR by API.
*
* @link https://docs.gitlab.com/ee/api/merge_requests.html#accept-mr
* @param int $hostID
* @param int $projectID
* @param int $MRID
* @param object $MR
* @access public
* @return object
*/
public function apiAcceptMR($hostID, $projectID, $MRID, $MR = null)
public function apiAcceptMR($MR)
{
$host = $this->loadModel('pipeline')->getByID($hostID);
$host = $this->loadModel('pipeline')->getByID($MR->hostID);
if($host->type == 'gitlab')
{
$apiRoot = $this->gitlab->getApiRoot($hostID);
$approveUrl = sprintf($apiRoot, "/projects/$projectID/merge_requests/$MRID/approved");
$apiRoot = $this->gitlab->getApiRoot($MR->hostID);
$approveUrl = sprintf($apiRoot, "/projects/$MR->targetProject/merge_requests/$MR->mriid/approved");
commonModel::http($approveUrl, null, array(CURLOPT_CUSTOMREQUEST => 'POST'));
$url = sprintf($apiRoot, "/projects/$projectID/merge_requests/$MRID/merge");
$url = sprintf($apiRoot, "/projects/$MR->targetProject/merge_requests/$MR->mriid/merge");
return json_decode(commonModel::http($url, null, array(CURLOPT_CUSTOMREQUEST => 'PUT')));
}
else
{
$apiRoot = $this->loadModel($host->type)->getApiRoot($hostID);
$url = sprintf($apiRoot, "/repos/$projectID/pulls/$MRID/merge");
$apiRoot = $this->loadModel($host->type)->getApiRoot($MR->hostID);
$url = sprintf($apiRoot, "/repos/$MR->targetProject/pulls/$MR->mriid/merge");
$merge = ($MR and $MR->squash == '1') ? 'squash' : 'merge';
$data = array('Do' => $merge);
if($MR and $MR->removeSourceBranch == '1') $data['delete_branch_after_merge'] = true;
if($MR->removeSourceBranch == '1') $data['delete_branch_after_merge'] = true;
$rowMR = json_decode(commonModel::http($url, $data, array(), array(), 'json', 'POST'));
if(!isset($rowMR->massage)) $rowMR = $this->apiGetSingleMR($hostID, $projectID, $MRID);
if(!isset($rowMR->massage))
{
$rowMR = $this->apiGetSingleMR($MR->hostID, $MR->targetProject, $MR->mriid);
if($data['delete_branch_after_merge'] == true) $this->loadModel('gogs')->apiDeleteBranch($MR->hostID, $MR->targetProject, $MR->sourceBranch);
}
return $rowMR;
}