YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Version Control Systems and the Subversion Kloimstein Dominik.

Version Control Systems and the Subversion

Kloimstein Dominik

Page 2: Version Control Systems and the Subversion Kloimstein Dominik.

Overview

• Basic information about VCS/Subversion

• Standard commands of Subversion

• Branching and Merging

Page 3: Version Control Systems and the Subversion Kloimstein Dominik.

What is a Version Control System?

Software xyzVersion 2.0.12

• Standard software update process

• In general version 2.0.11 is deleted – use 2.0.12

Page 4: Version Control Systems and the Subversion Kloimstein Dominik.

What is a Version Control System?

• Same update process with arbitrary files

• Also first textfile will be overriden

Textfile xLast change: 10.12.2010

Textfile xLast change: 10.10.2010

Page 5: Version Control Systems and the Subversion Kloimstein Dominik.

What is a Version Control System?

Textfile xLast change: 10.12.2010

Textfile xLast change: 10.10.2010

User A

Page 6: Version Control Systems and the Subversion Kloimstein Dominik.

What is a Version Control System?

• Manages all versions of files or directories in the system

• Subversion is a open source VCS

Page 7: Version Control Systems and the Subversion Kloimstein Dominik.

What are Revisions?

• Are like version numbers of files or directories

• Each change of a file increases the revision number by 1

• Subversion gives the whole filesystem a number

• Such a filesystem tree is called repository

Page 8: Version Control Systems and the Subversion Kloimstein Dominik.

What are Revisions?

Page 9: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

Page 10: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

• Lock-modify-unlock solution

Page 11: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

• Problems are:– Administration (enough rights to lock)– Performance (one user must wait)– False sense of security• Harry works on File A• Sally works on File B• A and B are depend on each other

Page 12: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

• Copy-modify-merge solution

Page 13: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

• Copy-modify-merge solution

Page 14: Version Control Systems and the Subversion Kloimstein Dominik.

File sharing problem

• Subversion use the copy-modify-merge method• No waiting• Problem of so called conflicts– Same problem with different results– Overlaping of changes– Solution: Communication (direct talk or put a flag)

• Subversion can also lock files– Necessary for sound or graphic files

Page 15: Version Control Systems and the Subversion Kloimstein Dominik.

Repository

Page 16: Version Control Systems and the Subversion Kloimstein Dominik.

How to work with Subversion

• svn [command] [URL]– $ svn checkout http://svn.example.com/repos/calc

• URL-forms:– file:/// - direct local access– http:// - access to a Apache server– https:// - same as http with SSL encryption– svn:// -access to a Subversion server– svn+ssh:// - same as svn through SSH tunnel

Page 17: Version Control Systems and the Subversion Kloimstein Dominik.

How to work with Subversion

• file:///C:/svn/repos• file:///svn/repos• file:///localhost/svn/repos

• http://svn.example.com/repos• http://svn.example.com:9834/repos

Page 18: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• The most often used commands are:– svn add URL– svn delete URL– svn copy URL1 URL2– svn move URL1 URL2– svn mkdir URL

Page 19: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• checkout – copy files to the local working directory

$ svn checkout http://svn.example.com/repos/calc

A calc/Makefile

A calc/integer.c

A calc/button.c

Checked out revision 1.

Page 20: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• commit – submit one or several files to the server

$ svn commit button.c

Sending button.c

Transmitting file data .

Committed revision 57.

• Command commit maybe don‘t change files – solution command update

Page 21: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• update – submit the whole working directory to the server

$ svn update

Updating '.':

U button.c

Updated to revision 58.

Page 22: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• import – import a file or directory to the repository

$ svn import /path/to/mytree \

http://svn.example.com/repo/some/project

Adding mytree/foo.c

Adding mytree/bar.c

Adding mytree/subdir

Adding mytree/subdir/quux.h

Committed revision 59.

Page 23: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• list – show files in the given directory$ svn list http://svn.example.com/repo/some/project

bar.c

foo.c

subdir/

Page 24: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• status – show a overview of all changes– ? item – This item is not under version control– A item – Scheduled for addition to the repository– D item – Scheduled for deleting this item in the

repository– M item – The content in item is modified

$ svn status

? scratch.c

A stuff/loot

A stuff/loot/new.c

D stuff/old.c

M bar.c

Page 25: Version Control Systems and the Subversion Kloimstein Dominik.

Commands$ svn status stuff/fish.c

D stuff/fish.c

$ svn status -v

M 44 23 sally README

44 30 sally INSTALL

M 44 20 harry bar.c

44 18 ira stuff

44 35 harry stuff/trout.c

D 44 19 ira stuff/fish.c

44 21 sally stuff/things

A 0 ? ? stuff/things/bloo.h

44 36 harry stuff/things/gloo.c

Page 26: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• diff – show a overview of all changes in detail$ svn diff

Index: bar.c

===================================================================

--- bar.c (revision 3)

+++ bar.c (working copy)

+#include <sys/types.h>

+#include <sys/stat.h>

+#include <unistd.h>

+

+#include <stdio.h>

int main(void) {

- printf("Sixty-four slices of American Cheese...\n");

+ printf("Sixty-five slices of American Cheese...\n");

return 0;

}

Index: README

...

Page 27: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• log – show a time based overview of all changes in detail

$ svn log

------------------------------------------------------------------------

r3 | sally | 2008-05-15 23:09:28 -0500 (Thu, 15 May 2008) | 1 line

Added include lines and corrected # of cheese slices.

------------------------------------------------------------------------

r2 | harry | 2008-05-14 18:43:15 -0500 (Wed, 14 May 2008) | 1 line

Added main() methods.

------------------------------------------------------------------------

r1 | sally | 2008-05-10 19:50:31 -0500 (Sat, 10 May 2008) | 1 line

Initial import

------------------------------------------------------------------------

Page 28: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

$ svn log -r 8 -v

------------------------------------------------------------------------

r8 | sally | 2008-05-21 13:19:25 -0500 (Wed, 21 May 2008) | 1 line

Changed paths:

M /trunk/code/foo.c

M /trunk/code/bar.h

A /trunk/code/doc/README

Frozzled the sub-space winch.

------------------------------------------------------------------------

Page 29: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

• cat – return the content of a file$ cat sandwich.txt

Top piece of bread

Salami

Mortadella

Prosciutto

Page 30: Version Control Systems and the Subversion Kloimstein Dominik.

Commands• revert – delete changes and start from the beginning

$ cat sandwich.txt

Top piece of bread

Salami

Mortadella

Prosciutto

Now change Salami to Salad.

$ cat sandwich.txt

Top piece of bread

Salad

Mortadella

Prosciutto

$ svn revert sandwich.txt

Reverted 'sandwich.txt‘

$ cat sandwich.txt

Top piece of bread

Salami

Mortadella

Prosciutto

Page 31: Version Control Systems and the Subversion Kloimstein Dominik.

Commands

$ svn cat -r 2 sandwich.txt

Top piece of bread

Salad

Mortadella

Prosciutto

Page 32: Version Control Systems and the Subversion Kloimstein Dominik.

Branching and Merging

• Trunc – is the main directory• Branch – is a copy of a file or directory of the

trunc section with small differences• Tag – is a kind of „snapshot“ of a revision• Merge – is the combining of two branches (or

to combine the branch back with the trunc)

Page 33: Version Control Systems and the Subversion Kloimstein Dominik.

Branching and Merging

Page 34: Version Control Systems and the Subversion Kloimstein Dominik.

Branching and Merging

• Tag – example$ svn copy http://svn.example.com/repos/calc/trunk \

http://svn.example.com/repos/calc/tags/release-1.0 \

Committed revision 902.

Page 35: Version Control Systems and the Subversion Kloimstein Dominik.

Branching and Merging

• Merge – example$ svn merge --reintegrate ^/calc/branches/my-calc-branch

--- Merging differences between repository URLs into '.':

U button.c

U integer.c

U Makefile

--- Recording mergeinfo for merge between repository URLs into '.':

U .

$ svn commit -m "Merge my-calc-branch back into trunk!"

Sending .

Sending button.c

Sending integer.c

Sending Makefile

Transmitting file data ..

Committed revision 391.

Page 36: Version Control Systems and the Subversion Kloimstein Dominik.

Branching and Merging

# Which changes have already been merged from trunk to branch?

$ svn mergeinfo ^/calc/trunk

r341

r342

r343

r388

r389

r390

# Which changes are still eligible to merge from trunk to branch?

$ svn mergeinfo ^/calc/trunk --show-revs eligible

r391

r392

r393

r394

r395

$


Related Documents