i praksis Erfaringer med overgang  fra ClearCase til Git Fredrik Vraalsen fvr@knowit.no / @fredriv
Agenda <ul><li>Prosjektet
ClearCase  vs.  Git  vs.  ...?
Overgang til et nytt versjonskontrollsystem
Utfordringer, erfaringer og gevinster
Best practice
Spørsmål </li></ul>
LISA-prosjektet <ul><li>Salgssystem </li><ul><li>Backend
Ekspertapplikasjon for selgere
Web services for integrasjon med eksterne kanaler </li></ul><li>Startet 2001, på lufta 2003
Vedlikehold og videreutvikling
~3 MLOC
~10 personer p.t. </li></ul>
ClearCase <ul><li>Sentralisert
Snapshot (working copy)
Låsbasert </li></ul>
<ul><li>Distribuert
Snapshot (ikke changesets)
Lokale brancher </li></ul>
Sentralisert vs Distribuert CVS, Subversion, ClearCase, Perforce, ... Git, Mercurial, Bazaar, BitKeeper, ...
Hvorfor bytte fra ClearCase?
Hvorfor  ?
Alternativer?
Overgang til nytt VCS <ul><li>Migrering
Læringskurve
Verktøystøtte
Tegnsett
Rename-tracking
Binære filer </li></ul>
Migrering <ul><li>Hvor mye historikk skal man ta med? </li><ul><li>Alt?
Ingenting?
Kun trunk / master branch?
Kun utvalgte versjoner (leveranser)? </li></ul></ul>
Migrering <ul><li>Konvertering </li><ul><li>Verktøy?
Manuell prosess? </li></ul><li>Migreringsfase </li><ul><li>Ikke alle over på en gang
Vedlikehold av gamle brancher
Synkronisering av endringer </li></ul></ul>
Vår løsning <ul><li>Git repository oppå ClearCase snapshot
Importerte utvalgte versjoner </li><ul><li>git add -A ; git commit -m &quot;Import av ...&quot; </li></ul></ul><ul><li>Pro...
Manuell synkronisering av bugfikser til Git </li></ul>
Upcoming SlideShare
Loading in …5
×

Git i praksis - erfaringer med overgang fra ClearCase til Git

1,316 views

Published on

Git er et kraftig open-source, distribuert versjonskontrollsystem som er stadig mer i vinden, og mange ønsker å ta det i bruk. Hvordan får man til en smidig overgang fra sitt trauste sentraliserte versjonskontrollsystem? Er verktøyene modne nok? Kreves det superutviklere eller kan alle ta det i bruk? Hva slags arbeidsflyt og prosesser skal man bruke?
Vi har tatt i bruk Git i et større Java-prosjekt som omfatter forvaltning og videreutvikling av et salgssystem. Systemet har vært i drift siden 2002. Inntil i fjor benyttet vi ClearCase som versjonskontrollsystem, men valgte å gå over til Git. Motivasjonen var å få bedre ytelse, flere muligheter samt å spare penger.
I dette foredraget ønsker jeg å dele våre erfaringer med Git. Jeg vil dekke både selve migreringen fra et versjonskontrollsystem til et annet, utfordringer vi har støtt på og "best practice" for daglig bruk av Git i prosjektet vårt. Jeg vil også komme inn på hvilke andre alternativer vi evaluerte og hvorfor vi valgte Git.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,316
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Git i praksis - erfaringer med overgang fra ClearCase til Git

  1. 1. i praksis Erfaringer med overgang fra ClearCase til Git Fredrik Vraalsen fvr@knowit.no / @fredriv
  2. 2. Agenda <ul><li>Prosjektet
  3. 3. ClearCase vs. Git vs. ...?
  4. 4. Overgang til et nytt versjonskontrollsystem
  5. 5. Utfordringer, erfaringer og gevinster
  6. 6. Best practice
  7. 7. Spørsmål </li></ul>
  8. 8. LISA-prosjektet <ul><li>Salgssystem </li><ul><li>Backend
  9. 9. Ekspertapplikasjon for selgere
  10. 10. Web services for integrasjon med eksterne kanaler </li></ul><li>Startet 2001, på lufta 2003
  11. 11. Vedlikehold og videreutvikling
  12. 12. ~3 MLOC
  13. 13. ~10 personer p.t. </li></ul>
  14. 14. ClearCase <ul><li>Sentralisert
  15. 15. Snapshot (working copy)
  16. 16. Låsbasert </li></ul>
  17. 17. <ul><li>Distribuert
  18. 18. Snapshot (ikke changesets)
  19. 19. Lokale brancher </li></ul>
  20. 20. Sentralisert vs Distribuert CVS, Subversion, ClearCase, Perforce, ... Git, Mercurial, Bazaar, BitKeeper, ...
  21. 21. Hvorfor bytte fra ClearCase?
  22. 22. Hvorfor ?
  23. 23. Alternativer?
  24. 24. Overgang til nytt VCS <ul><li>Migrering
  25. 25. Læringskurve
  26. 26. Verktøystøtte
  27. 27. Tegnsett
  28. 28. Rename-tracking
  29. 29. Binære filer </li></ul>
  30. 30. Migrering <ul><li>Hvor mye historikk skal man ta med? </li><ul><li>Alt?
  31. 31. Ingenting?
  32. 32. Kun trunk / master branch?
  33. 33. Kun utvalgte versjoner (leveranser)? </li></ul></ul>
  34. 34. Migrering <ul><li>Konvertering </li><ul><li>Verktøy?
  35. 35. Manuell prosess? </li></ul><li>Migreringsfase </li><ul><li>Ikke alle over på en gang
  36. 36. Vedlikehold av gamle brancher
  37. 37. Synkronisering av endringer </li></ul></ul>
  38. 38. Vår løsning <ul><li>Git repository oppå ClearCase snapshot
  39. 39. Importerte utvalgte versjoner </li><ul><li>git add -A ; git commit -m &quot;Import av ...&quot; </li></ul></ul><ul><li>Produksjons-branch i ClearCase
  40. 40. Manuell synkronisering av bugfikser til Git </li></ul>
  41. 41. Læringskurve <ul><li>Nytt og ukjent konsept
  42. 42. Git er kraftig </li></ul>
  43. 43. Start i det små <ul><li>Trenger ikke å bruke alt!
  44. 44. Eller gjøre ting veldig annerledes enn før... </li></ul>
  45. 45. Start i det små <ul><li>Synkroniser med sentral server
  46. 46. Bruk branches på samme måte som før
  47. 47. Kommer langt med noen enkle kommandoer </li><ul><li>add, commit, push, pull, (status, log, diff) </li></ul></ul>
  48. 48. Arbeidsflyt <ul><li>git pull
  49. 49. editer
  50. 50. git add
  51. 51. git commit
  52. 52. git push </li></ul><ul><li>svn update
  53. 53. editer </li></ul><ul><li>svn commit </li></ul>
  54. 54. Arbeidsflyt <ul><li>git pull
  55. 55. editer
  56. 56. git add
  57. 57. git commit
  58. 58. git push
  59. 59. git pull
  60. 60. merge
  61. 61. git commit -a
  62. 62. git push </li></ul><ul><li>svn update
  63. 63. editer </li></ul><ul><li>svn commit
  64. 64. svn update
  65. 65. merge </li></ul><ul><li>svn commit </li></ul>
  66. 66. Raskere <ul><li>Switch LISA 50 -> LISA 51 (~3.700 filer) </li></ul>
  67. 67. Raskere <ul><li>Switch LISA 50 -> LISA 51 (~3.700 filer) </li></ul>
  68. 68. Raskere <ul><li>Switch LISA 50 -> LISA 51 (~3.700 filer) </li></ul>
  69. 69. Raskere <ul><li>Switch LISA 50 -> LISA 51 (~3.700 filer) </li></ul>
  70. 70. Raskere <ul><li>Switch LISA 51i09 -> LISA 51i10 (12 filer) </li></ul>
  71. 71. Raskere <ul><li>Oppdatere working copy (update view / pull) </li></ul>
  72. 72. Raskere <ul><li>Åpne fil (låse)
  73. 73. add, commit
  74. 74. branch, merge
  75. 75. log, diff, ...
  76. 76. For ikke å snakke om Eclipse ... </li></ul>
  77. 77. Verktøystøtte <ul><li>Forskjellige Git-distribusjoner og verktøy </li><ul><li>Git, Msysgit, Cygwin
  78. 78. GUI-plugins til Explorer, Nautilus, osv. </li></ul><li>Fungerer stort sett om hverandre
  79. 79. Noen unntak </li><ul><li>CR vs LF vs CRLF – Fingra av fatet!
  80. 80. Tegnsett </li></ul></ul>
  81. 81. Verktøystøtte <ul><li>IDE-plugins </li><ul><li>Så som så (i hvert fall i Eclipse)
  82. 82. Bruker heller kommandolinje </li></ul><li>Gitosis </li><ul><li>Hosting av git prosjekter </li></ul><li>Integrasjon med Hudson, JIRA, osv. </li></ul>
  83. 83. Tegnsett <ul><li>Norske tegn i commit-meldinger </li><ul><li>Tja... </li></ul><li>Norske tegn i filnavn </li><ul><li>Styr unna! </li></ul><li>Norske tegn i kode (og kommentarer) </li><ul><li>Git OK
  84. 84. Pass på eksterne merge-verktøy! </li><ul><li>kdiff3 i Ubuntu slukte ukjente UTF-8 tegn </li></ul></ul></ul>
  85. 85. Rename tracking <ul><li>Git lagrer ikke info om rename/move
  86. 86. Heuristiske metoder </li><ul><li>Fungerer veldig bra! </li></ul><li>&quot;gotchas&quot; </li><ul><li>Kommandolinjeparametere
  87. 87. Støttes ikke i alle kontekster (f.eks. gitk )
  88. 88. Default begrenset til 100 renames – O(n²) </li><ul><li>diff.renameLimit = 0 </li></ul></ul></ul>
  89. 89. Binære filer <ul><li>Dårlig med merge-støtte for binære filer </li></ul><ul><li>Låsing vs. merging
  90. 90. Bedre å holde dokumenter utenfor?
  91. 91. Ikke vært problem i praksis </li></ul>
  92. 92. Hva fikk vi så igjen for dette?
  93. 93. Platform
  94. 94. Hvorfor er ytelse så viktig?
  95. 95. Kraftigere <ul><li>Atomiske commits
  96. 96. Branch og merge som virker! </li><ul><li>Lokale brancher </li></ul><li>Jobbe offline </li></ul>
  97. 97. Billigere <ul><li>Open source og gratis
  98. 98. Mer effektivt </li></ul>
  99. 99. Best practice <ul><li>Start i det små
  100. 100. Ha en Git-ekspert på teamet
  101. 101. Commit tidlig, commit ofte
  102. 102. Topic branch </li><ul><li>Nye features, bugfikser, eksperimenter, osv.
  103. 103. Branche ut fra hvor? </li></ul><li>Merge ofte </li></ul>
  104. 104. Tips & triks <ul><li>git status
  105. 105. git stash
  106. 106. git fetch
  107. 107. git rebase origin/master
  108. 108. git cherry-pick
  109. 109. git rebase -i
  110. 110. git add -p </li></ul>
  111. 111. Hvorfor ?
  112. 112. Spørsmål? fvr@knowit.no / @fredriv
  113. 113. Ressurser <ul><li>Git Community Book – http://book.git-scm.com/
  114. 114. Pro Git – http://progit.org/book/
  115. 115. Github intro to Git – http://learn.github.com/p/intro.html
  116. 116. Git reference – http://gitref.org/
  117. 117. 25 Tips for Intermediate Git Users </li><ul><li>http://andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users </li></ul><li>Recommended Git Workflows – http://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html
  118. 118. ClearCase Globally, Git Locally – http://genaud.net/2008/08/clearcase-globally-git-locally/
  119. 119. Git Backstage, Under the Covers and on the Down Low </li><ul><li>http://www.littleredbat.net/mk/blog/story/63/ </li></ul><li>http://martinfowler.com/bliki/FeatureBranch.html </li></ul>

×