Browse Source

Tickets #4473 et #4474 (Real3t) : réparer partièlement le téléchargement par vcs.

On fait fonctionner Git. Mais si SVN, on n’a plus l’URL actuellement (donc on ne le fait pas).
On utilise dans tous les cas la valeur de src_archive uniquement.
svn/root/plugins/svp
Matthieu Marcillaud 10 months ago
parent
commit
887bd087c5
2 changed files with 24 additions and 6 deletions
  1. +12
    -4
      inc/svp_actionner.php
  2. +12
    -2
      teleporter/git.php

+ 12
- 4
inc/svp_actionner.php View File

@ -1576,12 +1576,12 @@ class Actionneur {
}
// l'url est différente en fonction du téléporteur
$teleporteur = $this->choisir_teleporteur($adresses['type']);
if ($teleporteur == 'http') {
$teleporteur = $this->choisir_teleporteur($adresses['type'], $i['src_archive']);
if ($teleporteur === 'http') {
$url = $adresse . '/' . $i['nom_archive'];
$dest = $dest_future;
} else {
$url = $adresses['url_serveur'] . '/' . $i['src_archive'];
$url = $i['src_archive'];
$dest = $dest_ancien ? $dest_ancien : $dest_future;
}
@ -1679,14 +1679,22 @@ class Actionneur {
* sinon retourne le nom du téléporteur par défaut
*
* @param string $teleporteur Téléporteur VCS à tester
* @param string $src_archive Nom ou chemin git de l’archive
* @param string $defaut Téléporteur par défaut
*
* @return string Nom du téléporteur à utiliser
**/
public function choisir_teleporteur($teleporteur, $defaut = 'http') {
public function choisir_teleporteur($teleporteur, $src_archive, $defaut = 'http') {
// Utiliser un teleporteur vcs si possible si demandé
if (defined('SVP_PREFERER_TELECHARGEMENT_PAR_VCS') and SVP_PREFERER_TELECHARGEMENT_PAR_VCS) {
if ($teleporteur) {
// dans le cas d’un dépot mixte, on ne connait pas l’url svn.
if ($teleporteur === 'svn|git') {
if (substr($src_archive, -4) !== '.git') {
return $defaut;
}
$teleporteur = 'git';
}
include_spip('teleporter/' . $teleporteur);
$tester_teleporteur = "teleporter_{$teleporteur}_tester";
if (function_exists($tester_teleporteur)) {


+ 12
- 2
teleporter/git.php View File

@ -61,9 +61,19 @@ function teleporter_git_dist($methode, $source, $dest, $options = array()) {
}
if (!is_dir($dest)) {
// on clone depuis le répertoire parent...
$into = basename($dest);
$dir = dirname($dest);
if (!is_dir($dir)) {
@mkdir($dir, _SPIP_CHMOD, true);
if (!is_dir($dir)) {
spip_log("$dir impossible a créer pour clone $source.", "teleport");
return false;
}
}
$command = _GIT_COMMAND . " clone ";
$command .= escapeshellarg($source) . " " . escapeshellarg($dest);
teleporter_git_exec($dest, $command);
$command .= escapeshellarg($source) . " " . escapeshellarg($into);
teleporter_git_exec($dir, $command);
if (isset($options['revision'])) {
$command = _GIT_COMMAND . " checkout " . escapeshellarg($options['revision']);
teleporter_git_exec($dest, $command);


Loading…
Cancel
Save