subversion workshop

30
SVN workshop By Tim de Pater / @trafex

Upload: trafex

Post on 25-May-2015

797 views

Category:

Technology


0 download

DESCRIPTION

A dutch presentation about the basics of subversion on the commandline.

TRANSCRIPT

Page 1: Subversion workshop

SVN workshop

By Tim de Pater / @trafex

Page 2: Subversion workshop

Index

• Basics• Conflicts• Branching• Merging• Release management • Best practice

Page 3: Subversion workshop

Basics

svn checkout

$ svn checkout http://repos.enrise.com/svn/project/branches/release-2.1 projectfolder A    projectfolder/filesChecked out revision 14.

Page 4: Subversion workshop

Basics

svn info

Path: .URL: http://repos.enrise.com/svn/4106-Nederlands%20dagblad/trunkRepository Root: http://repos.enrise.com/svnRepository UUID: 317ccd4c-6b34-0410-924f-f0004c2b7d44Revision: 12664Node Kind: directorySchedule: normalLast Changed Author: tpaterLast Changed Rev: 12664Last Changed Date: 2011-03-11 11:25:13 +0100 (Fri, 11 Mar 2011)

Page 5: Subversion workshop

Basics

svn status      'A' Added      'C' Conflicted      'D' Deleted      'I' Ignored      'M' Modified      'R' Replaced      'X' an unversioned directory created by an externals definition      '?' item is not under version control      '!' item is missing (removed by non-svn command) or incomplete      '~' versioned item obstructed by some item of a different kind

Page 6: Subversion workshop

Basics

svn update

$ svn upU    grocerylist.txtUpdated to revision 14.

Page 7: Subversion workshop

Basics

svn add

$ svn add index.php A         index.php

Page 8: Subversion workshop

Basics

svn commit

$ svn commit -m 'Commit melding' Sending        src/templates/admin/newspapermanagement.phpTransmitting file data .Committed revision 12854.

Page 9: Subversion workshop

Basics

svn revert

$ svn revert public/index.php Reverted 'public/index.php'

Page 10: Subversion workshop

Basics

svn mvsvn rmsvn cp

svn mkdirsvn ls

svn help <command>

Page 11: Subversion workshop

Conflicts

 $ svn upConflict discovered in 'grocery.txt'.Select: (p) postpone, (df) diff-full,(e) edit, (mc) mine-conflict,(tc) theirs-conflict, (s) show all options: 

Page 12: Subversion workshop

Conflicts

Ontstaan doordat 2 mensen dezelfde regel bewerken

Page 13: Subversion workshop

Conflicts

grocery.txt

Milk<<<<<<< .mineHot Dog=======Cheese>>>>>>> .r12Juice

MilkHot DogJuice

svn up

Page 14: Subversion workshop

Resolving conflicts - option 1

Versie van collega accepteren

$ svn revert grocery.txtReverted 'grocery.txt'

Page 15: Subversion workshop

Resolving conflicts - option 2

Eigen versie behouden• grocery.txt – orgineel met markeringen• grocery.txt.mine – eigen versie• grocery.txt.r5 – orgineel die je bewerkt hebt• grocery.txt.r6 – nieuwste versie die je collega bewerkt heeft

$ cp grocery.txt.mine grocery.txt$ svn resolved grocery.txt Resolved conflicted state of 'grocery.txt'edition

Page 16: Subversion workshop

Resolving conflicts - option 3

Handmatig mergen

Conflict oplossen optie 2Milk<<<<<<< .mineHot Dog=======Cheese>>>>>>> .r12Juice

MilkHot DogCheeseJuice

$ svn resolved grocery.txt

Page 17: Subversion workshop

Conflict your neighbour

• Checkout http://svnworkshop.enrise.com/svn/TestProject/trunk

• Zorg dat je een conflict krijgt met je buurman • Los het conflict handmatig op

Page 18: Subversion workshop

Branching

Page 19: Subversion workshop

Branching

$ svn cp http://svnworkshop.enrise.com/svn/TestProject/trunk \http://svnworkshop.enrise.com/svn/TestProject/branches/feat-guestbook \-m 'Created branch to implement guestbook feature' Committed revision 13.

svn cp

Page 20: Subversion workshop

Branching

$ svn sw http://svnworkshop.enrise.com/svn/TestProject/branches/feat-guestbook At revision 13.

svn switch

Page 21: Subversion workshop

Branch pattern

Page 22: Subversion workshop

Merging

We willen feat-digitaledition mergen met release-2.1 branch.1.Vind het revisie nummer waarin de feature branch

is aangemaakt• Vind het revisie nummer van de laatste wijziging

in de feature branch• Voer de merge uit• Commit

Page 23: Subversion workshop

Merging

Vind het revisie nummer waarin de rfc branch is aangemaakt

$ svn log --stop-on-copy http://svnworkshop.enrise.com/svn/TestProject/feat-digitaledition<...scroll down...> -------------------------------------------------------r13 | tpater | 2011-03-28 12:20:38 +0200 (Mon, 28 Mar 2011) | 1 line

Created branch to implement digitaledition-------------------------------------------------------$

Page 24: Subversion workshop

Merging

Vind het revisie nummer van de laatste wijziging in de rfc branch

$ svn log -l 1 http://svnworkshop.enrise.com/svn/TestProject/feat-digitaledition-----------------------------------------------------r15 | tpater | 2011-03-28 16:55:53 +0200 (Mon, 28 Mar 2011) | 2 linesImplemented crap

Page 25: Subversion workshop

Merging

svn merge

$ svn merge -r 13:15 http://svnworkshop.enrise.com/svn/TestProject/branches/feat-digitaledition--- Merging r14 through r15 into '.':A    test.txt

$ svn ci -m 'Merged with feat-digitaledition'Sending        .Adding         test.txt

Committed revision 16.

Page 26: Subversion workshop

Merging your ass off

• Mergeo NederlandsDagbladXX/branches/release-2.1o NederlandsDagbladXX/branches/feat-digitaledition

• Repo: http://svnworkshop.enrise.com/svn

Page 27: Subversion workshop

Release management

• Mantis• Deploy • Versie's• Changelogs

Page 28: Subversion workshop

Best practice

1. Committen doe je per rfc/bugfix/wijziging 2. Zorg dat het aantal wijzigingen per commit klein blijven 3. Commit alleen werkende code4. Geef in je commentaar aan WAAROM je een bepaalde wijziging

hebt doorgevoerd.5. Geef in het commentaar niet aan om welke bestanden het gaat,

deze gegevens zijn beschikbaar.

Page 29: Subversion workshop

• http://wiki.4worx.com/index.php/Svn_guidelines•  http://www.slideshare.net/lornajane/practical-php-for-svn-

developers• http://www.makebetterthings.com/blogs/php/introduction-to-

version-control-system/

URL's

Page 30: Subversion workshop

Vragen?