Re: Kicad bibliothèques et 3D
Posté : 14 déc. 2018, 0:00
Bon, déjà SVN on oublie, en termes de gestion de version/outil collaboratif, on est dans l'antiquité, voire tout juste sorti de la préhistoire...McColson a écrit : 13 déc. 2018, 19:27Oui c'est bien ça git, ou cloud, ou SVN etc... je me posais la question de la structure à adopter.
Cloud, en soi ça ne veut rien dire si ce n'est que tes données sont sur le serveur d'un inconnu (techniquement, github est un service cloud d'ailleurs), mais en gros, et sans être expert en la matière, je ne vois aucun service qui soit réellement adapté à ce genre de besoin.
La question piège ^^McColson a écrit : 13 déc. 2018, 19:27J'essaye d'éplucher les différents tuto sur GIT et GITHUB pour comprendre les différents principes de base : organisation, branches etc... A moins que tu puisses nous éclairer vite fait.
git ça me parait super simple, mais je travaille avec au quotidien depuis des années, donc difficile à expliquer...
En gros, si on prend les choses dans l'ordre :
1. un repo (ou dépôt en bon français) git correspond à un projet. Donc ce que tu y met dedans dépend de ce que tu considères faire partie de ton projet, et comment tu le découpes :
- par exemple on pourrait imaginer avoir un seul git qui contienne le code de tous les logiciels d'un système linux complet
- comme ça fait beaucoup, on peut se dire qu'un repo par logiciel, c'est pas mal en fait
- quand il y a pas mal de données mixées, on peut choisir d'avoir plusieurs repo, par exemple un pour le code + les docs développeur, un autre pour les libs de composants (cf. kicad), et un dernier pour la doc utilisateur
Typiquement, si tu prends mon projet nanoTracer, j'ai un seul repo qui contient le code et les fichiers kicad ; c'est pas forcément optimal, mais comme c'est un petit projet, on s'y retrouve facilement. Pour un projet de type Arduino (la carte complète avec les alims embarquées, le microcontroleur etc...), on serait mieux avec un repo pour l'électronique, et un autre pour le code.
2. un repo garde l'historique du projet, donc chaque modif doit être enregistrée dans un "commit". Ça permet de savoir qui a modifié quoi, quand, et en quoi consistaient exactement les modifs ; on peut donc décider d'annuler un commit (en ajoutant un commit de "revert" qui va simplement restaurer les modifications initiales, tout en conservant l'historique), ou de revenir à un état antérieur du repo.
Cette notion de commit est fondamentale, c'est en gros l'équivalent git d'une transaction de base de données.
À noter que pour des grosses modifs, on va généralement faire plusieurs commits d'affilée, en les groupant généralement par fonctionnalité, ça rend l'historique plus gros, mais aussi plus lisible/logique/compréhensible.
3. les branches permettent de gérer les contributions simultanées, voire concurrentes, ou encore d'expérimenter des choses sans toucher à la branche de référence, censée être la branche "stable" du projet, généralement nommée "master" (d'où la règle number one : ne jamais travailler directement sur master)
Une branche est un instantané de l'état du repo à un instant T, sur laquelle on va ajouter nos commits sans impacter les autres branches. Plusieurs contributeurs peuvent avoir des branches de travail différentes et bosser dessus en même temps sans que personne ne se gène.
4. les branches vont forcément, au fil du temps, diverger entre elles, y compris par rapport à master. Il faut donc, une fois le travail terminé, fusionner ("merger" en bon franglais) la branche de travail dans master. git fait un boulot admirable en termes de fusion des modifs entre différentes branches et règle énormément de conflits automatiquement (au contraire de SVN qui était une plaie pour ça), donc il ne faut pas avoir peur de créer des branches pour bosser sur différents sujets en même temps.
LA bonne pratique : on crée une branche pour bosser sur une fonctionnalité, et une seule ! Une fois le boulot terminé, et avant d'attaquer autre chose, on merge (ou on soumet une "pull request" sur github pour demander au chef d'intégrer nos modifs), et on supprime la branche une fois le merge effectué. Si on doit bosser sur autre chose avant la fin du merge, on ne reste pas sur la même branche, mais on en crée une nouvelle à partir de master (sinon on prend aussi les modifs non-mergées, et là c'est un peu plus chiant pour le mainteneur).
Personnellement je verrais bien un découpage par "finalité" de fichiers : le vectoriel (inkscape) dans 1 repo, les pièces 3D "génériques" dans 1 autre, les composants 3D pour kicad dans un autre, pour les empreintes kicad (PCB) encore 1 autre, et les symboles kicad (schéma) dans 1 dernier.McColson a écrit : 13 déc. 2018, 19:27Et selon ton expérience, comment il faudrait commencer à configurer le dépôt ?
- Un repository par bibliothèque : 1 pour kicad, 1 pour les fichiers 2D insckape, 1 pour le travail des pièces 3D pour la simulation 3D
- ou des branches par spécialités ?
Le fait que kicad ait ce genre d'organisation milite aussi dans ce sens, puisque en fonctionnant comme ça on reste compatible avec l'import de librairies via le plugin github de kicad
