Moderne open source versionsstyring



Relaterede dokumenter
Introduktion til versionsstyring

Git- og Composer-kursus

Thomas Vedel, Vedel Consult DAPUG erfamøde 10. november Installation af SubVersion (svn)

Applikations Virtualisering. Anders Keis Hansen

Umbraco installationsvejledning

Windows system administration 1

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

FairSSL Fair priser fair support

Installation af Wordpress

Installation af Oracle 10g Release 2 database

GUIDE TIL CLOUD DRIVE

NETVÆRKSBRUGSANVISNING

Hosted CRM Outlook client connector setup guide. Date: Version: 1. Author: anb. Target Level: Customer. Target Audience: End User

WINDCHILL SOM BRUGER. Birgitte Bredahl Sørensen, Econocap. PTC/User 2017

Ruko SmartAir. Updater installation

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

VDI Manual v. 5 Indhold

01. feb, Indhold

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free

Citrix Online Plugin Client Install Integra

Opsætning af Outlook til Hosted Exchange 2003

Indholdsfortegnelse. Side 2 af 20

SSSystems.local. Netværk. Sikkerhed. Webserver

Contents. John Have Jensen Mercantec 2011

Sådan installeres og teste WordPress på en lokal server

FairSSL Fair priser fair support

GUIDE TIL CLOUD DRIVE

Oprettelse af Titelblok i Capture og Capture CIS

Opsætning af Outlook til Hosted Exchange 2007

FairSSL Fair priser fair support

Hurtig Start Guide. Wireless NVR System Connection Reolink

Velkommen til GeekNight

Vejledning til brug af Citrix platform hos DIN Forsyning

Hurtig Start Guide 1

Standard funktionerne i Webshop.io Content Management System (CMS) er mange, i skemaet nedenfor kan du se funktioner beskrevet kort.

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Spørgsmål: Hvordan kan jeg sætte routeren op uden brug af CD en? Svar: Routeren kan sættes op manuelt iht. step by step guiden nedenfor!

Introduktion til brugen af Blackboards Content System

MOC On-Demand Identity with Windows Server 2016 [20742]

Indhold. Download driver Find version af Windows Hent drivers til Windows Udpak driver... 6

UPLOAD. Af Database og Website til Skolens Server

High-Performance Data Mining med SAS Enterprise Miner 14.1

Sådan logger du ind... 2 Hvilke mapper kan du tilgå... 3 Visning af eksempel af en fil... 5 Sådan deler du en fil... 7 Se hvad du deler med andre...

AVR MP Ingeniørhøjskolen i Århus Michael Kaalund

Yderligere information om IRM Her kan du finde en online demo af programmet, brugervejledninger, whitepapers, teknisk information mv.

Installationsguide - Windows

QUICK MANUAL BRUGERNAVN: ADMIN PASSWORD: APP: SMARTEYES PRO PORT: SecVision - Quick Manual v1.0

Innovative Business Software A/S

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

Quickguide Tele- og webkonference via UC

Grundopsætning af router.

Præsentation af BSK regionens identity and access management platform

Advanced Word Template Brugermanual

Opsætning af klient til Hosted CRM

MobileStatus Server Installation og konfigurationsvejledning

Installationsguide IBM Tivoli Storage Manager for Databases Data Protection for Microsoft SQL Server

Integrated Total Facility Management for Real Estate, Infrastructure & Facility Management

DAXIF# - Delegate Automated Xrm Installation Framework. Delegate A/S

EasyIQ ConnectAnywhere Release note

XProtect-klienter Tilgå din overvågning

Database programmerings tips

SYNOLOGY DS418j 4-bay NAS server

EasyIQ ConnectAnywhere Release note

Globeteam A/S. Windows Server Globeteam Virumgårdsvej 17A 2830 Virum. SolutionsDay 2012, den 27. September, Brøndby Stadion

Nyheder fra Adobe - og lidt til...

TDC Erhverv Cloud Storage. Brugermanual. EMC² CIFS-ECS Ver August 2016

Micusto Cloud v2. Micusto Cloud er et fleksibelt, brugervenligt cloudsystem til CMS er, webshop- og intranetsystemer.

Fjernopkobling. - Vejledning i førstegangs fjernopkobling via en IKKE. Banedanmark pc

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

BEC Selfservice (Internt)

Netværksværktøj til BUPL s medlemmer. Mikkel Flindt Heisterberg, IntraVision Brian Andersen, BUPL

Objektorienterede metoder

OrCAD Capture TCL IDE med Eclipse

TCP & UDP. - de transportansvarlige på lag 4. Netteknik 1

Brugervejledning - trin for trin til VIRMIK med PathXL based on contents Note: Eksamen SMEA0615E er brugt som eksempel

Kald af PingService via SOAPUI

Introduktion OBS: Forberedelse

Transkript:

Moderne open source versionsstyring Svenne Krap, 2009

Om mig * Uddannet Cand.Merc på CBS (2006) * Arbejdet med linux sysadmin & udvikling siden '99 * Formand i DKUUG * Bestyrelsesmedlem i DIFO * Selvstændig konsulent (and always looking for gigs) * svenne@krap.dk

Agenda DEL 1: Hvorfor versionsstyring Versionsstyringens historie DEL 2: Forskellige typer versionsstyring Nuværende systemer DEL 3: Git Sådan kommer du i gang

DEL 1: Hvorfor versionsstyring

Hvorfor versionsstyring Vi har mange filer, som vi ønsker at have historik på. Har du nogensinde haft filer kaldet: somedocument 1.odt somedocument 2.odt somedocument 2009 07 18.odt index2.html indexny.html Så kender du problemet!

Hvorfor versionsstyring Et versionsstyringssystem (version control system = vcs) er et stykke software, der løser dette problem for os. Nu kan vi bede datamaten om at holde styr på de mange versioner af vores fil(er). men mere herom senere...

DEL 1: verssionsstyringens historie

Historien The early software configuration management process was manual [...] The "checkout" process often consisted of writing the developer's name on a paper or blackboard next to the module name. "Checkin" was accomplished by erasing the name. http://www.daveeaton.com/scm/cmfaq.html#gqhist

Historien den tidlige del Sene 1950'er / tidlige 1960'er: (mainframe) CDC UPDATE IBM IEB_UPDATE Circa 1972: diff 1972: SCCS (enkelt fil niveau) 1980'erne: RCS (stadigvæk enkeltfiler) 1980 1985: patch 1986: cvs

Historien den moderne del 2000: Subversion (=bedre CVS) 2001: arch (afdødt) (første distribuerede)????: monotone 2002: darcs 2005: mercurial (hg) 2005: git 2007: bazaar (bzr)

DEL 2: forskellige typer versionsstyring

Model Stand alone (sccs, rcs) forældet Man arbejder lokalt Client Server (cvs, svn) Central repo har den officielle version Ingen arbejde uden adgang til repos Distributed (arch,monotone,darcs,hg,bzr,git) Alle repos er identiske (teknisk), nogle kan have social magt (linus' kernel træ fx.) Offline nemt, da man har fuld repo

Arbejdsform Locking checkout inden rettelser Filen låst for andre Efter rettelser checkin (emulerer tavlen fra 1940'erne) Merging Ingen låsning Simultane rettelser skal merges Normalt forsøges auto merge, ellers manuelt

Lagring Changeset Set af ændringer fra version n til n+1 Snapshot Sæt af filer på et givet tidspunkt (fx. n)

Addressering Path addressable Filer gemmes som /somedir/somedir2/somefile Renames kræver explicit support (typisk uuid) Content addressable (for snapshots) Der laves en hash af data Data gemmes på baggrund af hash Filnavn mm. betragtes som meta info Renames induceres (git)

DEL 2: nuværende systemer

Subversion Client/Server system Better CVS Begyndt 2000, self hosted 2001 Atomic commits rename/copy/move support http (webdav+deltav) kommunikation svn / svn+ssh Supporteret i mange IDE'er Multiplatform

Mercurial (hg) Distribueret Python, multiplatform Revisioner identificeret ved SHA1 HTTP eller SSH kommunikation Sourcecode hosting: savannah, sf.net, googlecode Bruges af: Mozilla,OpenJDK,Xen,ABP,Dovecot, mutt mf.

Bazaar (bzr) Distribueret Sponsoret af Canonical Python, multiplatform Revisioner identificeret ved int (1,2,3,..) Sourcecode hosting: savannah, sf.net, launchpad Bruges af: ubuntu, mailman, mysql

DEL 3: GIT

git Distribueret sponsoreret af Linus & Linux C & shell scripting (dog er shell scripting på vej ud). POSIX, lidt besvær ved Windows Revisioner via sha1 Sourcecode hosting: github, gitorious, savannah, sf.net Projekter: kernel, Perl, Gnome,Samba,Xorg,Qt, OLTP, VLC,Wine,ROR,Android, ffmpeg,rsync, fedora, x264 m. m. f

Git workflows Mange forskellige workflows: Billeder fra http://whygitisbetterthanx.com

Git storage datatyper blob (fildata, ingen metadata), identificeret ved sha1 tree (bibliotek) indeholder filnavn,bits (x), og sha1. Er selv identificeret ved sha1. Et tree kan indeholde andre trees (subdirs) commit indeholder, root tree, timestamp, log message, parents tag indeholder sha1 på andet, og metadata (fx. signatur)

Git storagetyper eksempel

informationsflow

Porcelain & Plumbing To typer funktionalitet i git: * porcelain = funktionalitet beregnet til slutburgeren * plumbing = funktionalitet beregnet som underleverandør til andet funktionalitet

Hands-on Git er i rivende udvikling. Kør git --version Current er 1.6.3.3

Initial setup git config --global user.name "Svenne Krap" git config --global user.email "svenne@krap.dk" git config --global user.signingkey 0x9BEF4442 git config --global color.ui auto

Sole developer Setup: mkdir gulliver cd gulliver git init $EDITOR.gitignore git add.gitignore git commit -m added gitignore

Sole developer Working $EDITOR part1.txt... git add. git commit -m added part1 Checking differences $EDITOR <files> git status git diff <file>

tip git add -p <file> Lader brugeren vælge chunk for chunk om ændringen skal tilføjes til index (og dermed klargøres til commit).

Fjern fil fra index git reset <fil> Undo, undo, undo Fjern ændringer i workdir git checkout -- <fil> git reset --hard Undo commit git revert <sha1>/head Tilføj en glemt fil git commit --amend

Branch & merge Lav branch git checkout -b newbranch head Se aktive branches git branch Se status af branches git show-branch Merge newbranch til head: git checkout HEAD git merge newbranch git branch -d newbranch

Gem ændringer Man kan kun ændre branch når WD er clean. Man kan dog stashe uncommitted ændringer. git stash save sometext git stash list git stash apply

Sole dev med public repo På host: mkdir myrepo && cd myrepo git init --bare På client: git remote add --mirror publrepo ssh://...... git commit... git push remote

Flere udviklere Setup git remote add publicrepo git remote add friendrepo... Arbejde... git commit git push publicrepo git pull friendrepo (resolve conflicts) $EDITOR files git push publicrepo

Jævnligt bør man køre: git fsck git repack git gc Repo vedligehold

Internet dæmon Simpel: git daemon Typisk read-only access til repos, hvor filen git-daemon-export-ok findes. Avanceret: Værktøjet gitosis kan styre read/write adgang på et ssh-key niveau med kun een shelladgang.

Serve r/o by HTTP Kræver ikke andet end statisk http-dæmon På server: cd proj.git git --bare update-server-info chmod a+x hooks/post-update Post-update skal måske omdøbes fra postupdate.sample

Hosting ude I byen http://www.github.com Fancy Web-2.0 web-baseret service. Gratis for open source projekter Ellers http://github.com/plans

Lær mere man gittutorial man gittutorial-2 man gitworkflows man git-<command> http://git-scm.com/ http://book.git-scm.com/ + Google