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.
master
Matthieu Marcillaud 2 years ago
parent
commit
887bd087c5
  1. 16
      inc/svp_actionner.php
  2. 14
      teleporter/git.php

16
inc/svp_actionner.php

@ -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)) {

14
teleporter/git.php

@ -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