Fonctions Git sur les contenus

Parce que Git c'est la vie <3

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

É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.

Édité par Roipoussiere

"Il faut commencer par du rêve. Et les choses deviennent réelles à un moment ou un autre." - Kenny Todd, directeur des opérations pour l’ISS.

+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 !

Édité par nohar

I was a llama before it was cool

+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 …

Auteur du sujet

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 ?

"Il faut commencer par du rêve. Et les choses deviennent réelles à un moment ou un autre." - Kenny Todd, directeur des opérations pour l’ISS.

+0 -0

Cette réponse a aidé l'auteur du sujet

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.

Édité par nohar

I was a llama before it was cool

+2 -0

Cette réponse a aidé l'auteur du sujet

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.

+3 -0

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.

I was a llama before it was cool

+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.

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+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.

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+0 -0

Ceci dit dans tous les cas il y a des problèmes de forme : avec la structure actuel du contenu, dès que tu fais plus que modifier un extrait existant, il y a 99% de chance que l'auteur pète le contenu.

+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.

I was a llama before it was cool

+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

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+1 -0

Ça, c'est à peu près faisable. Avec, à la limite, une récupération des seuls fichiers nécessaires, comme ce qui est déjà fait pour les archives (on va éviter de mettre des trucs sur le serveur qui ne devraient pas y être ;) )

Ç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.

Le saviez-vous ? Chaque -1 que vous mettez vous fait gagner un point de QI.

+0 -0

Tu peux aussi faire un fetch sans faire de checkout et explorer le .git pour extraire les fichiers. On est pas prémuni d'une faille dans git exploitable mais au moins les fichiers sont jamais sous leur forme executable sur le disque.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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