Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Moderne Versionskontrolle mit GIT

No description
by

Bernd Ledig

on 5 November 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Moderne Versionskontrolle mit GIT

? das moderne SW-Versionskontrollsytem Bernd Ledig

Dresden 2012 bietet neue Möglichkeiten im täglichen Arbeitsprozess GIT - Geschichte April 2005
Linus Torvalds beginnt die Entwicklung
Motivation:
bisheriges VCS (Bitkeeper) wird gebührenpflichtig

Juni 2005
- Erste stabile Version
- Linux Kernel migriert zu GIT

... viele Weiterentwicklungen (Core, GUIs etc.)

heute Version 1.8.0 vom 21.10.2012 der SW - Versionskontrollsysteme (VCS) Evolution CVS Centralized Distributed Herausragende Merkmale -- fast-version-control sehr, sehr schnell
automatische Erkennung von Umbenennungen und Verschieben
Metadaten in nur einem Verzeichnis
effizientes, schnelles Branching mit Gedächtnis
Staging- und Stash-Areas (Zwischenspeicher)
garantierte Datenintegrität
lokales Arbeiten
Cherry-Picking
gute Tool- und IDE-Unterstützung
OpenSource RCS (Merge einzelner Commits zw. Branchen) -- fast-version-control Geschichte Merkmale Einordnung VCS - Statistik Basierend auf Opensource-Projekten 2012* * Quelle: www.ohloh.net Praxis -- fast-version-control Praxis Centralized vs. Distributed Vergleich der Arbeitsprinzipien Server Client Client Client =
Server Arbeitsabläufe Arbeitsabläufe -- fast-version-control Tools -- fast-version-control Git-Gui, Gitk - Linux/MacOS
(distributed with Git)

Gitextension - Win (enthält Git)
TortoiseGit (Win)
SmartGit* - Java (Win / Linux / MacOS)
IDE-Integration in
Eclipse, Netbeans
alle JetBrains-IDEs* (IntellJ, Rubymine, ...)
... Tools Mit Web-Gui:
Gitblit
Gitlab
Atlassian Stash*

ohne Web-Gui:
Gitolite
Gitosis (deprecated) Migration -- fast-version-control Migration Fragen ? git init
# opt. edit ".gitignores"
git add .
git commit -m 'first commit' Gitify a existing project git clone git@...otto.de:lava.git
cd lava
# edit something
git commit -a -m 'changes'
git push Work with existing GIT project git checkout -b my-new-branch
# edit something
git commit -a -m 'changes'
git checkout master
git merge my-new-branch Work on new branch Basic Workflow -- fast-version-control Centralized Workflow -- fast-version-control Integration-Manager Workflow -- fast-version-control Dictator & Lieutenants Workflow -- fast-version-control GIT Branch - Alleinstellungsmerkmale -- fast-version-control Das wesentlichste Git-Feature gegenüber fast allen anderen VCS ist sein Branching-Modell. Git erlaubt, nein fordert Sie auf, mit vielen lokalen völlig unabhängigen Branchen zu arbeiten. Das Erzeugen, Mergen und Löschen von diesen dauert nur Sekunden. Damit macht es jetzt wirklich Freude ... Damit macht Branching jetzt wirklich Freude für ... -- fast-version-control Reibungsloser Context-Wechsel:
Erzeuge eine neue Branch um eine neue Idee zu testen, mache einige Commits, wechsle zurück, führe einen Patch durch, wechsle zurück zum Experiment, merge die Änderungen.
Rollenbasierende Code-Zweige:
Je Rolle (Production, Development, Test) eine Branch sowie verschiedene kleine Branches für die tägliche Arbeit.
Feature Based Workflow:
Erzeuge für jedes neue Feature eine Branch, arbeite in diesen und schalte problemlos hin und her, lösche den Feature-Branch nach erfolgreichem Merge in den Master.
Einfaches Experimentieren:
Erzeuge eine Branch, probiere etwas aus, wenn es nicht funktioniert, lösche sie wieder -- niemand anderes hat je diese Branch gesehen (auch wenn inzwischen in anderen Branchen gearbeitet wurde). CVS other VCS git svn git cvs git fast-import export SubGit Oder mit nächstem Release "git init" und das alte Repository auf read-only setzen (Entschlackt das Repository). (Checksum for all operations) shared
repository developer developer developer production testsystem developer developer team
repository developer developer team
repository integration
manager blessed
repository developer developer developer developer lieutenant blessed
repository dictator lieutenant push
pull push
pull push
pull Branches -- fast-version-control http://prezi.com/user/bledig/ -- fast-version-control Fazit Folien: -- fast-version-control (.git im root des Projektes) Client =
Server Client =
Server Client =
Server Git ist aktuell das leistungsfähigste und flexibelste Versionskontrollsystem

Branches / Verteilung ermöglichen neue effektivere Abläufe / Freiheiten

Ist nicht nur auf das Thema Software-Entwicklung beschränkt Fazit Commit Workflow -- fast-version-control Committe jeden abgeschlossenen Arbeitsschritt ! denn:

Commits sind local und gehen damit sehr schnell

Einzelne Commits können per "Cherry-Pick" in andere Branchen übernommen werden GUIs -- fast-version-control * kommerziell Git Repository Management -- fast-version-control * kommerziell Remote Repository Local Repository Stage-Area Working Directory add commit push pull checkout
merge fetch network init bisher Was wir wollen: Freiheit für Entwickler! Viele Entwickler -> Viele Konflikte keine Arbeiten ohne Server zeitliche Koordination Viele Standorte und nun? Serverdefekt -> Datenintegrität? schlechte Performance Autonomie, Flexibilität, hohe Performance, mehrere Standorte, Datenintegrität Distributed Workflows Quelle: http://yegit.tumblr.com/ Branches - Motivation -- fast-version-control neues Feature einbauen

Bug im letzten Release beheben

Framework 'xyz' updaten

weiteres Feature einbauen

neue Technologie ausprobieren Das alles unabhängig voneinander und parallel !
Mit ausrollen von Zwischenständen für Tests ! VCS Trend Quelle: www.google.com/trends Branch-Workflow -- fast-version-control stage releases hotfix#123 master new-feature1 developer1 Tag R02.01.00 commit merge new branch branch removed cherry pick Tag R02.02.00 Tag R02.01.01
Full transcript