Questions méthode(s) gestions de versions

Bonjour,

Je commence à m’intéresser à la programmation de plusieurs « trucs qui travaillent ensemble » et donc du coup, ça va commencer à devenir de plus en plus compliqué de gérer la numérotation de versions et les sauvegardes « anti-conneries ».

vu que j’ai, pour le moment, travaillé indépendamment sur chacun des programmes, qui feront partis du même système, les numéros de version actuels ne permettent pas de comprendre quelle version de quel programme est compatible avec quelle(s) version(s) de quels programmes

Là, j’aurais une modif à faire qui devrait m’imposer de modifier plusieurs programmes et fichier de config de mes programmes.

J’ai vu qu’il existait de programmes de gestion de version tel que Git, mais est-il nécessaire d’être « féru » pour pouvoir s’en servir?
Des conseils méthodes seraient les bienvenus :grinning: :wink:

Désolé d’être un affreux rabat joie, mais vos truc qui travaillent ensemble travaillent ils bien
sont ils lisibles (par vous, dans 6 mois; par d’autres, si le salut de votre âme immortelle dépend de la mise sous github)
J’ai des pistes pour c(++):

  • les noms de variables sont ils parlants?
  • est ce commenté (pour d’autres langages, il suffit que les noms de variables soient parlants: la mise en page est faitte par compilation/decompilation, qui mange tous les commentaires; c(++) n’a pas cette facilité)
  • est ce complexe?
    pmccabe (un paquet de Debian/Rapsbian -et une entrée fort utile dans wikipedia https://fr.wikipedia.org/wiki/Nombre_cyclomatique
  • calcule et affiche la complexité de chaque fonction C(++) et m’est fort utile.
  • est ce lisible?
    (cpplint vérifie que les lignes ne sont pas trop longues, prêtes à être mises sur une carte Hollerith, voire un « smart » « phone »; il affiche aussi d’autres laideurs, au standard de google…)

Une fois que vous pensez que vos bouts de code sont débuggués et lisibles (croyez vous qu’un autre que vous lira du code complexe et laid?), vous pouvez demander ce que d’autres en pensent (stackoverflow n’a pas l’air mal, pour ça: ça changerait leurs experts de code buggué …)
une fois que vous serez sûr que vos trucs fonctionnent, dans beaucoup de cas, et sont lisibles, peut être sera-t-il temps de les numéroter… et d’infliger aux pauvres con sommateurs (dont je suis) de github un nouveau logiciel parmi des dizaines de milliers…

Sans parler de qualité de code car ce n’est pas la question ici, git est un outil très simple à utiliser et quantité de tuto existent sur le net.

En gros il faut juste comprendre une dizaine de terme et après le tour est joué pour la partie basique.

Voici les principaux :smiley:
PULL, PUSH, BRANCH, MERGE, COMMIT, ORIGIN, MASTER

Non, j’ai parlé de Git, pas de Github. Github est un site racheté par Microsoft, qui utilise le programme Git de gestion de version, associé à d’autres outils, de mise en ligne, de report de bug…



La première étape est déjà de continuer à y voir clair pour moi-même. Je reprends un travail abandonné depuis environ un an et j’arrive pour le moment à m’y retrouver, mais ça risque de pas durer vu que la dépendance des programmes, des fichiers de config et/ou bases de données, les uns aux autres va augmenter…

@dbrion06 : on est d’accord sur le principe, si même l’auteur d’un programme ne s’y retrouve pas dans son code, alors ça sera pire pour une autre personne…

@Gpapig: merci, c’est ce genre de réponse dont j’avais besoin, un retour d’expérience et un/des points de départ…

Je ne connais pas le C++, c’est écrit en python, il y aura probablement un peu de Bach Linux aussi.

Bonjour,
pour répondre à ta question de base, oui git est assez facile à prendre en main, tu trouveras un tuto pour débuter sur le site : https://raspberry-pi.fr/introduction-versioning-git/

Concernant les dépendances entre versions, etc., une fois git en place tu n’auras plus tellement à maintenir plusieurs versions en parallèle pour éviter les régressions, puisque git te permettra de revenir en arrière à tout moment. Si il s’agit néanmoins d’un vrai besoin, je pense que le plus simple serait d’utiliser un système de gestion de dépendances comme Pypi, et pour chaque version inclure le fichier Pypi des dépendances, qui contiendra lui le numéro de version voulu pour toutes les autres parties du projet.

Pour finir, concernant GitHub et git, personnellement j’aime GitHub, c’est un site qui a énormément apporté à la communauté, et l’honnêteté me pousse à dire que le rachat par Microsoft a, pour l’instant, plutôt été dans le bon sens (plus de fonctionnalités gratuites, ajout de pipelines pour l’intégration continue, plus de moyens, etc.). Github permet désormais les repo privés et c’est donc une bonne solution pour héberger ton code sans devoir maintenir un truc en plus. Néanmoins, si tu ne veux pas utiliser Github, tu peux toujours trouver des alternatives libres. Tu trouveras d’ailleurs là aussi un tutoriel sur le site pour monter un serveur Gitlab sur le Raspberry Pi.

2 J'aimes

La question sous jacente n’est pas l’intitulé, c’est que faire de code dont l’auteur , de son propre aveu, a du mal à comprendre et à maintenir?
la solution de le publier est certainement la dernière chose à laquelle refléchir, et la priorité des priorités est de le maintenir / le rendre maintenable…
A noter que github est le dernier endroit où on devrait chercher des bouts de logiciels (il n’est pas le seul à tenter de faire maintenir du code -dont on ne sait même pas à quoi il sert dans ce sujet: c’est motivant…-). Viennent ensuite pypi (très bordelique) et enfin les paquets debian (un peu de stabilité dans un monde branlant).
Celà n’ote pas l’interet de github (qui couvre une vaste majorité des dépôts git, les autres dépôts n’offrant aucune garantie de continuioté du service -abandonner du code pendant un an n’incite pas à se faire recommander de créer son propre dépôt git…)
Mais à moins d’avoir à

  • écrire/mettre à disposition du code d’excellente qualité -et sortir vite- (ex : opencv, maintenu et évoluant avec des professionnels ou des étudiants), learnopencv (excellents cours en c++ et python)
  • avoir quelque chose de très original à offrir (je n’aurai pas la cruauté de rappeler que, dans ce fil, il n’est indiqué nulle part à quoi peut bien servir le code que l’on tente d’exhumer) . Je citerai en exemple https://github.com/dolanskurd/kurdish qui convertit du texte kurde en sorani -écrit en arabo persique, avec ajout de voyelles ,et de consonnes- en texte écrit en caractères latin de BadirXan -il était sobre, et a amélioré des retranscriptions ethylojacobines de MustafaKemal, destinées à dénaturer une autre langue- Manquent les retranscriptions en cyrillique -pour l’Arménie- et en ASCII (peu utilisées, même par les officiers de marines US) Citer aussi https://github.com/DanielJDufour/date-extractor : convertit et detecte les dates dans un texte en anglais , arabe, chinois , français, kurde, neo ottoman -avec l’anglais et le chinois, il couvre, scusez du peu, une vaste majorité des textes- en dates informatiques, depuis la création du monde -et vice versa-

A part ces deux exceptions (qualité excellente; originalité correspondant à ses besoins) , il faut éviter github comme la peste (trop de gens s’en servent pour se faire dépanner: stackoverflow a tout ce qu’il faut pour dépanner, voire pour réviser du code) et ^tre conscient que la concurrence est très rude
je choisirais, sous github -qui a tout ce qu’il faut pour un classement par thème- des choses bien maintenues et bien écrites ce dernier point est une condition nécessaire pour gérer des versions…

2 J'aimes

Ton point de vue est bien sur totalement pertinent mais à mon sens hors de propos.

C’est comme si quelqu’un vient demander ou se trouve la sortie pour Nevers et que tu viens lui faire la morale sur la façon de conduire.

Git (et github) sont également des outils pour n’importe quel amateur un tant soit peu curieux et cherchant à faire évoluer ce qu’il fait, on y trouve de tout, de l’excellent et du pourri.
Après si le reste d’internet va prendre son code mal foutu, illisible etc en exemple et bah tant pis pour lui.
Github est ce qu’il est, à savoir un repo privé et/ou publique.

1 J'aime

Bon:
la seule façon de demander où est une sortie d’autoroute, une fois engagé, est de … se garer de travers, pour ouvrir la conversation.
Ceci

  • interroge sur la pertinence de la comparaison

  • justifie, si un cas aussi dangereux se présente, de bonnes leçons de morale -si on est très genti

lEt les amateurs ne sont pas idiots au point de téléharger du code mal foutu, dont on ne sait m^me pas à quoi il sert (je soupçonne fortement ce fil d’être dédié à ce type de code, de … l’aveu de l’auteur).
Je me suis doté de testeurs de code https://fr.wikipedia.org/wiki/Analyse_statique_de_programmes
pour éviter de garnir mes ordinateurs de ce genre d’horreurs (mais il serait plus sain qu’avant d’infliger au vaste monde libre des sources mal foutus, les auteurs fassent ce travail, au lieu des consommateurs)
Juste une question de priorités

1 J'aime

Merci.

@RaspberryPiFR: Merci pour le lien (très) intéressant
Petite remarque sur la page:


La première flèche de défilement jaune pale est tellement peu contrastée avec le blanc qu’elle ne se voit presque pas, j’ai cru un moment que la page était vide ou bloquée par mon navigateur. Pour le reste, bien fait, d’une simplicité facilitant la découverte.

hum… ensuite…

J’ai dit ça? Non, j’en ai pas l’impression…
Je suis débutant en programmation et je vais pas me la p.ter
Mais je comprends ce que font mes programmes, j’y passe beaucoup plus de temps qu’une personne chevronnée. Certaines personnes averties m’ont (beaucoup) aidés c’est clair, pas pour avoir du « tout cuit », mais du « compris ». Je vois cela comme une étape d’étude/d’apprentissage, c’est normal de ne pas savoir immédiatement comprendre/connaître comment calculer la trajectoire du soleil ou la réaction/les équations d’une batterie plomb déchargée en C10 ou en C100.

@dbrion06 : tu n’as toujours pas compris que mon intérêt n’était pas de diffuser plus le plaisir de diffuser, mais à un moment donné si je veux partager un projet ayant une certaine complexité, avec des personnes averties, il fut que ce soit un temps soit peu organisé, sinon c’est le b…del… C’est d’ailleurs peut-être à peut près ce que tu dis… mais sans remarquer que ton raisonnement, c’est le serpent qui se mord la queue, du même adage que « faut pas faire travailler les jeunes, ils ont pas d’expérience » => bah, ils en auront jamais + le savoir des anciens va mourir avec eux…

note, je serait plus tenté par GitLab CE vraiment libre plutôt que GitHub, mais je ne me précipite pas…

Actuellement, le gros projet (y en aura peut être d’autres) c’est mon régulateur solaire. Mais, oui, quelqu’un pourrait être intéressé par juste un petit bout (genre juste le sous programme qui calcule l’heure du lever/couché/midi solaire), tout comme ça pourrait intéresser personne (sauf moi).

je n’est pas la prétention d’être un « génie » (quoi que, travailler dans « le génie » c’est faire de la conception :smile:…), mais peut être d’être capable de synthétiser des connaissances et avec de bon outils, j’aimerais bien « fédérer » des savoir faire autour de projets écologiques libres dont celui-ci.

Sous cran (le depôt de R) je peux en trouver -et j’en ai trouvé 4-; chacun a une doc, des exemples d’utilisation pouvant déboucher, au prix de 3 lignes supplémentaires -pas la peine d’appeler à l’aide le ouabe-, sur un test avec d’autres logiciels… ex: https://cran.r-project.org/web/packages/insol/insol.pdf

avr-libc (un paquet source de Rapbian) a un morceau qui calcule l’heure du lever , du coucher et l’angle zenithal… Il a été testé par des milliers d’utilisateurs avertis depuis que l’energie solaire est à la mode et que les avr (ou, lors de tests, tout uC: je l’ai testé avec satisfaction sur RPi…) ont une excellente bibliothèque…
Pourquoi irais je m’emnuyer avec un bout de code, au mieux redondant trouvé dans les tréfonds d’un dépôt.
Quant aux projets ecologiques libres, il y en a des dizaines… savez vous lesquels? en quoi êtes vous

  • meilleur
    ou
  • plus original (accroît vos chances d’être dépanné, si besoin, par quelqu’un d’assez méthodique) que les autres?

Des centaines, plutôt… au minimum. ça fait plus de 10 ans que je fouine, oui, certains amateurs (passionnés) réalisent effectivement d’excellentes choses, parfois, c’est hélas plus bancal.

Oui, d’accord, des « pièces détachées » en calcul solaire ça existe, je sais. Mais mon but est de concevoir un système de régulation complet…

Merci de bien vouloir rester cordiale et ne pas être inutilement hautain/agressif envers l’internaute qui pose une question.

Si la direction prise par l’internaute ne correspondant à ton/votre idéal, dans ce cas là le mieux est de ne pas répondre plutôt que de penser détenir absolument LA vérité et d’avoir un discours à la limite de l’agressif.

A bon entendeur

1 J'aime

Merci de préciser ce que vous voulez réguler:c’est, soit interessant, soit bidon (redondant ).
Et , si votre but est de concevoir un système de regulation complet, pourquoi faites vous état… de calculs astronomiques (parmi la foultitudee de logiciels de calcul astronomiques, on est sûr d’en trouver au moins deux d’utilisables -et utilisés-
Pour les méthodes de gestion de code, il faut s’assurer

  • que les lignes de python/C(++)/R sont du code…
  • que les tutoriels de la mort qui tue (mais il manque la flèche!! ) ne sont pas supérieurs à avoir une version unique, ou un ensemble de versions en état de marche, gérés avec une biotechnologie basée sur la cellulose: un cahier (et un crayon) ont suffi pendant des décennies pour gérer plus que correctement du code privé, sans tuto (ridicule, pour rester charitable, s’il manque une flèche

)…

hello,

comme je l’ai (je crois) préciser dans le fil dédié à mon projet, ce régulateur est prévu pour pouvoir piloter un suiveur solaire de type prédictif. Il existe 2 manière de suivre le soleil, soit par la mesure, soit par la connaissance de la trajectoire solaire.

L’avantage de la méthode « par la mesure » est généralement une grande simplicité, l’inconvénient est que le fonctionnement est plus aléatoire lorsque le soleil est voilé.

L’inconvéniant de la méthode « prédictive » est sa plus grande complexité de conception et de réalisation, l’avantage est une meilleure maîtrise du système de suivis.

Autres point que je souhaite développer:
-1-dans les systèmes photovoltaïques, on distingue 2 types, avec ou sans stockage de l’électricité. Certaines utilisations peuvent en effet fonctionner « au fil du soleil », s’arrêter et démarrer sans problème, d’autres utilisations nécessitent un stockage pour pouvoir fonctionner de nuit. Pour des questions de gestion « d’usure » de batterie, une installation avec stockage d’électricité, la batterie (plomb) doit être dimensionnée pour stocker une semaine d’utilisation, c’est énorme, ça coûte cher. Aucun régulateur solaire que j’ai vu jusqu’à présent n’est prévu pour alimenter des utilisations « au fil du soleil » et des utilisations « avec stockage » électrique. Cela permettrait pourtant de réduire considérablement la taille et le coût de la batterie, sans nuire à sa durée de vie, moyennant une conception convenable évidement. C’est ce que je voudrait développer.

-2-Certain régulateurs sont capables de fonctionner en MPTT, avec stockage sur batterie, d’autres sont capables de fonctionner en régulateur de tension. Aucun de ceux que j’ai vu ne sont capables de fonctionner en activant ou pas la fonction MPTT, pour pouvoir passer d’un mode « avec batterie » à un mode « sans batterie », c’est aussi ce que je veux développer.

Bon, tout d’abord, merci de votre clarification bien tardive (peut être l’aviez vous précisé quelque part, mais où c’était noyé dans
*de la pub pour le tuto de la mort qui tue -post 5-,

  • la flèche blème dudit tuto (peut être que l’essentiel du tuto est complètement caché; comment peut on le savoir) -post 9-
    *le Chemin de Nevers -post 7-
    *, les « à bon entendeurs » post 14,
  • les calculs de durée du jour, redondants de chez inutile , de votre propre aveu

et autres jus de cerveau, que je n’aurai pas la cruauté de rappeler,

je vous remercie d’avoir enfin indiqué quel était votre projet:
la partie 'orientation des panneaux ’ a été tentée dans Hackable Magazine (ne publierait pas du code mal foutu ou absurde, sous peine de ridiculiser un périodique qui est fort utile) . Pardonnez moi de ne pas chercher le numéro (vous avez mis 6 jours à ne pas répondre à mes questions… que vous retrouverez, dans ce fil) et de vous laissez ce soin -vous avez réussi à compter les projets ecolos cf post 10… ce sera tout facile pour vous, et, peut être, utile, ce qui ne gâche rien)
Or cette partie arrivait à des conclusions très négatives (on dépense beaucoup trop d’energie à orienter un panneau solaire, ça, c’est la conclusion de l’auteur. Je susi tenté de rajouter qu’on rajoute de la complexité, et des pièces mécaniques … qui peuvent casser : les installations solaires orientent une fois pour toutes leurs panneaux)

Donc , déjà, vous pourriez laisser tomber, à moins d’être convaincant :

  • le tracking (redondant de chez inutile : defiabilise)

  • les ephemerides (redondant : vous l’évoquez, puis dites que c’est secondaire)
    et avoir un sujet plus simple -gestion de la charge des batteries, voire de leur décharge- , voire coherent.
    Avec un sujet plus simple, vous n’avez certainement pas besoin de dépôt git (gerer le système de gestion est ennuyeux), mais d’un cahier (si on arrive à prouver que le reste du projet -qui me semble la partie utile et originale- ne sert pas à grand chose, peut être qu’un post it suffira… mais j’en suis encore loin): il n’ya pas de bugs dans la cellulose, et souvent, on peut relire ce qu’on a écrit…

A un moment donné il faut juste laisser @Alynx gérer son projet comme il l’entend !
Ce n’est pas à vous de lui dire quoi faire et comment le faire avec ce ton péremptoire de vieux prof à la retraite.
Si il veut faire comme ceci ou comme cela ce ne sont pas vos oignons.
A aucun moment il ne doit vous convaincre du bien fondé de son projet !
Vous n’êtes pas son maitre de stage ou autre.

Donc a partir de maintenat je supprimerai tout post n’était pas en rapport avec les besoins de @Alynx.

Donc @Alynx Merci de bien vouloir (si tu souhaites continuer proprement) faire un résumé des questions encore en suspens de ton coté.

Por l’amour du ciel, laissez votre idée de génie (le Chemin de NEvers) intacte

Et, pour être cohérent avec votre verbiage
*agressif,
*méprisant pour les « profs à la retraite » - vous leur devez davantage que l’inverse- , mais d’une
*exceptionnelle valeur intellectuelle:
si vous laissiez à Alyx le soin de décider ce qui doit subsister dans ce « fil » ?

De toutes façons, avec les commentaires de génie que vous avez pondus, vous n’êtes plus en position de moderateur (faites donc appel à un tiers) , mais … de loubard qui agressse quelqu’un dont le ton/le regard deplaît.

@dbrion06:
Vous n’avez pas remarqué qu’un forum est un endroit d’échange, normalement structuré en différents sujet de discussion? Le sujet de cette discussion devrait être « méthode(s) de gestion de version », j’ai créé un autre sujet de discussion concernant mon projet. Je vous invite donc, vous même, à structurer votre dialogue avant de me critiquer sur mon manque de clarté.

Veuillez ne pas déformer mes propos au point de voir des aveux de ma part qui me semblent sortir d’une interprétation très très personnelle de votre part.

Faites un effort pour être plus compréhensible, vos métaphores cellulosiques à rallonges sont peu digestes.

Je ne crois pas que votre magazine détienne la vérité absolue. J’ai d’autres sources (Ademe, Cler, Ser, Hespul) basées sur nombres d’expériences plus nombreuses qui ont des avis plus nuancés et je pense plus fiable que votre avis. A savoir, sous nos latitudes tempérées, production de +40% avec un système de suivis solaire. Comme tout système mécanique, sa conso et sa fiabilité dépendent de la qualité de sa réalisation.

2 J'aimes

Je pense que la réponse d’Alynx parle d’elle même.

Donc comme annoncé on se recentre sur le sujet de base, à savoir la gestion des versions (et non pas la pertinence du code, la pertinence du projet ou autre)

Suppression du post, comme dit avant, on ne parle que de git et de versionning, de rien d’autre.

Au prochain message qui ne correspond pas à cela il y aura sanction

1 J'aime