From e670a558b74eb7058f1a5759957e54a0ac6a082c Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 20 Jan 2020 11:11:02 +0100 Subject: [PATCH] gestion du push en git --- inc/salvatore_git.php | 38 +++++++++++++++++++++++++++++++++++++- inc/salvatore_pousseur.php | 12 ++++++++++-- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/inc/salvatore_git.php b/inc/salvatore_git.php index 87248f1..9ca5b8b 100644 --- a/inc/salvatore_git.php +++ b/inc/salvatore_git.php @@ -86,6 +86,7 @@ function salvatore_git_status_file($dir_repo, $file_or_files) { /** * Commit une liste de fichiers avec un message et auteur fourni + * on utilise pas $user et $pass en git pour commit * @param string $dir_repo * @param array $files * @param string $message @@ -105,7 +106,7 @@ function salvatore_git_commit_files($dir_repo, $files, $message, $author, $user= // on ajoute tous les fichiers pour commit $commands = [ "git add $files 2>&1", - "git commit -m " . escapeshellarg($message)." --author=".escapeshellarg(salvatore_git_format_author($author)), + "git commit -m " . escapeshellarg($message)." --author=".escapeshellarg(salvatore_git_format_author($author)) . " 2>&1", ]; foreach ($commands as $command) { @@ -121,3 +122,38 @@ function salvatore_git_commit_files($dir_repo, $files, $message, $author, $user= return array($res, implode("\n", $output)); } + +/** + * on utilise pas $user et $pass en git pour push car ils sont dans le remote si c'est un https + * et si c'est ssh il faut une cle pour le user www-data + * + * @param string $dir_repo + * @param null $user + * @param null $pass + * @return array + */ +function salvatore_git_push_repository($dir_repo, $user=null, $pass=null) { + $d = getcwd(); + chdir($dir_repo); + $output = array(); + $res = true; + // on ajoute tous les fichiers pour commit + $commands = [ + "git pull --rebase 2>&1", + // TODO : activer le push quand on sera en prod + //"git push 2>&1", + ]; + + foreach ($commands as $command) { + $output[] = "> $command"; + $return_var = 0; + exec($command, $output, $return_var); + // si une erreur a eu lieu le signaler dans le retour + if ($return_var) { + $res = false; + } + } + chdir($d); + + return array($res, implode("\n", $output)); +} \ No newline at end of file diff --git a/inc/salvatore_pousseur.php b/inc/salvatore_pousseur.php index 1d88beb..8cc639d 100644 --- a/inc/salvatore_pousseur.php +++ b/inc/salvatore_pousseur.php @@ -167,9 +167,17 @@ function salvatore_pousser($liste_sources, $dir_modules=null, $dir_depots=null) } } - // TODO : push - // ne fera rien en svn (deja pushe) + // tous les commits sont faits + // on peut supprimer le fichier qui liste les commits + @unlink($file_commit); + // et push si besoin + // ne fera rien en svn (deja pushe) + list($res,$out) = $salvatore_push_repository($dir_depots . $source['dir_checkout'], empty($source['user']) ? null : $source['user'], empty($source['pass']) ? null : $source['pass']); + salvatore_log($out); + if (!$res) { + salvatore_fail("[Pousseur] Erreur sur $module", "Erreur lors du commit :\n$out"); + } } } -- GitLab