Ajout du force push

This commit is contained in:
Michel Roux 2014-04-14 15:02:53 +02:00
parent a621cd1521
commit beb829da46
5 changed files with 95 additions and 75 deletions

View File

@ -41,11 +41,18 @@ if (!empty($_POST['action'])) {
if ($_POST['action'] == 'status') { if ($_POST['action'] == 'status') {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $gitstatus . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $gitstatus . "'"));
exit; exit;
} else if ($_POST['action'] == 'push') { } else if (strpos($_POST['action'], 'push') !== false) {
$message = empty($_POST['message']) ? 'FTP' : str_replace(array('"', "'"), ' ', stripslashes($_POST['message'])); if (strpos($_POST['action'], 'force') !== false) {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push && git push && ' . $gitstatus . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git push && ' . $gitstatus . "'"));
if (!empty($config['after_push'])) { if (!empty($config['after_push'])) {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $config['after_push'] . "'")); echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $config['after_push'] . "'"));
}
} else {
$message = empty($_POST['message']) ? 'FTP' : str_replace(array('"', "'"), ' ', stripslashes($_POST['message']));
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && git add -A && git commit -m "' . $message . '" && git push && ' . $gitstatus . "'"));
if (!empty($config['after_push'])) {
echo ansi2html($session->exec('bash -c \'cd ' . $config['path'] . ' && ' . $config['after_push'] . "'"));
}
} }
exit; exit;
} else if ($_POST['action'] == 'pull') { } else if ($_POST['action'] == 'pull') {

View File

@ -9,35 +9,43 @@
} }
.toolbar-top.btn-group .btn { .toolbar-top.btn-group .btn {
border-bottom: 0; border-bottom: 0;
border-bottom-left-radius: 0 !important; border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important; border-bottom-right-radius: 0 !important;
} }
pre { pre {
border-top-left-radius: 0; border-top-left-radius: 0;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
margin: 0; margin: 0;
}
.toolbar-bottom {
margin-top: -1px;
} }
.toolbar-bottom { .toolbar-bottom {
margin-top: -1px;
display: block; display: block;
padding-right: 79px; padding-right: 79px;
margin-right: 25px;
} }
.toolbar-bottom .input-block-level { .toolbar-bottom .input-block-level {
border-top-left-radius: 0; border-top-left-radius: 0;
width: 100% !important; width: 100% !important;
} }
.toolbar-bottom .btn { .toolbar-bottom .btn {
width: 80px; width: 80px;
border-top-right-radius: 0 !important; border-top-right-radius: 0 !important;
}
.toolbar-bottom .btn:last-child i:last-child {
position: relative;
right: 9px;
margin-right: -9px;
}
.toolbar-bottom .btn:last-child {
width: 20px;
} }
.span9 { .span9 {

112
index.php
View File

@ -5,61 +5,65 @@ require_once 'utils.php';
global $servers; global $servers;
?><!doctype html> ?><!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-responsive.min.css"> <link rel="stylesheet" href="css/bootstrap-responsive.min.css">
<link rel="stylesheet" href="css/styles.css"> <link rel="stylesheet" href="css/styles.css">
<title>Git Control Center</title> <title>Git Control Center</title>
</head> </head>
<body data-spy="scroll"> <body data-spy="scroll">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="span2"> <div class="span2">
<ul class="nav nav-list well affix"> <ul class="nav nav-list well affix">
<?php foreach ($servers as $pays => $ssh): ?> <?php foreach ($servers as $pays => $ssh): ?>
<li class="nav-header"><?php echo $pays; ?></li> <li class="nav-header"><?php echo $pays; ?></li>
<?php foreach ($ssh as $id => $param): ?> <?php foreach ($ssh as $id => $param): ?>
<li><a href="#<?php echo $id; ?>"><?php echo $param['title']; ?></a></li> <li><a href="#<?php echo $id; ?>"><?php echo $param['title']; ?></a></li>
<?php endforeach; ?>
<?php endforeach; ?>
</ul>
</div>
<div class="span9">
<?php foreach ($servers as $pays => $ssh): ?>
<h1><?php echo $pays; ?></h1>
<?php foreach ($ssh as $id => $param): ?>
<section id="<?php echo $id; ?>">
<h3><?php echo $param['title']; ?></h3>
<div class="pull-right"><span class="label"></span></div>
<div class="btn-group toolbar-top">
<button class="btn" onclick="callRequest('status', '<?php echo $id; ?>');">
<i class="icon-refresh"></i> Status
</button>
<button class="btn" onclick="callRequest('pull', '<?php echo $id; ?>');">
<i class="icon-arrow-down"></i> Pull
</button>
</div>
<pre></pre>
<div class="toolbar-bottom input-append">
<input class="input-block-level" type="text" name="message" placeholder="Commit message">
<button class="btn" onclick="callRequest('push', '<?php echo $id; ?>', document.querySelector('#<?php echo $id; ?> input[name=message]').value);">
<i class="icon-arrow-up"></i> Push
</button>
</div>
</section>
<?php endforeach; ?>
<hr>
<?php endforeach; ?> <?php endforeach; ?>
</div> <?php endforeach; ?>
</div> </ul>
</div> </div>
<div class="span9">
<?php foreach ($servers as $pays => $ssh): ?>
<h1><?php echo $pays; ?></h1>
<?php foreach ($ssh as $id => $param): ?>
<section id="<?php echo $id; ?>">
<h3><?php echo $param['title']; ?></h3>
<footer> <div class="pull-right"><span class="label"></span></div>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script> <div class="btn-group toolbar-top">
<script type="text/javascript" src="js/bootstrap.min.js"></script> <button class="btn" onclick="callRequest('status', '<?php echo $id; ?>');">
<script type="text/javascript" src="js/app.js"></script> <i class="icon-refresh"></i> Status
</footer> </button>
</body> <button class="btn" onclick="callRequest('pull', '<?php echo $id; ?>');">
<i class="icon-arrow-down"></i> Pull
</button>
</div>
<pre></pre>
<div class="toolbar-bottom input-append">
<input class="input-block-level" type="text" name="message" placeholder="Commit message">
<button class="btn" onclick="callRequest('push', '<?php echo $id; ?>', document.querySelector('#<?php echo $id; ?> input[name=message]').value);">
<i class="icon-arrow-up"></i> Push
</button>
<button class="btn" title="Force Push" onclick="callRequest('push force', '<?php echo $id; ?>', document.querySelector('#<?php echo $id; ?> input[name=message]').value);">
<i class="icon-arrow-up"></i><i class="icon-arrow-up"></i>
</button>
</div>
</section>
<?php endforeach; ?>
<hr>
<?php endforeach; ?>
</div>
</div>
</div>
<footer>
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</footer>
</body>
</html> </html>

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
window.addEventListener('load', function() { window.addEventListener('load', function () {
var sections = document.querySelectorAll('section'); var sections = document.querySelectorAll('section');
for (var i = 0; i < sections.length; i++) { for (var i = 0; i < sections.length; i++) {
callRequest('status', sections[i].id); callRequest('status', sections[i].id);
@ -26,7 +26,7 @@ function callRequest(action, section, message) {
xhr.open('POST', 'ajax.php'); xhr.open('POST', 'ajax.php');
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send('action=' + action + '&section=' + section + '&message=' + message); xhr.send('action=' + action + '&section=' + section + '&message=' + message);
xhr.onreadystatechange = function() { xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) { if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {
pre.innerHTML = xhr.responseText; pre.innerHTML = xhr.responseText;

View File

@ -9,7 +9,8 @@ if (defined('ONGITLAB') && ONGITLAB) {
} }
} }
function ansi2html($string) { function ansi2html($string)
{
$dictionary = array( $dictionary = array(
'[30m' => '<span style="color:black">', '[30m' => '<span style="color:black">',
'[31m' => '<span style="color:red">', '[31m' => '<span style="color:red">',