merging.php
2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
/**
* @package Joomla.Platform
* @subpackage GitHub
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* GitHub API Repositories Merging class for the Joomla Platform.
*
* @documentation https://developer.github.com/v3/repos/merging
*
* @since 1.7.3
* @deprecated 4.0 Use the `joomla/github` package via Composer instead
*/
class JGithubPackageRepositoriesMerging extends JGithubPackage
{
/**
* Perform a merge.
*
* @param string $owner The name of the owner of the GitHub repository.
* @param string $repo The name of the GitHub repository.
* @param string $base The name of the base branch that the head will be merged into.
* @param string $head The head to merge. This can be a branch name or a commit SHA1.
* @param string $commit_message Commit message to use for the merge commit.
* If omitted, a default message will be used.
*
* @throws UnexpectedValueException
* @since 3.3.0
*
* @return boolean
*/
public function perform($owner, $repo, $base, $head, $commit_message = '')
{
// Build the request path.
$path = '/repos/' . $owner . '/' . $repo . '/merges';
$data = new stdClass;
$data->base = $base;
$data->head = $head;
if ($commit_message)
{
$data->commit_message = $commit_message;
}
// Send the request.
$response = $this->client->post($this->fetchUrl($path), json_encode($data));
switch ($response->code)
{
case '201':
// Success
return json_decode($response->body);
break;
case '204':
// No-op response (base already contains the head, nothing to merge)
throw new UnexpectedValueException('Nothing to merge');
break;
case '404':
// Missing base or Missing head response
$error = json_decode($response->body);
$message = (isset($error->message)) ? $error->message : 'Missing base or head: ' . $response->code;
throw new UnexpectedValueException($message);
break;
case '409':
// Merge conflict response
$error = json_decode($response->body);
$message = (isset($error->message)) ? $error->message : 'Merge conflict ' . $response->code;
throw new UnexpectedValueException($message);
break;
default :
throw new UnexpectedValueException('Unexpected response code: ' . $response->code);
break;
}
}
}