ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Syst¨¨mes de gestion de version d¨¦centralis¨¦s
                               Git & Mercurial

                       S¨¦bastien Deleuze @sdeleuze
                       Lo?c Frering      @loicfrering
Historique
1990         CVS


2000


2002



2005
                   Bazaar
Les syst¨¨mes centralis¨¦s
Travail en mode ³¦´Ç²Ô²Ô±ð³¦³Ù¨¦
Efficacit¨¦ des ¨¦quipes
Branches




  Qui utilise r¨¦guli¨¨rement des branches avec Subversion ?
Branches




  Quelques courageux, mais la plupart ¨¦vitent ¨¤ tout prix
Lenteurs !

                 .svn .svn

       +     +     .svn
                 .svn
                      .svn
                             +
             =
Les syst¨¨mes distribu¨¦s
Typologies des d¨¦p?ts




     Centralis¨¦s   D¨¦centralis¨¦s   Distribu¨¦s
Syst¨¨mes distribu¨¦s

Pas besoin de r¨¦seau pour :


       Faire un diff
       Manipuler l'historique
       Faire des commits
       G¨¦rer les branches
Principe
Performances
Easy branching
Hello World!
Initialisation du projet

$ git clone                      $ hg clone
https://loicfrering@github.com   https://sdeleuze@bitbucket.org
/loicfrering/hello.git           /sdeleuze/hello
Initialized empty Git            destination directory: hello
repository in                    updating to branch default
/home/hello/.git/                0 files updated, 0 files
warning: You appear to have      merged, 0 files removed, 0
cloned an empty repository.      files unresolved
$ cd hello                       $ cd hello
$ tree -aL 1                     $ tree -aL 1
.                                .
©¸©¤©¤ .git                         ©¸©¤©¤ .hg

1 directory, 0 files             1 directory, 0 files
HelloWorld.java

$ vim HelloWorld.java
$ cat HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        System.out.println(hello.sayHello());
    }

    public String sayHello() {
        return "Hello World from Java!";
    }
}
Track HelloWorld.java

$ git status -s             $   hg status
?? HelloWorld.java          ?   HelloWorld.java
$ git add HelloWorld.java   $   hg add HelloWorld.java
$ git status -s             $   hg status
A- HelloWorld.java          A   HelloWorld.java
Premier commit

$ git commit -m "Hello Java"     $ hg commit -m "Hello Java"
[master (root-commit) 8866129]
Hello Java
 1 files changed, 10
insertions(+), 0 deletions(-)
 create mode 100644
HelloWorld.java
HelloWorld.php

$ vim HelloWorld.php
$ cat HelloWorld.php
<?php
class HelloWorld
{
    public function sayHello()
    {
        return 'Hello World from PHP!';
    }
}

$hello = new HelloWorld();
echo $hello->sayHello() . PHP_EOL;
Second commit

$ git add HelloWorld.php        $ hg add HelloWorld.php
$ git commit -m "Hello PHP"     $ hg commit -m "Hello PHP"
[master db9dd3c] Hello PHP
 1 files changed, 11
insertions(+), 0 deletions(-)
 create mode 100644
HelloWorld.php
Nouvelle fonctionnalit¨¦
HelloWorld.java

$ vim HelloWorld.java
$ cat HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        System.out.println(hello.sayHello("LyonJUG"));
    }

    public String sayHello(String name) {
        return "Hello " + name + " from Java!";
    }
}
HelloWorld.php

$ vim HelloWorld.php
$ cat HelloWorld.php
<?php
class HelloWorld
{
    public function sayHello($name)
    {
        return 'Hello ' . $name . ' from PHP!';
    }
}

$hello = new HelloWorld();
echo $hello->sayHello('LyonJUG') . PHP_EOL;
Staging area

$ git status -s            $   hg status
-M HelloWorld.java         M   HelloWorld.java
-M HelloWorld.php          M   HelloWorld.php
$ git add HelloWold.java   $   hg commit -m "Hello2 Java&PHP"
$ git status -s
M- HelloWorld.java
-M HelloWorld.php
Staging area
Staging area

$ git status -s
M- HelloWorld.java
-M HelloWorld.php
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   HelloWorld.java
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working
directory)
#
#       modified:   HelloWorld.php
#
Staging area

$ git commit -m "Hello2 Java"
[master 99eb692] Hello2 Java
 1 files changed, 3 insertions(+), 3 deletions(-)
$ git status -s
-M HelloWorld.php
$ git add HelloWorld.php
$ git commit -m "Hello2 PHP"
[master c262c26] Hello2 PHP
 1 files changed, 3 insertions(+), 3 deletions(-)
Historique

$ git log --pretty=oneline --   $ hg log
abbrev-commit                   changeset:   2:5eb829edb1a0
c262c26 Hello2 PHP              tag:         tip
99eb692 Hello2 Java             user:        sdeleuze
db9dd3c Hello PHP               date:        Mon Sep 20 ...
8866129 Hello Java              summary:     Hello2 Java and
                                PHP

                                changeset:   1:8e3a9a10985d
                                user:        sdeleuze
                                date:        Mon Sep 20 ...
                                summary:     Hello PHP

                                changeset:   0:cfeb26b9662d
                                user:        sdeleuze
                                date:        Mon Sep 20 ...
                                summary:     Hello Java
Et Ruby ?

            Travaillons dans une branche !
Branche

$ git branch                     $ hg branch
* master                         default
$ git branch helloruby           $ hg branch helloruby
  helloruby                      marked working directory as
* master                         branch helloruby
$ git checkout helloruby         $ hg branch
Switched to branch 'helloruby'   helloruby
$ git branch
* helloruby
  master
hello_world.rb

$ vim hello_world.rb
$ cat hello_world.rb
class HelloWorld
    def sayHello(name)
        "Hello " + name + " from Ruby!"
    end
end

hello = HelloWorld.new
puts hello.sayHello("LyonJUG")
Troisi¨¨me commit

$ git status -s                  $   hg status
?? hello_world.rb                ?   hello_ruby.rb
$ git add hello_world.rb         $   hg add hello_world.rb
$ git commit -m "Hello Ruby"     $   hg commit -m "Hello Ruby"
[helloruby 149af0e] Hello Ruby
 1 files changed, 8
insertions(+), 0 deletions(-)
 create mode 100644
hello_world.rb
Presentation DVCS - Git - Mercurial au LyonJug
Agilit¨¦ : correction isol¨¦e

$ git branch                       $ hg branch
* helloruby                        helloruby
  master                           $ hg update default
$ git checkout master              0 files updated, 0 files merged,
Switched to branch 'master'        1 files removed, 0 files
$ ls                               unresolved
HelloWorld.java HelloWorld.php     $ ls
$ vim HelloWorld.java              HelloWorld.java HelloWorld.php
$ vim HelloWorld.php               $ vim HelloWorld.java
$ git add .                        $ vim HelloWorld.php
$ git commit -m "Hello3            $ hg commit -m "Hello3 Java&PHP"
Java&PHP"                          created new head
[master 71832b3] Hello3 Java&PHP
 2 files changed, 2
insertions(+), 2 deletions(-)
Agilit¨¦ : reprise du travail

$ git branch                       $ hg branches
  helloruby                        default    4:d4455bac12b2
* master                           helloruby 3:5c5b732498bf
$ git checkout helloruby           $ hg update helloruby
Switched to branch 'helloruby'     3 files updated, 0 files merged,
$ vim hello_world.rb               0 files removed, 0 files
$ git commit -a -m "Hello3 Ruby"   unresolved
[helloruby bb94cb2] Hello3 Ruby    $ vim hello_world.rb
 1 files changed, 1                $ hg commit -m "Hello3 Ruby"
insertions(+), 1 deletions(-)
Merge

$ ls                             $ ls
hello_world.rb HelloWorld.java   hello_world.rb HelloWorld.java
 HelloWorld.php                   HelloWorld.php
$ git checkout master            $ hg update default
Switched to branch 'master'      2 files updated, 0 files merged,
$ ls                             1 files removed, 0 files
HelloWorld.java HelloWorld.php   unresolved
$ git merge helloruby            $ ls
Merge made by recursive.         HelloWorld.java HelloWorld.php
 hello_ruby.rb |    8 ++++++++   $ hg merge helloruby
 1 files changed, 8              1 files updated, 0 files merged,
insertions(+), 0 deletions(-)    0 files removed, 0 files
 create mode 100644              unresolved
hello_ruby.rb                    (branch merge, don't forget to
$ ls                             commit)
hello_world.rb HelloWorld.java   $ ls
 HelloWorld.php                  hello_world.rb HelloWorld.java
                                  HelloWorld.php
Log

$ git log --graph --pretty=oneline   $ hg   log -G
--abbrev-commit                      @      changeset:   6:491d950b55ac
* 7a390ee Merge branch 'helloruby'   |     tag:         tip
|                                   | |    summary:     Merge
| * bb94cb2 Hello3 Ruby              | |
| * 149af0e Hello Ruby               | o    changeset:   5:89f865402568
* | 71832b3 Hello3 Java&PHP          | |    branch:      helloruby
|/                                   | |    summary:     Hello3 Ruby
* c262c26 Hello2 PHP                 | |
* 99eb692 Hello2 Java                o |    changeset:   4:d4455bac12b2
* db9dd3c Hello PHP                  | |    parent:      2:5eb829edb1a0
* 8866129 Hello Java                 | |    summary:     Hello3
                                     | |
                                     o |    changeset:   2:5eb829edb1a0
                                     | |    summary:     Hello2 Java
                                     | |
                                     | o    changeset:   3:5c5b732498bf
                                     |/     branch:      helloruby
                                     |      summary:     Hello Ruby
Push

$ git push origin master            $ hg push
Counting objects: 26, done.         pushing to
Delta compression using up to 2     https://sdeleuze@bitbucket.org/sde
Compressing objects: 100%           leuze/hello
(25/25), done.                      searching for changes
Writing objects: 100% (26/26),      adding changesets
2.56 KiB, done.                     adding manifests
Total 26 (delta 10), reused 0       adding file changes
(delta 0)                           added 8 changesets with 42 changes
To                                  to 3 files
https://loicfrering@github.com/lo
icfrering/hello.git
 * [new branch] master -> master
Pull

$ git pull origin master            $ hg pull -u
remote: Counting objects: 3,        pulling from
done.                               https://sdeleuze@bitbucket.org/sd
remote: Compressing objects: 100%   eleuze/hello
(2/2), done.
remote: Total 2 (delta 0), reused   searching for changes
0 (delta 0)                         adding changesets
Unpacking objects: 100% (2/2),      adding manifests
done.                               adding file changes
From                                added 1 changesets with 1 changes
git://github.com/loicfrering/hell   to 1 files
o.git                               1 files updated, 0 files merged,
 * 7a390ee..c84376b master     ->   0 files removed, 0 files
origin/master
                                    unresolved
Updating 7a390ee..c84376b
Fast-forward
 HelloWorld.py |    8 ++++++++
 1 files changed, 8
insertions(+), 0 deletions(-)
 create mode 100644 HelloWorld.py
Int¨¦gration au poste
 de d¨¦veloppement
Console versus IHM

Constat :
- SVN = IHM d'abord, ligne de commande apr¨¨s
- Git/Mercurial = ligne de commande d'abord, IHM apr¨¨s
Int¨¦gration syst¨¨me Mercurial
? Excellent support multi-plateformes
? Support des proxy en entreprise
? Int¨¦gration Windows TortoiseHg
? hg serve tr¨¨s utile
Int¨¦gration syst¨¨me Git


? Int¨¦gration Windows
  ? msysGit / GitCheetah
  ? Cygwin
  ? TortoiseGit

? Support Windows un cran en dessous

? Support des proxy en entreprises
: MercurialEclipse

     ? Stable
     ? Performant
     ? Support complet
: EGit
? La Fondation Eclipse passe sous Git
? Bas¨¦ sur JGit
? Part de loin mais progresse vite
? A terme, int¨¦gr¨¦ nativement ¨¤ Eclipse
: support Mercurial
? Support natif
? Bonne int¨¦gration
? Visualisation des branches un peu limit¨¦e
: NBGit


? Plugin encore jeune, mais utilisable
? Visualisation des branches
? Projet peu actif
Projets
Projets sous Mercurial
Projets sous Git
Presentation DVCS - Git - Mercurial au LyonJug
Forges
Forges "classiques"
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Presentation DVCS - Git - Mercurial au LyonJug
Forges en entreprise


2 solutions :
  ? FaaS : Forge as a Service
  ? Forge interne

Int¨¦gration :
  ? Comptes utilisateurs
  ? Maven
  ? Int¨¦gration continue
Workflows
Syst¨¨mes centralis¨¦s
Open Source
Entreprise


Architecte
Resp qualit¨¦

 Lead dev
Gestion avanc¨¦e des branches



D¨¦veloppement




                        Qualification - Recette




 Int¨¦gration continue                   Production
NoSQL ?
NoSQL !




      Comme solution de persistence :
        ? Gestion des versions
        ? Gestion des conflits
        ? Arborescence
        ? Stockage fichiers binaires
        ? R¨¦plication
Conclusion
Synth¨¨se




  ? Performances
  ? Multi-platforme
  ? Branches
  ? Formation
  ? Support proxy
  ? Int¨¦gration IDE
  ? Souplesse
  ?Popularit¨¦
2010 : les DVCS sont incontournables
          dans le monde Open Source




              2011 : les DVCS seront
       incontournables en entreprise
Liens

       Git Reference                     Hg Init
       Pro Git                           Mercurial: The definitive guide
       Git community book                Bitbucket
       GitHub




Analysis of Git and Mercurial
DVCS: A Not-So-Quick Guide Through
Why Git is better than X where X is one of hg, bzr, svn, perforce
Notre interview sur Git et Mercurial par Agn¨¨s Crepet des JDuchess
Cr¨¦dits

Scott Chacon : Why git is better than X
Scott Chacon : Git 101
Chris Wanstrath : Git: The Lean, Mean, Distributed Machine
Vincent Driessen : A successful Git branching model
Curtis Newton : Green light = Go / Flickr
Gource : Software version control visualization

More Related Content

Presentation DVCS - Git - Mercurial au LyonJug

  • 1. Syst¨¨mes de gestion de version d¨¦centralis¨¦s Git & Mercurial S¨¦bastien Deleuze @sdeleuze Lo?c Frering @loicfrering
  • 2. Historique 1990 CVS 2000 2002 2005 Bazaar
  • 4. Travail en mode ³¦´Ç²Ô²Ô±ð³¦³Ù¨¦
  • 6. Branches Qui utilise r¨¦guli¨¨rement des branches avec Subversion ?
  • 7. Branches Quelques courageux, mais la plupart ¨¦vitent ¨¤ tout prix
  • 8. Lenteurs ! .svn .svn + + .svn .svn .svn + =
  • 10. Typologies des d¨¦p?ts Centralis¨¦s D¨¦centralis¨¦s Distribu¨¦s
  • 11. Syst¨¨mes distribu¨¦s Pas besoin de r¨¦seau pour : Faire un diff Manipuler l'historique Faire des commits G¨¦rer les branches
  • 16. Initialisation du projet $ git clone $ hg clone https://loicfrering@github.com https://sdeleuze@bitbucket.org /loicfrering/hello.git /sdeleuze/hello Initialized empty Git destination directory: hello repository in updating to branch default /home/hello/.git/ 0 files updated, 0 files warning: You appear to have merged, 0 files removed, 0 cloned an empty repository. files unresolved $ cd hello $ cd hello $ tree -aL 1 $ tree -aL 1 . . ©¸©¤©¤ .git ©¸©¤©¤ .hg 1 directory, 0 files 1 directory, 0 files
  • 17. HelloWorld.java $ vim HelloWorld.java $ cat HelloWorld.java public class HelloWorld { public static void main(String[] args) { HelloWorld hello = new HelloWorld(); System.out.println(hello.sayHello()); } public String sayHello() { return "Hello World from Java!"; } }
  • 18. Track HelloWorld.java $ git status -s $ hg status ?? HelloWorld.java ? HelloWorld.java $ git add HelloWorld.java $ hg add HelloWorld.java $ git status -s $ hg status A- HelloWorld.java A HelloWorld.java
  • 19. Premier commit $ git commit -m "Hello Java" $ hg commit -m "Hello Java" [master (root-commit) 8866129] Hello Java 1 files changed, 10 insertions(+), 0 deletions(-) create mode 100644 HelloWorld.java
  • 20. HelloWorld.php $ vim HelloWorld.php $ cat HelloWorld.php <?php class HelloWorld { public function sayHello() { return 'Hello World from PHP!'; } } $hello = new HelloWorld(); echo $hello->sayHello() . PHP_EOL;
  • 21. Second commit $ git add HelloWorld.php $ hg add HelloWorld.php $ git commit -m "Hello PHP" $ hg commit -m "Hello PHP" [master db9dd3c] Hello PHP 1 files changed, 11 insertions(+), 0 deletions(-) create mode 100644 HelloWorld.php
  • 23. HelloWorld.java $ vim HelloWorld.java $ cat HelloWorld.java public class HelloWorld { public static void main(String[] args) { HelloWorld hello = new HelloWorld(); System.out.println(hello.sayHello("LyonJUG")); } public String sayHello(String name) { return "Hello " + name + " from Java!"; } }
  • 24. HelloWorld.php $ vim HelloWorld.php $ cat HelloWorld.php <?php class HelloWorld { public function sayHello($name) { return 'Hello ' . $name . ' from PHP!'; } } $hello = new HelloWorld(); echo $hello->sayHello('LyonJUG') . PHP_EOL;
  • 25. Staging area $ git status -s $ hg status -M HelloWorld.java M HelloWorld.java -M HelloWorld.php M HelloWorld.php $ git add HelloWold.java $ hg commit -m "Hello2 Java&PHP" $ git status -s M- HelloWorld.java -M HelloWorld.php
  • 27. Staging area $ git status -s M- HelloWorld.java -M HelloWorld.php $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: HelloWorld.java # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: HelloWorld.php #
  • 28. Staging area $ git commit -m "Hello2 Java" [master 99eb692] Hello2 Java 1 files changed, 3 insertions(+), 3 deletions(-) $ git status -s -M HelloWorld.php $ git add HelloWorld.php $ git commit -m "Hello2 PHP" [master c262c26] Hello2 PHP 1 files changed, 3 insertions(+), 3 deletions(-)
  • 29. Historique $ git log --pretty=oneline -- $ hg log abbrev-commit changeset: 2:5eb829edb1a0 c262c26 Hello2 PHP tag: tip 99eb692 Hello2 Java user: sdeleuze db9dd3c Hello PHP date: Mon Sep 20 ... 8866129 Hello Java summary: Hello2 Java and PHP changeset: 1:8e3a9a10985d user: sdeleuze date: Mon Sep 20 ... summary: Hello PHP changeset: 0:cfeb26b9662d user: sdeleuze date: Mon Sep 20 ... summary: Hello Java
  • 30. Et Ruby ? Travaillons dans une branche !
  • 31. Branche $ git branch $ hg branch * master default $ git branch helloruby $ hg branch helloruby helloruby marked working directory as * master branch helloruby $ git checkout helloruby $ hg branch Switched to branch 'helloruby' helloruby $ git branch * helloruby master
  • 32. hello_world.rb $ vim hello_world.rb $ cat hello_world.rb class HelloWorld def sayHello(name) "Hello " + name + " from Ruby!" end end hello = HelloWorld.new puts hello.sayHello("LyonJUG")
  • 33. Troisi¨¨me commit $ git status -s $ hg status ?? hello_world.rb ? hello_ruby.rb $ git add hello_world.rb $ hg add hello_world.rb $ git commit -m "Hello Ruby" $ hg commit -m "Hello Ruby" [helloruby 149af0e] Hello Ruby 1 files changed, 8 insertions(+), 0 deletions(-) create mode 100644 hello_world.rb
  • 35. Agilit¨¦ : correction isol¨¦e $ git branch $ hg branch * helloruby helloruby master $ hg update default $ git checkout master 0 files updated, 0 files merged, Switched to branch 'master' 1 files removed, 0 files $ ls unresolved HelloWorld.java HelloWorld.php $ ls $ vim HelloWorld.java HelloWorld.java HelloWorld.php $ vim HelloWorld.php $ vim HelloWorld.java $ git add . $ vim HelloWorld.php $ git commit -m "Hello3 $ hg commit -m "Hello3 Java&PHP" Java&PHP" created new head [master 71832b3] Hello3 Java&PHP 2 files changed, 2 insertions(+), 2 deletions(-)
  • 36. Agilit¨¦ : reprise du travail $ git branch $ hg branches helloruby default 4:d4455bac12b2 * master helloruby 3:5c5b732498bf $ git checkout helloruby $ hg update helloruby Switched to branch 'helloruby' 3 files updated, 0 files merged, $ vim hello_world.rb 0 files removed, 0 files $ git commit -a -m "Hello3 Ruby" unresolved [helloruby bb94cb2] Hello3 Ruby $ vim hello_world.rb 1 files changed, 1 $ hg commit -m "Hello3 Ruby" insertions(+), 1 deletions(-)
  • 37. Merge $ ls $ ls hello_world.rb HelloWorld.java hello_world.rb HelloWorld.java HelloWorld.php HelloWorld.php $ git checkout master $ hg update default Switched to branch 'master' 2 files updated, 0 files merged, $ ls 1 files removed, 0 files HelloWorld.java HelloWorld.php unresolved $ git merge helloruby $ ls Merge made by recursive. HelloWorld.java HelloWorld.php hello_ruby.rb | 8 ++++++++ $ hg merge helloruby 1 files changed, 8 1 files updated, 0 files merged, insertions(+), 0 deletions(-) 0 files removed, 0 files create mode 100644 unresolved hello_ruby.rb (branch merge, don't forget to $ ls commit) hello_world.rb HelloWorld.java $ ls HelloWorld.php hello_world.rb HelloWorld.java HelloWorld.php
  • 38. Log $ git log --graph --pretty=oneline $ hg log -G --abbrev-commit @ changeset: 6:491d950b55ac * 7a390ee Merge branch 'helloruby' | tag: tip | | | summary: Merge | * bb94cb2 Hello3 Ruby | | | * 149af0e Hello Ruby | o changeset: 5:89f865402568 * | 71832b3 Hello3 Java&PHP | | branch: helloruby |/ | | summary: Hello3 Ruby * c262c26 Hello2 PHP | | * 99eb692 Hello2 Java o | changeset: 4:d4455bac12b2 * db9dd3c Hello PHP | | parent: 2:5eb829edb1a0 * 8866129 Hello Java | | summary: Hello3 | | o | changeset: 2:5eb829edb1a0 | | summary: Hello2 Java | | | o changeset: 3:5c5b732498bf |/ branch: helloruby | summary: Hello Ruby
  • 39. Push $ git push origin master $ hg push Counting objects: 26, done. pushing to Delta compression using up to 2 https://sdeleuze@bitbucket.org/sde Compressing objects: 100% leuze/hello (25/25), done. searching for changes Writing objects: 100% (26/26), adding changesets 2.56 KiB, done. adding manifests Total 26 (delta 10), reused 0 adding file changes (delta 0) added 8 changesets with 42 changes To to 3 files https://loicfrering@github.com/lo icfrering/hello.git * [new branch] master -> master
  • 40. Pull $ git pull origin master $ hg pull -u remote: Counting objects: 3, pulling from done. https://sdeleuze@bitbucket.org/sd remote: Compressing objects: 100% eleuze/hello (2/2), done. remote: Total 2 (delta 0), reused searching for changes 0 (delta 0) adding changesets Unpacking objects: 100% (2/2), adding manifests done. adding file changes From added 1 changesets with 1 changes git://github.com/loicfrering/hell to 1 files o.git 1 files updated, 0 files merged, * 7a390ee..c84376b master -> 0 files removed, 0 files origin/master unresolved Updating 7a390ee..c84376b Fast-forward HelloWorld.py | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) create mode 100644 HelloWorld.py
  • 41. Int¨¦gration au poste de d¨¦veloppement
  • 42. Console versus IHM Constat : - SVN = IHM d'abord, ligne de commande apr¨¨s - Git/Mercurial = ligne de commande d'abord, IHM apr¨¨s
  • 43. Int¨¦gration syst¨¨me Mercurial ? Excellent support multi-plateformes ? Support des proxy en entreprise ? Int¨¦gration Windows TortoiseHg ? hg serve tr¨¨s utile
  • 44. Int¨¦gration syst¨¨me Git ? Int¨¦gration Windows ? msysGit / GitCheetah ? Cygwin ? TortoiseGit ? Support Windows un cran en dessous ? Support des proxy en entreprises
  • 45. : MercurialEclipse ? Stable ? Performant ? Support complet
  • 46. : EGit ? La Fondation Eclipse passe sous Git ? Bas¨¦ sur JGit ? Part de loin mais progresse vite ? A terme, int¨¦gr¨¦ nativement ¨¤ Eclipse
  • 47. : support Mercurial ? Support natif ? Bonne int¨¦gration ? Visualisation des branches un peu limit¨¦e
  • 48. : NBGit ? Plugin encore jeune, mais utilisable ? Visualisation des branches ? Projet peu actif
  • 64. Forges en entreprise 2 solutions : ? FaaS : Forge as a Service ? Forge interne Int¨¦gration : ? Comptes utilisateurs ? Maven ? Int¨¦gration continue
  • 69. Gestion avanc¨¦e des branches D¨¦veloppement Qualification - Recette Int¨¦gration continue Production
  • 71. NoSQL ! Comme solution de persistence : ? Gestion des versions ? Gestion des conflits ? Arborescence ? Stockage fichiers binaires ? R¨¦plication
  • 73. Synth¨¨se ? Performances ? Multi-platforme ? Branches ? Formation ? Support proxy ? Int¨¦gration IDE ? Souplesse ?Popularit¨¦
  • 74. 2010 : les DVCS sont incontournables dans le monde Open Source 2011 : les DVCS seront incontournables en entreprise
  • 75. Liens Git Reference Hg Init Pro Git Mercurial: The definitive guide Git community book Bitbucket GitHub Analysis of Git and Mercurial DVCS: A Not-So-Quick Guide Through Why Git is better than X where X is one of hg, bzr, svn, perforce Notre interview sur Git et Mercurial par Agn¨¨s Crepet des JDuchess
  • 76. Cr¨¦dits Scott Chacon : Why git is better than X Scott Chacon : Git 101 Chris Wanstrath : Git: The Lean, Mean, Distributed Machine Vincent Driessen : A successful Git branching model Curtis Newton : Green light = Go / Flickr Gource : Software version control visualization