Changeset 93663 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 6:47:42 PM (4 years ago)
Author:
fil@…
Message:

on fait quelques vérifications avant de mettre à jour
et s'il y a des fichiers modifiés, on regarde s'il y a un risque de conflit ou pas (mais on l'aisse l'utilisateur faire son svn up tout seul quand même)

https://matrix.org/_matrix/media/v1/download/matrix.org/DBDkamsWpLJwpKcBWKXnuGpY
https://matrix.org/_matrix/media/v1/download/matrix.org/XtCOnWgOxoUeoofSgFoZPGri

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/spip-cli/CoreMettreajour.php

    r92185 r93663  
    4646                                        'trunk' => 'svn://trac.rezo.net/spip/spip',
    4747                                );
    48                                 // Branche séléctionnée
     48                                // Branche sélectionnée
    4949                                $branche = $input->getOption('branche');
    5050                                if (isset($branche) && !empty($branche)) {
     
    5555                                                        'Branches supportées : <info>'.join('</info>, <info>', array_keys($branches_ok)).'</info>'
    5656                                                ));
    57                                         }                               
     57                                        }
    5858                                        passthru('svn switch '.$branches_ok[$branche].' .');
    5959                                } else {
    60                                         // On lance la commande SVN dans le répertoire courant
    61                                         passthru('svn up .');                           
     60                                        // on vérifie d'abord qu'on est sur un spip sans modifs
     61                                        exec('svn status --quiet --non-interactive .', $results, $err);
     62                                        if ($err) {
     63                                                $output->writeln(array("<error>Erreur SVN.</error>"));
     64                                        } else {
     65                                                $results = array_filter($results, function ($line) {
     66                                                        return preg_match(',^M,', $line);
     67                                                });
     68                                                if (count($results) > 0) {
     69                                                        $output->writeln(array(
     70                                                                "<error>Pas de mise à jour automatique car des fichiers ont été modifiés localement.</error>",
     71                                                                 join("\n", $results),
     72                                                                 '<info>Recherche des conflits…</info>'
     73                                                        ));
     74                                                        exec('svn status --show-updates --quiet --non-interactive .', $results, $err);
     75                                                        if ($err) {
     76                                                                $output->writeln(array("<error>Erreur SVN.</error>"));
     77                                                        } else {
     78                                                                $results = array_filter($results, function ($line) {
     79                                                                        return preg_match(',^M +[*],', $line);
     80                                                                });
     81
     82                                                                if (count($results) == 0) {
     83                                                                        $output->writeln(array("<info>Pas de conflit détecté, vous pouvez probablement lancer svn update.</info>"));
     84                                                                } else {
     85                                                                        $output->writeln(array(
     86                                                                        "<error>Les fichiers suivants sont peut-être en conflit;\nfaites attention si vous lancez svn update.</error>",
     87                                                                                join ("\n", $results)
     88                                                                        ));
     89                                                                }
     90                                                        }
     91                                                }
     92                                                else {
     93                                                        // On lance la commande SVN dans le répertoire courant
     94                                                        passthru('svn update .');
     95                                                }
     96                                        }
    6297                                }
    6398                        }
Note: See TracChangeset for help on using the changeset viewer.