Presentation is loading. Please wait.

Presentation is loading. Please wait.

Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation www.telerik.com.

Similar presentations


Presentation on theme: "Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation www.telerik.com."— Presentation transcript:

1 Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation www.telerik.com

2 1. Systems for Software Configuration Management (SCM) 2. Version Control  Basic notions and principles 3. Versioning Models  Lock-Modify-Unlock  Copy-Modify-Merge 4. Tags and Branching

3  Version control ≈ Software Configuration Management  A discipline of the software engineering  Consists of techniques, practices and tools for their application  Mechanisms for management, control and accounting of the changes.  Defines the process of change  Keeps track of what is happening in the project  Solves conflicts in the changes

4  To control the process of software development:  Many people working on the same source code or document  Concurrent access management  Projects with many builds and releases  Tracking the evolution of the software throughout the project:  Status, progress, defects, functionality

5  Control of changes  Control over the product development and changes  Indicating the progress  Tracking of the status of the separate components and  Review and audit  Possibility of changes reviewing  Build control  Track the builds and the info about them

6  Process control  Track the development process  Team working  Easier to cooperate with the other team members

7 Source Code Models BuildScripts,FinalProduct TextScripts and Data The Final Product Requirements Implementation DesignRelease Testing Analysis Release SCM

8

9 Process-centric software configuration management Software configuration management (SCM) Version control Application life-cycle management (ALM)

10  Functionality  File versions control  Simple merge and differences search  Branching  File locking  Console and GUI clients  Well known products  CVS, Subversion  Git, Mercurial  Perforce, TFS

11  Functionality  Groups of documents control  Better merge and differences search  Work space control  Workflow control  Build and release control  Well known products  Borland StarTeam Standard  IBM Rational ClearCase  MKS Source Integrity  Serena ChangeMan Professional

12  Functionality  Process, Design and implementation templates  Requirements Control  Issue tracking  Tasks and task changes control  Permission control (clients, groups, …)  Analytical tools and progress reports  Well known products  Borland StarTeam Standard  IBM Rational ClearCase  MKS Source Integrity

13  Functionality  Close integration of processes with the tools for their usage  Design tools  Development tools  Testing tools  Project control tools  Better known products  Microsoft Visual Studio Team System Server  Borland StarTeam Enterprise Advantage  Telelogic SYNERGY

14 Managing Different Version of the Same File (Document)

15  Constantly used in software engineering  While working with documents  During software development  Changes are identified with an increment of the serial number  “version number”, for example 1.0, 2.0, 2.17  Version numbers are historically linked with the person who created them

16  Systems for version control keep a complete change log  The date and hour of every change is stored  The user who made the change is stored  Old versions can be retrieved, examined and compared  It is possible to return to an old version (revert)

17  Repository  A server that stores the files (documents)  Keeps a change log  Revision, Version  Individual version (state) of a document that is a result of multiple changes  Check-out  Retrieves a working copy of the files from the repository into a local directory  It is possible to lock the files

18  Change  A modification to a local file (document) that is under version control  Change List  A set of changes to multiple files that are going to be committed at the same time  Commit, Check-in  Applying the changes made on the work copy to the files in the repository  Automatically creates a new version  Conflicts may occur!

19  Conflict  The simultaneous change to a file by multiple users  Automatic and manual solving  Update, Get Latest Version  Checking-out the changed files from the repository to a local directory  Undo Check-out  Cancels the changes to a group of files  Restores their state from the repository

20  Merge  Combining the changes to a file simultaneously made by different users  Can be automated in most cases  Label, Tag  Labels mark with a name a group of files in a given version  For example a release  Branching  Division of the repositories in a number of separate work flows

21 Users Repository Maindevelopmentline User A User B Version B Branch Version A Branch Version A.1 Branch Check Out A B Merge D Check In C E

22 Lock-Modify-Unlock and Copy-Modify-Merge

23  Lock-Modify-Unlock:  Only one user works on a given file at a time  no conflicts  Example: Visual SourceSafe  Copy-Modify-Merge:  Users make parallel changes to their own working copies  The parallel changes are merged and the final version emerges  Examples: CVS, Subversion

24  Administrative problems:  Someone locks a given file and forgets about it  Time is lost while waiting for someone to release a file  Unneeded locking of the whole time  Different changes are not necessary in conflict  Example: Andy works on the begging of the file and Bobby works on the end

25  If a given file is concurrently modified it is necessary to merge the changes  Merging is hard!  It is not always possible to do it automatically  Responsibility and coordination between the developers is needed  Commit as fast as you can  Do not commit code that does not compile or blocks the work of the others  Add comments on commit

26  During manual merge use file comparison  There are visual comparison / merge tools:  TortoiseMerge  WinDiff  AraxisMerge  BeyondCompare  CompareIt  …

27

28

29 Repository AA Andy and Bobby check-out file A. The check-out is done without locking. They just get a local copy. Update A Update Andy Bobby

30 Repository A Аndy Andy locks file A and begins modifying it. Lock A Andy Bobby (Local Edit)

31 Repository A Andy Bobby tries to lock the file too, but she can’t. Bobby waits for Andy to finish and unlock the file. A Wait Andy Bobby

32 Repository Andy Andy commits the changes and unlocks the file. Commit Andy Bobby

33 Repository Andy Now Bobby can take the modified file and lock it. Bobby edits her local copy of the file. Lock Andy Bobby (Local Edit)

34 Repository Andy Bobby finishes, commits her changes and unlocks the file. Commit Andy Bobby Andy Bobby Andy Bobby

35 Repository Andy Bobby Andy updates the changes from the repository. Andy Bobby Andy Bobby Update Andy Bobby

36

37 Repository AA Andy and Bobby check-out the file A. The check-out is done without locking. A Check-out Check-out Andy Bobby

38 Both of them edit the local copies of the file (in the same time). Repository A Andy Bobby Andy Bobby (Local Edit)

39 Repository Bobby Andy Bobby Bobby commits her changes to the repository. Commit Andy Bobby

40 Andy tries to commit his changes. A version conflict occurs. Commit Repository Bobby Andy Bobby (Local Conflict)

41 Andy updates his changes with the ones from the repository. The changes merge into his local copy. A merge conflict can occur. Update (with merge) Repository Bobby Andy & Bobby Andy Bobby (Local Merge)

42 Repository Andy commits the changes to the repository. A common version with the changes of Andy and Bobby is inserted. Commit Bobby Andy & Bobby Andy & Bobby Andy Bobby

43 Bobby updates the changes from the repository. She gets the common version with the changes of Andy and Bobby. Update Repository Andy & Bobby Andy & Bobby Andy & Bobby Andy Bobby

44

45  Tags enable the naming of a group of files in different versions Main.cs Test.cs 1.11.31.4 1.2 Prog.cs 1.11.2 Tag "Beta 2" 1.1 1.3 1.2

46  Branching enables a group of changes to be separated in a different development line  Branching is suitable for:  Development of additions for a version of the product (for example version 2.0)  The additions are independent from the main development line  Saves the possibility of making changes to the old version (for example version 1.0.1)

47 Main.h 1.11.21.31.4 1.2.2.11.2.2.2 1.2.4.11.2.4.21.2.4.3 1.2.2.2.2.11.2.2.2.2.2 Branch 1.2.2.2.2 -> Branch 1.2.2. -> Branch 1.2.4. -> Main Trunk

48 Using Subversion and TortoiseSVN

49  Subversion (SVN)  Open source SCM repository  http://subversion.tigris.org/ http://subversion.tigris.org/  Runs on UNIX, Linux, Windows  Console client  svn  GUI client  TortoiseSVN – http://tortoisesvn.tigris.org/ http://tortoisesvn.tigris.org/  Visual Studio plug-in client (AnkhSVN)

50  Versioning of the directory structure  Complete change log  Deletion of files and directories  Renaming of files and directories  Saving of files or directories  Can work on it’s own or integrated with Apache as a module  Works effectively with tags and branching

51  TortoiseSVN  Open source GUI client for Subversion  Integrated in Windows Explorer  http://tortoisesvn. tigris.org/ http://tortoisesvn. tigris.org/ http://tortoisesvn. tigris.org/

52  Visual Studio plug-in for accessing SVN repositories – http://ankhsvn.open.collab.net http://ankhsvn.open.collab.net

53 Live Demo

54 Questions?


Download ppt "Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation www.telerik.com."

Similar presentations


Ads by Google