Download presentation
Presentation is loading. Please wait.
Published byMabel Banks Modified over 9 years ago
1
Version Control Systems and the Subversion Kloimstein Dominik
2
Overview Basic information about VCS/Subversion Standard commands of Subversion Branching and Merging
3
What is a Version Control System? Software xyz Version 2.0.12 Standard software update process In general version 2.0.11 is deleted – use 2.0.12
4
What is a Version Control System? Same update process with arbitrary files Also first textfile will be overriden Textfile x Last change: 10.12.2010 Textfile x Last change: 10.10.2010
5
What is a Version Control System? Textfile x Last change: 10.12.2010 Textfile x Last change: 10.10.2010 User A
6
What is a Version Control System? Manages all versions of files or directories in the system Subversion is a open source VCS
7
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
8
What are Revisions?
9
File sharing problem
10
Lock-modify-unlock solution
11
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
12
File sharing problem Copy-modify-merge solution
13
File sharing problem Copy-modify-merge solution
14
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
15
Repository
16
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
17
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
18
Commands The most often used commands are: – svn add URL – svn delete URL – svn copy URL1 URL2 – svn move URL1 URL2 – svn mkdir URL
19
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.
20
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
21
Commands update – submit the whole working directory to the server $ svn update Updating '.': U button.c Updated to revision 58.
22
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.
23
Commands list – show files in the given directory $ svn list http://svn.example.com/repo/some/project bar.c foo.c subdir/
24
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
25
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
26
Commands diff – show a overview of all changes in detail $ svn diff Index: bar.c =================================================================== --- bar.c (revision 3) +++ bar.c (working copy) +#include + +#include int main(void) { - printf("Sixty-four slices of American Cheese...\n"); + printf("Sixty-five slices of American Cheese...\n"); return 0; } Index: README...
27
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 ------------------------------------------------------------------------
28
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. ------------------------------------------------------------------------
29
Commands cat – return the content of a file $ cat sandwich.txt Top piece of bread Salami Mortadella Prosciutto
30
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
31
Commands $ svn cat -r 2 sandwich.txt Top piece of bread Salad Mortadella Prosciutto
32
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)
33
Branching and Merging
34
Tag – example $ svn copy http://svn.example.com/repos/calc/trunk \ http://svn.example.com/repos/calc/tags/release-1.0 \ Committed revision 902.
35
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.
36
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 $
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.