SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
{
Migration d'une base de code
subversion vers git
Geoffrey Bachelet – PMSIpilot
Forum PHP 2010
{ PMSIpilot
"Le groupe PMSIpilot conçoit, édite et distribue des
logiciels étudiés spécialement pour les
établissements de santé."
{ PMSIpilot
● 8 logiciels interdépendants
● 15 développeurs
● 250 000+ lignes de code
● 6.5G de dépôt subversion
● 24 000+ révisions
● Fichiers binaires
{ Pourquoi ?
● Flexibilité des branches
● Gestion d'un gros projet
● Facilités de backport
● Fonctionnalités « bonus »
{ Flexibilité des branches
● Coût de création d'une branche très faible
● Branches locales
● « feature branches »
{ Gestion d'un gros projet
● Gère les sources du noyau Linux
● 17 000+ révisions
● Quelques surprises quand même
● Fichiers binaires volumineux
{ Facilité des backports
● Une branche par version
● « git cherry-pick »
● « git rebase [--interactive] »
{ Bonus
● « git stash »
● « git add --interactive »
● « git rebase --interactive »
● « git commit --amend »
● Commit en mode déconnecté
{ Migration du dépôt
git-svn
{ Problèmes avec git-svn
● C'est long (7h d'import)
● Gère mal les tags
{ Solutions !
● Importer un dépôt local (file:///path/to/svn)
● Convertir les « branches tags » en vrais tags
● http://gitready.com/advanced/2009/02/16/convert-git-svn
● http://blue-dwarf.de/wp/2008/08/30/converting-git-svn-ta
● http://progit.org/book/ch8-2.html
● …
{ Ne pas oublier !
git svn init --stdlayout
{ Hébergement du serveur
Par un tiers ou en interne ?
{ Tiers
● Pas de serveur à gérer
● Services autour du dépôt
● Large choix
● https://git.wiki.kernel.org/index.php/GitHosting
● http://stackoverflow.com/questions/109440/best-git-repo
{ Interne
● Contrôle des données
● Flexibilité
● Interfaçage avec l'existant
{ Gitosis
● Authentification des développeurs par clés RSA
● Gestion des droits par utilisateur et par dépôt
● Lecture seulement
● Lecture / écriture
{ Problème rencontré
Fichiers binaires volumineux
{Fichiers binaires volumineux
● Consommation mémoire lors du « repack »
● Problème connu
● http://www.google.com/search?q=git+fatal+out+memory
● 223 000 résultats
{ Solution ?
● Avoir une version de git à jour
● « git repack -adf »
● Echoue sur notre serveur (4Go de RAM, 32bits)
{ Solution !
git help repack
--window
--window-memory
--max-pack-size
{
git filter-branch
Réécrire l'histoire
{ Réécrire l'histoire
git filter-branch --index-filter 'git rm bigfile' -- --all
{ Réécrire l'histoire
git filter-branch –index-filter 'git rm bigfile' -- --all
{ Réécrire l'histoire
● http://progit.org/book/ch9-7.html
● git help filter-branch
● Beaucoup d'outils dans git
● git count-objects
● git rev-list
● git verify-pack
● etc
{ Réécrire l'histoire
N'en faites pas trop quand même.
{
Les grafts
Réécrire l'histoire
{ Les grafts
Deux dépôts, zéro commits communs.
{ Les grafts
{ Les grafts
{ Les grafts
{ Les grafts
{ Les grafts
« .git/info/grafts »
{
<commit SHA1> <parent SHA1>
Les grafts
{ Les grafts
dc5b6cfa
{ Les grafts
746f0b6b
{ Les grafts
<commit> <parent>
dc5b6cfa 746f0b6b
{ Les grafts
{ Les grafts
git help filter-branch
NOTE: This command honors .git/info/grafts. If
you have any grafts defined, running this
command will make them permanent.
{ Les grafts
« git filter-branch -- dc5b6cfa..unrelated-master »
{ Les grafts
{ Les grafts
git reset –hard unrelated-master
{ Les grafts
{
BLACK MAGIC VOODOO
{
Les développeurs
{ Les développeurs
● Nouveau workflow
● Similaire à l'ancien pour commencer
● Nouveaux logiciels
● git, gitk, gitx
● Redmine
● PHPStorm
{ Les développeurs
● Formation interne
● Réunions techniques
● Référents internes
● Auto-formation
{ Auto-formation
● http://progit.org/
● http://git-scm.com/documentation
● http://help.github.com/
● http://gitref.org/
● etc.
{ Problème rencontré
Beaucoup de nouveaux concepts
{ Nouveaux concepts
● Fonctionnement en mode distribué
● Confusion entre « remote » et « branche »
● Confusion entre « commit » et « push »
● Confusion sur le « pull » et le « merge »
● Vocabulaire différent
● « revert » vs « checkout » / « reset »
{ Nouveaux concepts
Oubliez tout ce que vous croyez savoir.
{
Vraiment.
{
Questions ?
{ C'est fini !
● Merci à l'AFUP
● Merci à PMSIpilot (on recrute !)
● Merci à vous !

Mais conteúdo relacionado

Mais procurados

Présentation de git
Présentation de gitPrésentation de git
Présentation de gitJulien Blin
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsAlice Loeser
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHubThibault Vlacich
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVNneuros
 
Git : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebaseGit : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebasejcbaudier
 
Atelier Git + GitHub
Atelier Git + GitHubAtelier Git + GitHub
Atelier Git + GitHubspamaert
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - PrésentationDavid RIEHL
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
Petit Déjeuner Git chez Makina Corpus
Petit Déjeuner Git chez Makina CorpusPetit Déjeuner Git chez Makina Corpus
Petit Déjeuner Git chez Makina Corpusleplatrem
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitIppon
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuAhmed Archive
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITArtusamak
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & githubMonoem Youneb
 

Mais procurados (20)

Git l'essentiel
Git l'essentielGit l'essentiel
Git l'essentiel
 
Présentation de git
Présentation de gitPrésentation de git
Présentation de git
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
Tutorial Git
Tutorial GitTutorial Git
Tutorial Git
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 
Git vs SVN
Git vs SVNGit vs SVN
Git vs SVN
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
Git développez autrement
Git développez autrementGit développez autrement
Git développez autrement
 
Git : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebaseGit : Deux écoles de pensées, merge vs rebase
Git : Deux écoles de pensées, merge vs rebase
 
GitPourLaNulle
GitPourLaNulleGitPourLaNulle
GitPourLaNulle
 
Atelier Git + GitHub
Atelier Git + GitHubAtelier Git + GitHub
Atelier Git + GitHub
 
GitHub - Présentation
GitHub - PrésentationGitHub - Présentation
GitHub - Présentation
 
Git flow in action
Git flow in actionGit flow in action
Git flow in action
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Petit Déjeuner Git chez Makina Corpus
Petit Déjeuner Git chez Makina CorpusPetit Déjeuner Git chez Makina Corpus
Petit Déjeuner Git chez Makina Corpus
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
 
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntuDéveloppement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
Développement avec Intégration continue:Git, Jenkins, Tomcat, CentOS, ubuntu
 
Drupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GITDrupalcamp Nantes - Présentation GIT
Drupalcamp Nantes - Présentation GIT
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 
Débuter avec Git & github
Débuter avec Git & githubDébuter avec Git & github
Débuter avec Git & github
 

Destaque

Git Flow: un processus de développement Agile
Git Flow: un processus de développement AgileGit Flow: un processus de développement Agile
Git Flow: un processus de développement AgileXavier Hausherr
 
Git 101 Presentation
Git 101 PresentationGit 101 Presentation
Git 101 PresentationScott Chacon
 
IoT Toulouse : introduction à mqtt
IoT Toulouse : introduction à mqttIoT Toulouse : introduction à mqtt
IoT Toulouse : introduction à mqttJulien Vermillard
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 
Introduction à Git (avec PHPStorm)
Introduction à Git (avec PHPStorm)Introduction à Git (avec PHPStorm)
Introduction à Git (avec PHPStorm)Geoffrey Bachelet
 
Jeudis du libre_git
Jeudis du libre_gitJeudis du libre_git
Jeudis du libre_gitDave Neary
 
Git Agile France 2010
Git Agile France 2010Git Agile France 2010
Git Agile France 2010David Gageot
 
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectésARUCO
 
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?Guillaume Collic
 

Destaque (11)

Git Ready! Worflows
Git Ready! WorflowsGit Ready! Worflows
Git Ready! Worflows
 
Git Flow: un processus de développement Agile
Git Flow: un processus de développement AgileGit Flow: un processus de développement Agile
Git Flow: un processus de développement Agile
 
Git 101 Presentation
Git 101 PresentationGit 101 Presentation
Git 101 Presentation
 
IoT Toulouse : introduction à mqtt
IoT Toulouse : introduction à mqttIoT Toulouse : introduction à mqtt
IoT Toulouse : introduction à mqtt
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Introduction à Git (avec PHPStorm)
Introduction à Git (avec PHPStorm)Introduction à Git (avec PHPStorm)
Introduction à Git (avec PHPStorm)
 
Jeudis du libre_git
Jeudis du libre_gitJeudis du libre_git
Jeudis du libre_git
 
Git Agile France 2010
Git Agile France 2010Git Agile France 2010
Git Agile France 2010
 
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés
[Sigfox / LoRa] 8 Questions clés sur les réseaux pour objets connectés
 
En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?En quoi git serait plus agile que svn ?
En quoi git serait plus agile que svn ?
 
Projet MQTT
Projet MQTTProjet MQTT
Projet MQTT
 

Semelhante a Migration d'une base de code subversion vers git

Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaIdaf_1er
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projectsThierry Gayet
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11Amine Haddanou
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1David Herviou
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance frontJean-Pierre Vincent
 
Debian usage at BlaBlaCar - Debian Paris meetup
Debian usage at BlaBlaCar - Debian Paris meetupDebian usage at BlaBlaCar - Debian Paris meetup
Debian usage at BlaBlaCar - Debian Paris meetupJean Baptiste Favre
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesVincent Composieux
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdfbadrfathallah2
 
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...Paris Open Source Summit
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueRossi Oddet
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Publicis Sapient Engineering
 

Semelhante a Migration d'une base de code subversion vers git (20)

3_SCM_Git.pdf
3_SCM_Git.pdf3_SCM_Git.pdf
3_SCM_Git.pdf
 
Git flow
Git flowGit flow
Git flow
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Monitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et PinbaMonitoring d'applications/environnements PHP : APM et Pinba
Monitoring d'applications/environnements PHP : APM et Pinba
 
GIT training - basic for software projects
GIT training - basic for software projectsGIT training - basic for software projects
GIT training - basic for software projects
 
Phigrate
PhigratePhigrate
Phigrate
 
Outils de gestion de projets
Outils de gestion de projetsOutils de gestion de projets
Outils de gestion de projets
 
F5 ltm administering big ip v11
F5 ltm administering big ip v11F5 ltm administering big ip v11
F5 ltm administering big ip v11
 
Gwt fast overview_v1
Gwt fast overview_v1Gwt fast overview_v1
Gwt fast overview_v1
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Le monitoring de la performance front
Le monitoring de la performance frontLe monitoring de la performance front
Le monitoring de la performance front
 
Debian usage at BlaBlaCar - Debian Paris meetup
Debian usage at BlaBlaCar - Debian Paris meetupDebian usage at BlaBlaCar - Debian Paris meetup
Debian usage at BlaBlaCar - Debian Paris meetup
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
Introduction à git.pdf
Introduction à git.pdfIntroduction à git.pdf
Introduction à git.pdf
 
Mariadb une base de données NewSQL
Mariadb une base de données NewSQLMariadb une base de données NewSQL
Mariadb une base de données NewSQL
 
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
OSSPARIS19 - Utiliser les outils open source pour démarrer une nouvelle entre...
 
JCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratiqueJCertif 2012 : Git par la pratique
JCertif 2012 : Git par la pratique
 
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
 
Git pratique
Git pratiqueGit pratique
Git pratique
 
Git pratique
Git pratiqueGit pratique
Git pratique
 

Migration d'une base de code subversion vers git