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

Slides:



Advertisements
Similar presentations
Software engineering tools for web development Jim Briggs 1CASE.
Advertisements

1. What is Subversion? Why do we need CM? Basic concepts Repositories Options Setup Clients Options Setup Operation Troubleshooting Slide 2.
Integrated Development Environments, Source Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting.
Let Use SVN(Subversion) Interaction Lab. Hyo-Geun Ahn
Version Control 1.  Version control (or revision control) is the term for the management of source files, and all of the intermediate stages as development.
Software Configuration Management Donna Albino LIS489, December 3, 2014.
Summer of Code (SOC) Presentation Fred R McClurg Girish H Mhatre Version Control Overview.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
David Notkin Autumn 2009 CSE303 Lecture 22 Subversion is an open source version control system. Social Implications Friday version control system.
CVS Selim Çıracı Ahmet Kara Metin Tekkalmaz. CVS – Open Source Version Control System Outline What are Version Control Systems? And why do we need them?
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Microsoft Visual Source Safe 6.01 Microsoft Visual Source Safe (MVSS) Presented By: Rachel Espinoza.
Damien Guard (BSc, MBCS) Guernsey Software Developer Forum Change management with Subversion.
Configuration Management
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
SubVersioN – the new Central Service at DESY by Marian Gawron.
Version Control. What is Version Control? Manages file sharing for Concurrent Development Keeps track of changes with Version Control SubVersion (SVN)
By: Taylor Helsper.  Introduction  Bug Tracking  Progress Tracking  Version Control  Conclusion  Questions.
Software Configuration Management (SCM)
Version control Using Git 1Version control, using Git.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Source Control Repositories for Team Collaboration: SVN, TFS, Git Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Programming in Teams And how to manage your code.
Subversion. What is Subversion? A Version Control System A successor to CVS and SourceSafe Essentially gives you a tracked, shared file system.
Software Engineering Modern Approaches
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Introduction to Version Control
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
The new version control system. Kiril Karaatanasov, July 2006 What is Subversion Subversion is a newly developed open source version control system Subversion.
Subversion, an Open Source Version Control System An Introduction.
Version Control with Subversion Quick Reference of Subversion.
1 Lecture 19 Configuration Management Software Engineering.
Source Control Systems SVN, Git, GitHub SoftUni Team Technical Trainers Software University
Subversion Code Deployment LifeCycle August 2011.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Warmup A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.” The programmer.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Introduction to Version Control SE-2030 Dr. Rob Hasker 1 Based on material at and slides written.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
SENG 403 Tutorial 1 1SENG 403 – Winter Agenda Version Control Basics Subversion Basic actions in Subversion Some examples 2SENG 403 – Winter 2012.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
Version Control with SVN Images from TortoiseSVN documentation
Refactoring and Synchronization with the StarTeam Plug-in for Eclipse  Jim Wogulis  Principal Architect, Borland Software Corporation.
CPSC 871 John D. McGregor Change management Module 2 Session 3.
Management of Software Project CSM Software Configuration Management (SCM)
Sabriansyah R.A Version Control. The Repository Subversion adalah sistem tersentralisasi untuk informasi sharing Repository adalah pusat penyimpanan data.
Version Control System
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
1 Week 9 Software Engineering Fall Term 2015 Marymount University School of Business Administration Professor Suydam.
NALINI S. NAUTIYAL SYSTEM SOFTWARE DIVISION Subversion.
Anjana & Shankar September,2010 Introduction to Programming Tools.
Introduction to Subversion Getting started with svn Matteo Vescovi 19/02/2010.
Version Control Systems
Source Control Systems
Subversion for administrators
SVN intro (review).
Version control, using Git
Version Control Systems
Concurrent Version Control
Systems Analysis and Design I
Presentation transcript:

Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation

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

 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

 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

 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

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

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

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

 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

 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

 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

 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

Managing Different Version of the Same File (Document)

 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

 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)

 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

 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!

 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

 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

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

Lock-Modify-Unlock and Copy-Modify-Merge

 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

 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

 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

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

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

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

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

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

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)

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

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

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

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

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

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

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)

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

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

 Tags enable the naming of a group of files in different versions Main.cs Test.cs Prog.cs Tag "Beta 2"

 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)

Main.h Branch > Branch > Branch > Main Trunk

Using Subversion and TortoiseSVN

 Subversion (SVN)  Open source SCM repository   Runs on UNIX, Linux, Windows  Console client  svn  GUI client  TortoiseSVN –  Visual Studio plug-in client (AnkhSVN)

 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

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

 Visual Studio plug-in for accessing SVN repositories –

Live Demo

Questions?