Fonctions Git sur les contenus

Parce que Git c'est la vie <3

a marqué ce sujet comme résolu.

Étant donné que le système de versionnement des contenu est basé sur Git, je me de demandais si il était prévu de pouvoir utiliser les principales fonctions de Git.

  1. directement avec Git, genre :
1
git clone https://zestedesavoir.com/roipoussiere/mon_tuto.git
1
2
git commit -am "Correction de fautes"
git push
  1. via l'API, genre :
1
https://zestedesavoir.com:443/api/pull/?content=1337
1
https://zestedesavoir.com:443/api/push/

Dans ce dernier cas, l'id du tuto, la clé d'API, le message de commit et le diff du contenu serait envoyé en POST.

+3 -0

Je me suis déjà dit qu'un bon debut serait de pouvoir travailler en local avec sphinx, versionner ses sources sur github (ou n'importe quel git host du moment que le repo est publiquement clonable) et pouvoir importer les tutos (et les resynchroniser) en un clic sur zds…

Mais hélas je n'ai jamais trouvé le temps pour le développer !

+1 -0

versionner ses sources sur github (ou n'importe quel git host du moment que le repo est publiquement clonable) et pouvoir importer les tutos (et les resynchroniser) en un clic sur zds…

Ça, je sais pas ce qu'il faut comme permissions côté github, mais ça m'as l'air assez simple (à condition de le faire en "force" si on veut pas ce casser le cul avec des rebase côté ZdS).

Sauf qu'on ressort les vieux démons de la ZEP-08 du placard : un script sur GitHub est uploadé sur le serveur (via git) et exécuté à cause d'une faille (chaipas comment), un fichier énorme fait tomber le disque, toussa toussa …

D'après ce que j'ai compris la ZEP a pour but d'utiliser pleinement Git et son système de branches via le site (ce qui serait vraiment chouette en effet).

Mais si Git utilisé, il y a bien un dépôt Git quelque-part, donc pourquoi on ne pourrait pas utiliser l'adresse distante avec des commandes Git ?

+0 -0

En même temps c'est toujours faisable de rajouter un sanity check potable côté back : au moindre truc suspect sur le repo tu annules le clone.

Au préalable tu verifies les tailles de fichier. Après le clone un gros coup de libmagick et de stat… C'est purement le genre de trucs que je faisais à mon ancien boulot, sur des données plus suspicieuses que ça. À condition de faire reviewer très méticuleusement la PR ca ne me semble pas la mort.

Juste assez gros en volume de travail.

+2 -0

Mais si Git utilisé, il y a bien un dépôt Git quelque-part, donc pourquoi on ne pourrait pas utiliser l'adresse distante avec des commandes Git ?

Roipoussiere

Pour plusieurs raisons parmi lesquelles :

  • Les ressources matérielles de Zeste de Savoir ne sont pas les mêmes que celle de GitHub. On ne peut pas se permettre d'uploader des fichiers de plusieurs mega, giga, etc. sur les serveurs de Zeste de Savoir.
  • La plateforme utilise massivement les identifiants des commits. Refaire l'historique d'un projet pourrait corrompre n'importe quel contenu.
  • La structure d'un dépôt d'un contenu est stricte. Les auteurs n'ont pas le loisir de placer les fichiers où ils veulent ou d'en omettre certains.

C'est pas impossible, ça serait même génial mais en l'état, c'est pas faisable aujourd'hui.

Le hook n'a réellement d'intérêt que lorsque git est utilisé par un humain.

Si tu utilises git de façon programmatique, c'est différent : soit les données sont distantes, soit tu as une copie locale. Dans les deux cas tu as une batterie de vérifications à faire mais ça n'a pas vraiment d'intérêt de passer par un hook.

+0 -0

Donner l'accès à un contenu en lecture seule via git (clone/pull) me semble très facile, une aprèm de boulot.

Pour l'écriture en revanche c'est assez terrible pour les raisons de sécurité, de hashs utilisés par la plateforme, et de structure du repo.

+2 -0

Pour le ZIP, on a probablement mis une limite de taille, et surtout, on crawle l'archive pour ne prendre que ce qui est nécessaire (après avoir lu le manifest). Je crois même qu'on c'est prémunis des tarbomb, mais je saurais plus dire comment.

… M'enfin il suffit de faire un contenu avec un nombre démentiel de sections démentiellement grandes pour nous embêter quand même.

J'ai du mal à comprendre les "raisons de sécurité" quand la plateforme autorise l'import d'archives en .zip.

nohar

On s'est mal compris. J'aurais d'ailleurs dû être précis et parler d'autorisation plus que de sécurité. Git ssh ou https, ça reste assez compliqué d'autoriser les trucs pour les auteurs a priori.

+0 -0

On s'est mal compris. J'aurais d'ailleurs dû être précis et parler d'autorisation plus que de sécurité. Git ssh ou https, ça reste assez compliqué d'autoriser les trucs pour les auteurs a priori.

victor

Ça pourrait peut-être fonctionner dans l'autre sens. Comme pour l'import d'une archive, il y aurait un formulaire avec un champ pour entrer l'adresse SSH/HTTPS d'un dépôt, et le site s'occuperait de puller ce dépôt distant.

On s'est mal compris. J'aurais d'ailleurs dû être précis et parler d'autorisation plus que de sécurité. Git ssh ou https, ça reste assez compliqué d'autoriser les trucs pour les auteurs a priori.

victor

Ça pourrait peut-être fonctionner dans l'autre sens. Comme pour l'import d'une archive, il y aurait un formulaire avec un champ pour entrer l'adresse SSH/HTTPS d'un dépôt, et le site s'occuperait de puller ce dépôt distant.

entwanne

C'est exactement ce que j'ai en tête.

+0 -0

D'accord, je voyais pas ça comme ça. Donc plutôt l'option où on permet d'exporter nos repos et d'importer un repo externe que celle où zds est un remote.

Du coup oui côté git c'est facile :

  • utilisateur clone/pull par genre git-http-backend
  • champ 'repo' et bouton 'pull' dans l'interface de rédaction
+1 -0

Ça en revanche c'est impossible avec git. Tu peux pas fetcher seulement certains fichiers. On peut éventuellement feinter avec git archive, puis extraire ce qu'on veut et supprimer l'archive, mais c'est pas top.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte