Legilibre / Archeo-Lex

Pure Histoire de la Loi française – Git + Markdown
https://archeo-lex.fr
Do What The F*ck You Want To Public License
98 stars 17 forks source link

Multiple VCS backends #35

Closed fgallaire closed 6 years ago

fgallaire commented 7 years ago

Git is not the only one VCS. Mercurial and Bazaar are great too. It could be good to have a multi-backends architecture + Git support, so anyone could add other VCS (mercurial and bazaar are Python libs, so this could be done quite easily).

Seb35 commented 7 years ago

Agreed! Bonus question: is there a good multi-vcs Pythonic library? Else probably something which should be abstracted inside Archéo Lex or even better as a standalone library.

fgallaire commented 7 years ago

J'avais switché en anglais sans m'en rendre compte..retour au français !

Pas de librairie multi-vcs pour trois raisons je pense :

hashar commented 6 years ago

Je serai tenter de rejeter cette demande. Si quelqu'un a vraiment besoin de Mercurial ou Bazaar, il devrait pouvoir convertir le dépôt sans trop de difficulté. Autant ne pas compliquer les choses?

fgallaire commented 6 years ago

Git et Mercurial sont équivalents, mais pas Bazaar ni Darcs, on perdrait des informations en convertissant de Git. Ce sont des backends, quelques lignes dans un fichier indépendant du reste, ça ne complique pas grand chose.

fenollp commented 6 years ago

Il y a-t-il un reel besoin de supporter d'autres VCS que Git ? Exemple ? Je ne suis pas contre, mais les "it would be good" tuent des projets tous les jours.

BTW https://github.com/DanielDent/git-annex-remote-rclone peut surement en interesser quelques uns.

fgallaire commented 6 years ago

Ce n'est certainement pas un ajout éventuel non bloquant qui va tuer ce projet... Par ailleurs supporter plusieurs VCS permet de survivre au déclin/disparition de l'un d'eux (même si ça semble peu probable pour Git, ça reste plus probable que la disparition des dinosaures), et de garantir globalement un meilleur code, i.e. découplé de la backend.

Et #47 est une raison qui se suffit à elle-même.

Seb35 commented 6 years ago

Dans la restructuration en cours du code, j’abstrais (entre autres) l’écriture du/des fichiers résultat.

La restructuration en cours sont les fichiers FabriqueArticle.py, FabriqueSection.py et le dossier exports où j’ai fait une "interface" Stockage (j’ai l’impression que ça n’est pas l’habitude dans le monde Python, mais ça m’aide à structurer et documenter le code). Cette structure a besoin d’une autre interface Organisations qui a elle-même besoin d’une interface Syntaxes. Cf #24 pour plus de détails sur ces interfaces annexes.

Actuellement, il n’y a qu’un seul stockage, à savoir le stockage en dépôt Git et plus particulièrement en écrivant un vrai fichier puis en prenant en compte ce fichier Git (classe StockageGitFichiers). Dès que la nouvelle structuration fonctionnera, je m’attaquerai à #51 qui sera une variante de stockage dans Git, plus efficace et légèrement différente en ce sens qu’elle ne créera que des dépôts Git --bare.

Quand la restructuration sera active par défaut, je fermerai cette issue comme résolue puisqu’il sera possible d’avoir plusieurs backends VCS ; si quelqu’un a besoin d’un VCS spécifique (Mercurial, Bazaar, Pijul, etc), il faudra ouvrir une issue spécifique.

Seb35 commented 6 years ago

La restructuration et abstraction de cette partie étant active depuis une semaine, cette issue est résolue. Comme dit dans le commentaire précédent, si vous voulez un backend spécifique, ouvrez une issue spécifique.

Personnellement, je ne suis pas intéressé par d’autres backends que Git et Pijul (à moyen terme), si vous proposez un backend autre que ces deux-là, venez avec une Pull Request, je ne ferai pas l’implémentation moi-même.