Ignore:
Timestamp:
Jan 20, 2020, 1:53:10 PM (2 years ago)
Author:
Cerdic
Message:

fin d'implementation pousseur

Location:
_plugins_/trad-lang/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk

    • Property subgit:lock:e670a558b74eb7058f1a5759957e54a0ac6a082c deleted
    • Property subgit:lock:0bf209dc4d00f6851146ea94982d0809a6908a7b set to 2020-01-20T15:00:30.963
  • _plugins_/trad-lang/trunk/inc/salvatore_svn.php

    r119844 r119860  
    6767        return implode("\n", $output);
    6868}
     69
     70
     71/**
     72 * Commit une liste de fichiers avec un message et auteur fourni
     73 *
     74 * @param string $dir_repo
     75 * @param array $files
     76 * @param string $message
     77 * @param string $author
     78 * @param string $user
     79 * @param string $pass
     80 * @return array
     81 */
     82function salvatore_svn_commit_files($dir_repo, $files, $message, $author, $user=null, $pass=null) {
     83
     84        // lister deja les fichiers qui necessitent un svn add (fichiers ajoutes qui ne sont pas dans le repo)
     85        $files_to_add = array();
     86        foreach ($files as $file) {
     87                if (!salvatore_svn_lastmodified_file($dir_repo, $file)) {
     88                        $files_to_add[] = $file;
     89                }
     90        }
     91
     92        $files = array_map('escapeshellarg', $files);
     93        $files = implode(' ', $files);
     94
     95        $files_to_add = array_map('escapeshellarg', $files_to_add);
     96        $files_to_add = implode(' ', $files_to_add);
     97
     98        $d = getcwd();
     99        chdir($dir_repo);
     100        $output = array();
     101        $res = true;
     102
     103        $auth = "";
     104        $auth_disp = "";
     105        if ($user) {
     106                $auth .= " --username=".escapeshellarg($user);
     107                $auth_disp .= " --username=".escapeshellarg('xxxxx');
     108        }
     109        if ($user) {
     110                $auth .= " --password=".escapeshellarg($pass);
     111                $auth_disp .= " --password=".escapeshellarg('xxxxx');
     112        }
     113
     114        $commands = [];
     115        if ($files_to_add) {
     116                $commands[] = "svn add --quiet $files_to_add 2>&1";
     117        }
     118        // TODO : activer le commit quand on sera en prod
     119        // $commands[] = "svn commit $files{$auth} --no-auth-cache --non-interactive --trust-server-cert -m " . escapeshellarg($message) . " 2>&1";
     120
     121        foreach ($commands as $command) {
     122                $output[] = "> " . ($auth ? str_replace($auth, $auth_disp, $command) : $command);
     123                $return_var = 0;
     124                exec($command, $output, $return_var);
     125                // si une erreur a eu lieu le signaler dans le retour
     126                if ($return_var) {
     127                        $res = false;
     128                }
     129        }
     130        if ($res and $author and _SALVATORE_SVN_PROPSET) {
     131                if ($revision = exec("svn up . && env LC_MESSAGES=en_US.UTF-8 svn info . |awk '/^Last Changed Rev/ { print $4 }'")) {
     132                        $command = "svn propset --revprop -r $revision svn:author ".escapeshellarg($author). " .{$auth} --no-auth-cache --non-interactive --trust-server-cert";
     133                        $output[] = "> " . ($auth ? str_replace($auth, $auth_disp, $command) : $command);
     134                        exec($command, $output, $return_var);
     135                        if ($return_var) {
     136                                $res = false;
     137                        }
     138                }
     139        }
     140        chdir($d);
     141
     142        return array($res, implode("\n", $output));
     143}
     144
     145
     146
     147/**
     148 * Rien a faire : en svn le commit push, mais fonction symetrique de git
     149 *
     150 * @param string $dir_repo
     151 * @param null $user
     152 * @param null $pass
     153 * @return array
     154 */
     155function salvatore_svn_push_repository($dir_repo, $user=null, $pass=null) {
     156        return array(true, '');
     157}
Note: See TracChangeset for help on using the changeset viewer.