Premiers pas Git : team workflow
November 24, 2009 on 1:39 pm | In Linux | No CommentsGIT est un logiciel de gestion de version, crée par Linus Torvalds, qui permet à plusieurs développeurs de travailler ensemble sur les mêmes projets, et de gérer toute l’évolution du code du projet (le workflow) voir même le déploiement et la maintenance des applications.
L’utilisation de GIT peut être assez déroutante au premier abord, notamment pour les habitués à SVN, mais on devient très vite accro à la gestion des branches de GIT , qui permet d’organiser correctement son propre code, celui d’une équipe et de suivre l’évolution du projet. GIT possède son propre vocabulaire, j’espère vous éclairer un peu avec ces premiers pas. Pour tous les détails, consultez les livres online : Pro Git et GIT community Book.
Quelques avantages de git :
- Souplesse dans la gestion des branches
- Décentralisé
- Pas de serveur, un accès SSH suffit
- Un seul dossier .git à la racine du projet
- Le développeur peut créer ses propres branches locales
- Espace disque et transferts réseau très limités
A contrario de SVN, les branches sont stockées dans le même répertoire de travail, et vous switchez de l’une à l’autre grâce la commande ‘git checkout’. cette commande remplace/supprimer et déplace les fichiers à la demande. Pour pouvoir changer de branche, tous les changements doivent être commités.
Dans un cas classique, plusieurs développeurs vont travailler sur le même projet, chacun sur sa branche, et l’un d’eux (le ‘dictator’) sera chargé de réintégrer toutes les modifs dans le ‘master’ (via des ‘merge’). Une fois ces modifs publiées, chaque développeur pourra alors les réintégrer dans son propre code. Ce workflow est un exemple de base, de nombreux cas plus évolués sont possibles.
Si vous avez besoin de centraliser votre repository, vous pouvez utiliser un simple serveur avec accès SSH pour vos users, ou GitHub.com qui offre des repos gratuits pour les projets open source et 12$/mois pour 5 repos privés si besoin. L’avantage de cette dernière solution est sa facilité de mise en oeuvre ainsi que l’accès à l’excellente interface web de GitHub qui permet de consulter le code, les commits, d’avoir des stats, un systeme de wiki, but tracker… De plus, GitHub propose une fonction de Click&Fork qui permet de forker nimporte quel projet en un clic. La mise à jour du code peut ensuite se faire dans les deux sens… ce qui est parfait pour le modèle open source.
Une fois l’installation de git effectuée, récupérez un projet :
pour un projet hébérgé sur un serveur SSH :
pour un projet hébérgé sur GitHub :
Dans les deux cas, cela crée un dossier KillerApp.git avec le projet et la branche ‘master’ uniquement.
* master
Si vous voulez rappatrier d’autres branches du serveur distant (origin), il faut les ajouter manuellement ;
# git checkout –track -b gary origin/gary
Ceci crée les branches locales, qui sont ‘linkées’ à leurs branches remotes respectives
On va passer dans la branche ‘juju’
gary
* juju
master
l’étoile indique qu’on travaille dans la branche ‘juju’
Pour créer une nouvelle branche locale ‘newfeature’ depuis la branche actuelle et se déplacer dedans :
# Switched to a new branch “newfeature “
Attention, la branche est issue par defaut de la branche en cours, et pas du ‘master’
Pour changer de branche :
gary
* juju
master
newfeature
Pour repasser dans la branche newfeature :
Une fois dans votre branche de dev, faites des git commit dès que nécessaire. Les fichiers modifies/ajoutes doivent etre ajoutés a l’index GIT via :
ou, pour ajouter automatiquement tous les fichiers :
Il faut savoir que GIT est complètement décentralisé et que les branches locales/remote ne sont pas forcement synchronisées (’trackées’). Dans notre exemple, la branche ‘newfeature’ n’existe qu’en local et ne pourra pas etre ‘pushée’ sur le remote, sauf si on spécifie manuellement un lien vers un repo distant.
Une fois la ‘newfeature’ codée, le développeur doit la réintégrer dans sa branche; il doit bien sur d’abord commit son code, puis faire un merge :
Il passe d’abord dans sa branche :
Puis merge le code de sa ‘newfeature’
Maintenant, la branche juju contient le code de newfeature et il a été commit automatiquement (en local).
Envoi de notre nouveau code sur le repository distant
Envoyer sur la branche ‘juju’
Il peut envoyer son code sur le remote (cela pushera la branche juju vers la branche remote ‘juju’) :
Un responsable se chargera alors de merger la branche juju dans la branche master et de mettre a jour le master sur le repo central.
Envoyer sur la branche ‘master’ directement
Éventuellement, le développeur peut intégrer ses modifs directement dans la branche ‘master’ :
Il passe sur la branch master :
Il récupère déjà le code du master actuel :
Puis merge sa branche dedans :
Puis envoi sur le remote :
Récupération de code sur le repository distant
Si le developpeur veut réintégrer dans sa branche les mises à jour de ses collègues :
récupérer toutes les branches distantes configurées :
merger le code du master dans la branch actuelle
La branche ‘juju’ est alors mise à jour avec le nouveau code issu de ‘master’ (le trunk)
Quelques commandes utiles :
- Lister les branches sur le repo distant :
- Créer une nouvelle branche ‘daniel’ locale, la créer aussi sur le remote, et la tracker : (double – before ‘track’)
# git fetch origin
# git checkout –track -b daniel origin/daniel
- Sauvegarder en mémoire les modifs depuis le dernier checkout pour les réappliquer dans une autre branche. Attention, ‘git stash’ reset votre branch au dernier commit (HEAD) :
# git checkout -b newfeature #crée une nouvelle branche
# git stash apply # re-apply les modifs dans la nouvelle branche ‘newfeature’
- Créer un nouveau repository local vide : (double – before ‘bare’)
# cd /pub/my-repo.git
# git –bare init
- Express local commit :
- Afficher un diff des modifications
- Afficher un logdes commits
Tips :
- Créez un fichier .gitignore pour ignorer des fichiers/dossiers (ce fichier peut etre different par branche)
- Utilisez ce script dans votre .bashrc pour afficher la branche dans votre prompt
- Consultez stackoverflow.com il y a pleins d’idées intéressantes
- SVN GIT Crach course : http://git.or.cz/course/svn.html
- GIT magic
- Exemple de workflow, avec des graphiques instructifs
upgrade sécurité dedibox
February 15, 2008 on 7:54 pm | In General, Linux, actu informatique, hack | 4 CommentsComme beaucoup d’admins qui se pensent contienteux, j’ai du, suite à la publication d’un exploit local assez impressionnant la semaine derniere, mettre à jour mes debian pour éviter toute prise de contrôle. Cette faille afffecte tous les kernels linux 2.6.17 à 2.6.24.1 soit un très très grand nombre de systemes. Il suffit à l’attaquant d’une petite faille PHP pour prendre le controle TOTAL de la machine.
Voici une procédure simplifiée que j’ai suivie sur une debian avec un kernel dedibox r5 :
* apt-get update && apt-get upgrade : mettre a jour les packages pour le nouveau noyau. Attention, cette étape peut vous forcer à passer à MySQL5 et PHP5
* installation du nouveau kernel : apt-get install linux-image-2.6.18-6-686
* reboot puis uname -r pour voir si tout va bien : Linux xx_xx 2.6.18-6-686
Si votre machine ne redemarre pas, essayez un reboot materiel via la console et au pire, bootez sur le system de secours pour modifier /boot/grub/menu.lst et remettre votre ancien noyau (parametre ‘default’).
Ce patch est indispensable sinon tot ou tard votre systeme sera compromis.
Pour ceux qui souhaiterait installer leur propre kernel et le patcher, suivez le tuto de drax sur son (excellent) blog : vmsplice-exploit-fix-and-patching-on-debian et pour les plus curieux, plus de détails techniques sur cette faille : http://www.isec.pl/vulnerabilities/isec-0026-vmsplice_to_kernel.txt
Getting SuExec and TRAC to play nice
February 12, 2008 on 1:31 am | In Linux, admin | 4 CommentsEnvironmentError: The environment options "TRAC_ENV" or "TRAC_ENV_PARENT_DIR" or the mod_python options "TracEnv" or "TracEnvParentDir" are missing.
Yuck. What’s more, if you’re using SuExec (like I am) then your Apache directives are ignored.
Solution: Edit your trac.fcgi and prepend the following code.
# hack for SuExec import os; os.environ['TRAC_ENV_PARENT_DIR'] = '/var/lib/trac'
vmsplice exploit fix and patching on Debian
February 11, 2008 on 7:00 pm | In Linux, admin, exploitation, kernel, security | 8 CommentsSome vulnerabilities in the Linux kernel where publicly disclosed on the 8th of February 2008. These can be exploited by any user to gain elevated privileges. A “local root” exploit was published Sunday which allows an arbitrary user to escalate to root privileges.
Affected versions: >= 2.6.17
Fixed in version: 2.6.24.2
Continue reading vmsplice exploit fix and patching on Debian…
Encrypted filesystem on OS X, Linux and Windows
February 2, 2008 on 7:08 pm | In Linux, admin, osx | 3 Comments


Finally we have a truly portable, open source, encrypted filesystem. I’ve tested a fair share of encrypted filesystem solutions. The most promising probably being encfs since it could be used with Fuse, but that only works on OS X and Linux at best.
TrueCrypt, probably the best solution available, was only working on Linux and Windows… up to now.
Continue reading Encrypted filesystem on OS X, Linux and Windows…
Test de l’eee PC ASUS
January 31, 2008 on 9:38 pm | In Fun, General, Linux, actu informatique, geek style | 6 Comments |
Ca y est j’ai craqué, en faisant mes petites courses rue Montgallet, je suis tombé sur un magnifique eee PC noir mat et je n’ai pu resister a la folle envie de tester ce petit (mais costaud) concentré de technologies.
Au premier abord l’eee pc est vraiment petit, normal me direz vous avec écran 7 pouces, 4Go de SSD, 900 grammes et 319€TTC. La webcam intégrée (et oui!) est de piètre qualité mais ca suffit pour de la visioconférence et des petites photos. |
Au second abord, il est petit aussi, et c’est pour cela qu’on l’achete
La taille de l’écran, la resolution et les performances, ce n’est pas une machine pour coder ni pour travailler mais un petit pc de depannage pour surfer, se connecter à des shells, lire des videos et du son, communiquer… C’est deja pas mal.
Le clavier, très petit, voir trop petit, demande un temps d’adaptation et le touchpad est très enervant car trop petit aussi. Il va falloir mettre une souris externe… peut etre celle ci !! En tous cas la batterie annonce 2h30 d’autonomie a plein régime ce qui est déjà respectable vu la taille de la batterie.
La bête demarre en 30 secondes sur une distribution Xandros de ASUS, qui ressemble à première vue l’ordissimo de ma grand-mere; parfait pour les débutants mais si vous êtes geek, vous avez envie de configurer un vrai bureau avec vos petits widgets et tout ce qu’il faut.
J’ai donc d’abord tenté d’installer eeeXubuntu en suivant le tuto sur : http://wiki.eeeuser.com/ubuntu:eeexubuntu:home - malheureusement – il semblerait que la version de mes cartes WiFi et Internet ne soient pas intégrés dans cette version (7.10 r3) donc par manque de temps, de posts sur ce sujet, et de motiver a m’acharner sur ce minuscule clavier dépourvu de réseau, je suis finalement repassé sur Xandros, qui apres un peu de configuration ressemble beaucoup a une Ubuntu d’autant plus que c’est aussi basé sur Debian… Et la bien sur tout fonctionne bien dès le début…
Pour installer des programmes supplémentaire, ajoutez des dépots dans Synaptic depuis cette liste : http://wiki.eeeuser.com/addingxandrosrepos?s=repositories
L’EEE est un super portable d’appoint, sous linux, très accessible aux débutants, et disponible a moins de 300€ . Vu le succès apparemment rencontré par le produit (déjà en rupture de stocks dans plusieurs magasins), cela va permettre en tous cas de démocratiser Linux un peu plus et sensibiliser le public au logiciel libre.
NB : Vous pouvez acheter des cartes mémoires SDHC 4Go a moins de 20€ sur internet pour augmenter votre capacité de stockage.
Hosting multiple SSL vhosts on a single IP/Port/Certificate with Apache2
January 24, 2008 on 2:07 pm | In Linux, admin, osx | 28 CommentsBut that’s impossible!!
HTTPS is just HTTP encapsulated inside an SSL tunnel. Apache’s virtual hosts are a clever “hack” whereby the Host header in the HTTP packet is verified. This alllows a single apache instance on a single IP/Port combination to serve a (not so) infinite number of differentes sites (aka vhosts).
Problem: The SSL tunnel is created before the first HTTP packet gets sent. Apache needs an SSL certificate but doesn’t have a Host header to match, hence cannot choose a virtual host.
Solution
This trick essentially does the matching of the Host header after the SSL connection has been established. How? Via some mod_rewrite magic!
Caveats
Although I said so, it’s not really that magical. There are a few things this trick does not solve.
- The SSL certificate used will be common to all SSL vhosts.
- Certain Apache directives may be common to all SSL vhosts (example: SuExecUserGroup). Basically anything you can’t override in a .htaccess file will be shared amongst vhosts.
Continue reading Hosting multiple SSL vhosts on a single IP/Port/Certificate with Apache2…
migration mod_python
April 29, 2006 on 3:00 pm | In General, Linux, Python, admin | 8 Commentsmod_python est un module pour le serveur Apache qui permet d’utiliser directement du Python pour créer ses applis web. Cela apporte de nombreux avantages : la code est portable (relativement), le propotypage rapide, et on peut avoir accès à tout bibliothèque Python. Les inconvenients sont la sécurité : il faut veiller à bien encadrer son application.
J’ai décidé de migrer une de mes applis de Python/IIS vers mod_python/Apache2. C’est une appli encore assez simple, toujours en beta mais qui utilise toutes les fonctionnalités d’un serveur web : Environnement, Session, Cookies… De plus, je voulais n’utiliser que la librairie standard de mod_python; pas de modules complémentaires ni de frameworks web. A priori, tout cela est géré par mod_python (à partir de la v.3.1.3) donc : c’est parti !
La doc de mod_python etant assez limitée, je vais faire un petit résumé de ce que j’ai trouvé…
Déjà , il y a plusieurs facons d’utiliser mod_python : le mode standard, le mode Publisher, le mode PSP, ou encore le mode CGI.
ces 4 possibilités ont un impact au niveau des performances : cf comparatif perfs modpython. Et la facon de coder ne sera pas la même.
Le mode PSP permet de faire des pages .psp du style de pages PHP, avec le HTML et le code Python mixés. Pour des raisons de séparation du code et de la présentation, ce n’est pas l’idéal.
Le mode Publisher permet lui de faire quelque chose de plus pythonesque; on part d’un module python ou des fonctions répondront aux appels d’Apache, et on utilisera si besoin un système de templates HTML (classe PSP). Ce mode facilite aussi la vie du programmeur en automatisant certaines tâches (codes de retours Apache…)
J’ai opté pour la solution publisher car c’est la plus “Python Style”, la plus puissante en termes d’évolutivité, et elle est assez performante pour ce dont j’ai besoin.
Déjà , config dans Apache (je ne suis pas encore un pro de Apache) :
ServerName dev.monappli.fr
ServerAdmin contact@revolunet.com
DocumentRoot /var/www/monappli
Options FollowSymLinks
AllowOverride All
Allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher # J’utilise publisher comme handler
PythonDebug On
Exemple de .htaccess : on peut définir des variables auxquelles mod_python aura accès :
DirectoryIndex main.py
ErrorDocument 500 error.py
ErrorDocument 404 error.py
ExpiresDefault A1
# Options Python
PythonAutoReload On
# ici on ajoute un dossier au sys.path pour nos libs persos
PythonPath “['/var/www/monappli/lib/']+sys.path”
PythonOption SMTP smtp.free.fr
PythonOption DB_HOST 127.0.0.1
PythonOption DB_NAME monappli
PythonOption DB_USER monappli
PythonOption DB_PASS monappli
PythonOption ROOT_PATH /var/www/monappli/
PythonOption LANG fr
Exemples de page en Python :
Chaque fonction appellée par un navigateur se voit passer un argument ‘request’ (ici appellé req) qui permet d’accéder aux classes Request, Response, Session, Cookies…
# import d’un module
import time
# import d’un module dans notre lib (définie dans le .htaccess)
import malibrairie
# fonction appellée quand appel direct à monappli.fr (page par defaut)
def index(req):
req.content_type = “text/html; charset=windows-1252″
return “Bienvenue sur monappli.fr !”
# fonction appellée quand appel à monappli.fr/page1
def page1(req):
req.content_type = “text/html; charset=windows-1252″
return “Bienvenue sur la page 1 !”
#fonction privée, qu’on ne peut pas appeller depuis apache
def _private(req):
return (2*2)
Je post d’autres exemples très bientôt, stay tuned
A venir : Gestion session, cookie…
Mot de passe root accessible sous Ubuntu
March 13, 2006 on 11:04 am | In General, Linux, actu informatique | No CommentsIl semblerait que les developpeurs d’Ubuntu 5.10 aient commis une (grosse) boulette en ne supprimant pas le log de l’installation. Celui-ci, accessible en lecture par n’importe qui sur la machine, contient en clair le mot de passe root!
Le probleme est apparemment aussi présent sur Kubuntu!
Alors effacer ce fichier de log ou upgradez votre version, car le bug a été corrigé dans les mises à jour.
https://launchpad.net/distros/ubuntu/+source/shadow/+bug/34606
script pour tester la vulérabilité de votre système : http://www.ubuntuforums.org/showpost.php?p=818304&postcount=74
vulnérabilité dévcouverte par un noob
Comprendre le fonctionnement du son sous Debian
January 30, 2006 on 6:18 pm | In General, Linux, admin | No CommentsVoici un petit article, clair et concis, qui résume simplement le fonctionnement du son sous Linux et plus particulièrement sous Ubuntu (Debian).
On y apprend comment installer et configurer le son si l’installation ne l’a pas pris en compte…
Bien utile, surtout pour les configs exotiques.
http://ploum.frimouvy.org/?2005/11/27/81-le-son-sous-ubuntu-breezy
Hacks via SSH
November 18, 2005 on 5:06 pm | In General, Linux, hack | No CommentsOn tente de me hacker via SSH en Brute Force…
voici les ips concernées :
- 82.187.83.114
- 82.165.40.31
- 193.131.116.200
- 69.46.25.34
- 61.97.32.29
C’est peut etre du virus ou du newbie mais sait-on jamais….
j’ai trouvé ces infos dans mon /var/log/auth.log et c’est seulement sur 4 jours….
Argh !! dommage qu’internet soit pollué par tant de malfaiteurs….
Mémo SCP
November 18, 2005 on 4:45 pm | In General, Linux | No CommentsSCP (Ssh CoPy) permet de transferer des fichiers entre des machines UNIX via le protocole sécurisé SSH. Cela permet de transferer des fichiers et repertoires très rapidement et en toute sécurité
- Transferer Fichier.txt vers /home/juju/Fichier.txt sur machine.example.org :
scp Fichier.txt juju@machine.example.org:
- Récupérer Fichier.txt situé sur /home/juju sur la machine machine.example.org et le mettre dans le repertoire en cours:
scp juju@machine.example.org:Fichier.txt
- Récupérer tous les .txt dans le répertoire /usr/local de machine.example.org et les mettre dans /test-scp :
scp toto@machine.example.org:/usr/local/*.txt /test-scp
- Transférer tout le repertoire /test-scp (en recursif) vers machine.example.org dans le repertoire /incoming :
scp -r /test-scp toto@machine.example.org:/incoming
adapté de Olivier Pons
Mémo des commandes UNIX de base
November 18, 2005 on 4:38 pm | In General, Linux | 1 CommentVoici un mémo des 25 commandes de base les plus utiles sous UNIX
Système, compression, email… succint mais utile…
–> Abrégé Unix
Debian Euro HOWTO
November 17, 2005 on 4:41 pm | In General, Linux | No CommentsComment bien configurer votre petite Debian pour le Français mais aussi pour le support de l’Euro…
Le System-V et update-rc.d
November 17, 2005 on 4:30 pm | In General, Linux | No Commentspetit memo pour Le System-V et update-rc.d sur debian-fr.org
ou comment automatiser facilement le demarrage des taches sous debian en fonction des runlevels et savoir comment créer un script shell de demarrage de service
reparation disque en ext2 ou ext3
November 16, 2005 on 3:51 pm | In General, Linux | No Commentsun petit memo en cas de disque dur defectueux sous linux
si la partition est en ext2 ou ext3 : http://www.coagul.org/article.php3?id_article=201
c’est bien utile et ca evite de faire de grosses betises
Nouvelle version de GeexBox
November 15, 2005 on 6:32 pm | In General, Linux, geek style | No CommentsVous connaissez Windows Media Center ? La verison de windows spécialisée dans le multimedia ?
Il existe un logiciel du meme type sous Linux, 100% libre et au format Live-CD.
Téléchargez, Gravez et Démarrez sur le CD pour transformer en 5 minutes votre machine en un jukebox Audio et Video. Redémarrez et vous retrouvez votr PC d’origine… magique
Dans cette nouvelle mouture, moultes améliorations surtout au niveau de la compatilibité avec les cartes Tuner TV et les cartes WiFi.
essayez le : GeeXboX 0.98.7.
Pour les geeks, on peut meme personnaliser l’ISO grace à un soft spécial : L’iso-Generator de GeexBox
mémo : mettre à l’heure son Linux
November 10, 2005 on 3:37 pm | In General, Linux | No Commentsmettre à l’heure son linux vite fait bien fait :
et, pour être toujours à l’heure, utiliser NTP, qui permet une synchronisation de l’heure avec les serveurs internationaux :
cf http://www.debianaddict.org/article3.html
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
