Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

O.D.E.V.A.

Outils supportant le DEVeloppement, le déploiement et la maintenance collaborative des Applications

Projet

Cycle de vie

Pas si simple

Besoin d'outils

SCM Central

Autres outils

Wiki

Intégration continue

Déploiement auto

SCM

Lexique

Historique

2014

Toutes les sociétés n’utilisent pas encore de SCM !

Principe

SCM Schéma

Tickets

Principe

Comment bien les utiliser

Worflow

Trac Workflow

Historique

Petit projet ?

Exemple petit projet individuel

Architecture

user@home:~/src/projet1# ls
Modele.php
Controleur.js
Vue.html
vendor

Nouveaux besoins

Nouvelle architecture

user@home:~/src/projet1# ls
Modele.bak
Modele.php
Controleur.bak
Controleur.js
Vue.bak
Vue.html
vendor

Nouveaux besoins

Nouvelle architecture

user@home:~/src/projet1# ls
Modele.php.20140302
Modele.php.20140407
Modele.php
Controleur.js.20140302
Controleur.js
Vue.html.20140407
Vue.html
vendor

Cela commence à être complexe

Nouveaux besoins

Deux semaines après : besoin de cohérence

user@home:~/src# ls
projet1_20140502
projet1_20140503
projet1_20140504
projet1

Bilan sur un projet individuel

Subversion

Création

cd /home/user/svn
svnadmin create monProjet
mkdir /tmp/Projet
mkdir /tmp/Projet/branches
mkdir /tmp/Projet/tags
mkdir /tmp/Projet/trunk
svn import /tmp/Projet file:///home/user/svn/monProjet -m "Import initial"

Copie locale

cd /home/user/src
svn co file:///home/user/svn/monProjet/trunk maCopieLocale
cd maCopieLocale

svnserve / Apache (dav)

vi /home/user/svn/monProjet/conf/svnserve.conf
# anon-access = read -> anon-access = write
svnserve -d -r /home/user/svn --listen-port 45001 --foreground
svn co svn://ip:45001/monProjet/trunk distance

Check in / Commit

Add

svn add list.txt
(Modifier le fichier)
svn status
svn ci list.txt -m "Ajout de XXX dans la liste"

Check out / Mise à jour

Checkout

svn co http://path/to/trunk
svn up
svn revert list.txt

Historique / Différences

Diff

svn log list.txt
svn diff -r3:4 list.txt

Etiquettes / Version

Tag

svn copy http://path/to/revision http://path/to/tag

Branches

Branch

svn copy http://path/to/trunk http://path/to/branch

Fusion

Merge

svn merge -r5:6 http://path/to/branch

Conflits

Conflit

Gestion manuelle la plupart du temps.

Grand pouvoirs

Intérêts

Intérêts (suite)

Intérêts (suite)

Revue de code

Pas de revue de code sans gestionnaire de source.

Excellent moyen d'apprendre !

Outils graphiques

TortoiseSVN, TortoiseHG, Github, Bitbucket

Grandes responsabilités

Rien de magique !

Fichiers à exclure

Règles fermes

Fichiers à exclure

Règles négociables

Validation (commit)

Respecter l'équipe

Garder la cohérence

TOP 8 des pires messages

Conflits

Règles à suivre

Git

Centralisé

Centralisé

Décentralisé / Distribué

Decentralisé

Avantages DVCS

Plus de complexité

Push / Pull

PushPull

Github / Pull request

Nouveau rôle : Intégrateur.

Les commandes GIT

La meilleure source à mon avis

Proxy : Trac ODEVA

TP / Basique

cd /home/user/src
git init testGit
git clone testGit testGitLocal
cd testGitLocal/
touch a.txt && git add a.txt
git commit -am "Add a"

TP / Branches

git checkout -b modif
git branch
touch b.txt && git add b.txt
git commit -am "Ajout de b.txt"
git checkout master
touch c.txt && git add c.txt
git commit -am "Ajout de C.txt"
git merge modif

TP / Push

cd ../testGit
git config --bool core.bare true
cd ../testGitLocal
git push origin master

TP / .gitignore

gitignore.io

cd ../testGitLocal
vi .gitignore
git add .gitignore
git commit -am "Ajout de la liste des ignorés"

TP / pull rebase

cd /home/user/src
git clone testGit testGitDeux
cd testGitDeux
touch z.txt && git add z.txt
git commit -am "Add z"
git push origin master
cd ../testGitLocal
touch y.txt && git add y.txt
git commit -am "Add y"
git pull --rebase