Github display
Langue : | Français • English |
---|
Projet
Suite a une discussion avec Amaury qui me faisait remarquer que l affichage des activites de github ressemble a tableau de pixel je me suis dit et pourquoi pas ?
J ai donc decide creer un soft qui genere un historique de contribution Git de maniere a faire afficher des motifs, textes comme sur l image ci-dessous
Technos utilisées
- Langage C++ et notamment les API de gestion de date et de temps introduits par le standard C++11
- Compilateur g++
- Gestionnaire de version Git
- Shell scripts
- SSH
Ressources
- Source code soft : Repo Git
- Example d affichage : Compte Github dedie
Programme
Principe
Git possede pas mal de fonctionnalites avancees et permet notammment de donner arbitrairement une date aux commits
C est cette fonctionnalite qui est utilisee ici
A partir de la date courante le soft calcule pour chaque pixel de l affichage des activites de combien de jours il precede la date courante
A partir d un fichier BMP representant le motif a afficher le programme va generer des commits pour chaque pixel a allumer et finit par les pusher vers un repo gitub
Pour interagir avec le repo Git le programme genere un script sh qu il va executer via execvp
Fonctionnalites
- Lit un fichier BMP en entree qui definit le motif a afficher
- Possibilite d utiliser un autre compte github que votre compte par defaut
- Generation automatique d un fichier de config ssh afin d utiliser la clef ssh dediee au compte qui affiche les motifs
- Creation d un repo Git local avec la date du commit initial suffisament dans le passe pour ne pas apparaitre dans le motif
- Lors de l affichage le repo est remis dans l etat du commit initial et les nouveaux commits sont pousses
Limitations
- Meme en ecrasant l historique Git, Github n efface pas les contributions qui n existent plus.
- En supprimant completement le projet cela marche aleatoirement
- Le seul moyen fiable que j ai trouve pour reinitialiser l affichage des activites est de supprimer le compte Github puis de le recreer mais c est pas ideal
- J ai essaye de faire des affichages differentiels entre deux motifs en jouant sur la couleur ( ie frequence d activite ) mais Github cumule les stats malgre l ecrasement de l historique. L ecart du nombre de contribution pour allumer/eteindre un pixel doit augmenter exponentiellement ce qui revient a faire de meme pour le nombre de commits.
- Le code peut etre utilise sur Gitlab mais probleme l affichage des activites sur Gitlab est lie aux push au lieu des commits et je ne pense pas qu on puisse controler la date d un push ( horodatage serveur ? )
Parametres
- Parametre obligatoire
- Fichier BMP contenant le motif a afficher
- Parametres optionnels:
- --remote : URL du repo de type git@github.com:<user>/<project>.git
- --email : Email du compte Github qui fait les commits
- --dedicated_account : specifie si on utilise un compte github autre que celui par defaut. Si oui il va generer un fichier de conf .ssh pour utiliser un clef RSA dediee
- --key_file : nom du fichier contenant la clef ssh privee a utiliser dans le cas d un compte dedie
Exemple :
./bin/github_display.exe --remote=git@github.com:githubdisplay/test.git --dedicated_account=yes --email=toto@free.fr --key_file=githubdisplay_id_rsa color.bmp
Comment essayer ?
Voici la procedure a suivre:
- Creer un compte Github
- Ajouter une clef ssh
- Creer un projet
- Creer un fichier BMP definissant votre propre motif a partir de l exemple fourni ( la ligne la plus basse n est pas prise en compte, elle sert juste de palette de couleur)
- Lancer le soft en remplacant dans la commande exemple avec les valeurs correspondant a votre compte Github projet etc
- Rafraichir la page web correspondant au compte Github cree. Normalement l affichage des activites devrait afficher votre motif !