SlideShare a Scribd company logo
1 of 44
INTRODUCTION TO
    VERSION CONTROL
PURPOSE OF CURRENT
TRAINING




              The basics
                 AND
           Making first steps


                                2
CONTENTS


 What  is version control
 History and evolution of version control

 Instruments and their classification

 Approaches

 Domain vocabulary

 What else you might want to know



                                             3
WHAT IS VERSION CONTROL


   Place to store your source code
   Historical record of what you have done over time
   Approach which allows working together without
    getting in each others' way (allows to collaborate
    more effectively)
   Another “trendy” word combination
   Something that every software developer should
    deal with
                                                         4
VERSION CONTROL. SYNONYMS
    Source code
     management

                          Source control


                                               Revision control


     ~SCM = Software
       configuration            Files               Numbers
       management


                                                                   5
                       VERSION CONTROL
NOT VERSION CONTROL

                                     Simple
Asset management           documents, files, packages, tra
                                cked by filesystem


                           What exact versions of libraries
Dependency management              are required


                           Music, pictures, drawings, book
Digital storage                           s


                           Installation managers, package
Package management                   dependencies



Installations management     Installation is not a version
                                                              6
HISTORY AND EVOLUTION OF VERSION
CONTROL
   make utility (early 70's)                BitKeeper (1999)
   Bell labs paper describing the           GNU Arch (2001)




                                                                 distributed
    original diff algorithm (1972)           Monotone (2003)
   CDC update tool (early 70's.             darcs (2003)
    contained revision control, change       git (2005)
    sets, build management, file diffs)
                                             Mercurial (2005)
   SCCS source code control system
                                             Bazzar (2005)
    (1972)
    CCC version control system (1975)




                                                                 proprietary
                                            ClearCase (1992)
   RCS revision control system (1980)       VSS (1994)
   patch utility (around 1988)              Perforce (1995)
   CVS Concurrent Version System            Vault (2002)
    (1986), CVSNT (1998)                     AccuRev (2002)     7
   Subversion (started in 1999)             TFS (2005)
VCS CLASSIFICATION
(BY REPOSITORY MODEL)
   Centralized (client-server model)
  •   Subversion
  •   CVS
  •   VSS, TFS, Vault
  •   ClearCase
  •   AccuRev

   Distributed
  •   Git
  •   Mercurial
  •   Bazzar
  •   Perforce
  •   BitKeeper                        8
CONCURRENCY MODELS




                combined
      merge                Release/lock



                                          9
VCS CLASSIFICATION
(BY CONCURRENCY MODEL)
  Merge
  •   CVS
  •   Git
  •   Mercurial
  •   Bazzar

  Release/lock
  • VSS
  • TFS
  • Vault

  Combined
  •   Subversion
  •   AccuRev
  •   Perforce           10

  •   ClearCase
DISTRIBUTED VS CENTRALIZED.


Centralized           Distributed




                                    11
CENTRALIZED MODEL




                    12
DISTRIBUTED MODEL




                    13
DISTRIBUTED VS CENTRALIZED.
DIFFERENCES
Centralized                           Distributed

   Single repository                    Multiple repositories
   Commit requires connection           Commit does not require
    (no staging area).                    connection (due to staging area)
   Impossible to commit changes         Possible to commit changes to
    to another user                       another user
   All history in one place             Impossible to get all history
   Reintegrating the branch might       Easier branches management
    be a pain                             (especially reintegration)
   Considered to be not so fast as      Considered to be faster than
    DVCS                                  CVCS
   Easy access management               No access management
                                                                             14
   Chosen for enterprise                Chosen for open source
    development                           development
DISTRIBUTED MODEL.
WORKFLOW #1




                     15
DISTRIBUTED MODEL.
WORKFLOW #2




                     16
CONCURRENCY MODELS.


Lock-unlock                        Merge

   Everything is read-only           You can edit everything
   Need to edit?                     Locally
    1.   Get lock                     And commit changes later
    2.   Edit                         Everything will be fine
    3.   Release lock                 Unless somebody edited the
                                       same files
   Don’t forget to release lock
                                      Otherwise you’ll need some luck
   Otherwise you screwed up
                                      You are:
   Others would not be able to        1.   Lucky (source has been merged
    edit locked files                       automatically)
                                       2.   Not lucky (conflict happened)
   There is a good thing though
                                      Conflicts require resolution
   You won’t need to merge           But it has nothing to do with        17
                                       conflictology
                                      This is about merging manually
LOCK-MODIFY-UNLOCK




                                                3. Sally tries to edit
1. GET LOCK
                                                4. Locked!
              2. Read
                                                It’s impossible to edit
                                                until Harry releases
                                                the lock



   5. Write
      (save)                          8. Read

              6. RELEASE    7. GET LOCK
                 THE LOCK                                             18
ANTI VSS CAMPAIGN




                    19
COPY-MODIFY-MERGE   (#1)




                           20
COPY-MODIFY-MERGE   (#2)




                           21
PRACTICAL VERSION CONTROL

    What VCS to start with?              How to start working with
                                           subversion?
    Subversion
                                          Get Subversion from official site
    Why?                                  and install it
1.    It’s most popular                   Init new repository with
2.    Enterprise chooses it                svnadmin create command

3.    EPAM has chosen it too              Create initial project structure
                                           (/trunk, /tags/, /branches)
4.    It has almost all what VCS
      should have                         Check created project out to
                                           the directory with the source
5.    It’s possible to use svn and git     code
      together if you wish                Add files with svn add
    Are you software developer?           command
    Most likely you would need to        Commit files with svn commit
     deal with subversion                  command                           22
DOMAIN VOCABULARY.
START WORKING WITH VCS
          checkin
 add                      commit       push
         release lock


               TO REPOSITORY


          checkout
delete                  update,fetch   pull
          get lock

              FROM REPOSITORY
                                              23
DOMAIN VOCABULARY.
CVCS WORKFLOW EXAMPLE




   WC (working copy)            Repository


                   svn add


                 svn commit

                                             24
                   svn update
DOMAIN VOCABULARY.
DVCS WORKFLOW EXAMPLE




                        25
DOMAIN VOCABULARY.
RESPOSITORY INVARIANT OPERATIONS

               add               delete                move

               svn add, svn delete, svn rename, …

               rename               copy             mkdir

    VCS is not able of flexible filesystem changes tracking
    It is preferably that instead of applying FS commands corresponding
     VCS command be applied
    In other case files will be tracked by VCS as non-versioned or
     missing.
    Subversion does not have specific commands for tags and branches      26
     creation, svn copy is used instead.
DOMAIN VOCABULARY.
REPOSITORY LAYOUT
                        Repository

                                     /




               /trunk          /branches            /tags




    Mainline      Branches directory     Tags directory
                                                            27
DOMAIN VOCABULARY.
CHANGELISTS
   You have bunch of committed             However, it has limitations
    files                               1.    Changelists are applicable
   Which corresponds to the                  only to particular working
    standalone feature                        copy
   You might want to track this        2.    Changelists can be assigned
    fileset                                   only to files
   Then it’s time to use changelists   3.    At most one changelist
   It is done by svn changelist              assignment on one file
    command                                  How could it be useful?
   It sets or unsets the changelist         It helps in logical
    association of a particular               organization of files being
    working copy file                         committed
   You’ll be able to see changelists        For example in case, when
    running svn status command                one large feature should be
                                              committed in several steps 28
DOMAIN VOCABULARY.
REVISIONS
Revisions




                     29
Working copy (WC)
DOMAIN VOCABULARY.
CHANGESET AND SNAPSHOT
     changeset    changeset   changeset




                                          30

 Tree snapshots
DOMAIN VOCABULARY.
PATCHING


              svn diff > patchfile.patch


                   create patch

                                       patch

                    apply patch
   WC (working copy)
              patch -p0 < patchfile.patch

                                               31
DOMAIN VOCABULARY.
METAINFO
          working copy                           working copy
          under subversion                       under git

                  metainfo

                      WC under subversion has .svn folder in
                       each directory
                      It allows tracking files status easily
                      But has disadvantages
                  1.      It takes too long to delete WC from FS
                  2.      FTP upload is a headache
                  3.      Web-application deployed together with
                          .svn folders is a security threat
                  4.      It is easy to delete standalone .svn 32
                          folder and have some problems
WORKING COPY FILE STATUS

                                working revision
                  .svn
                                timestamp (last updated)



    Unchanged, and current          Unchanged, and out of date


             14                              18
                         =     14     ~

Locally changed, and current        Locally changed, and out of date
                                                                       33
DOMAIN VOCABULARY.
REVERT AND BLAME
   How to get rid of recent          Subversion tracks users
    changes in WC?                     committing changes
   Make revert                       This could be very helpful
   Why not update?                    sometimes
   Update does not override WC       Because you want to find
    changes                            someone responsible
   Revert will discard all           One can find who changed
    changes and return WC to           specific lines
    the working revision              By running svn blame
   Unless you have committed         It will show all user logins last
    your changes                       edited specific line of code
   Revert will not help in that      Developer! Be aware
    case.                             Don’t commit buggy code
   But svn merge –rHEAD:N will       They’ll find you anyway             34
SUBVERSION VS CVS

Subversion                    CVS




 Commits are atomic          Commits are not atomic
 Renames and copies are      Renames and copies are
  supported                    not supported
 Changesets messaging        Changes are file-specific
  (per-commit message)         (per-file commit message)
 Full permissions support    Permissions via hooks

 Difficulties with binary
  files versioning              Easy binary files versioning 35
WORKING TOOLS

                        Subversion client


Command
  line                                GUI


                                                                      Subversion
          TortoiseSVN                       IDE
                                                                        server


                         embedded support            Plugins




                          IntelliJ
                                     Netbeans   AnkhSVN   Subclipse
                           IDEA
                                                                                   36
VERSION CONTROL FOR
NON-PROGRAMMERS

   There are version control tools even for designers:




         Adobe version cue            PixelNovel Timeline


   There is version control functionality embedded in:



                                                            37
          Microsoft Word            OpenOffice.org Writer
ISN'T VERSION CONTROL TOO
COMPLEX?




                            38
ISN'T VERSION CONTROL TOO
COMPLEX?
                                              Basic working cycle
   You can avoid using version control          Update your working copy
                                                    svn update
   But it can’t last long
                                                 Make changes
   You will need to collaborate eventually         svn add
   It might be tricky sometimes                    svn delete
   But you can avoid most problems                 svn copy
                                                    svn move
   Recommendations:
                                                 Examine your changes
      Stick to basic working cycle                 svn status
      Learn basic working cycle                    svn diff
       commands                                     svn revert
      Practice on sandbox project               Merge others' changes
      Read “Version control with                    svn merge
       subversion” book                              svn resolved
   DVCSs have more steep learning               Commit your changes
    curve anyway                                     svn commit
                                                                             39
DOES SCM = VERSION CONTROL?



     No
     Version control is just the main SCM
      process
     What is SCM then?

     There are several cumbersome definitions

     If you want it simple, it is just more broad
      topic then just version control
     And it is one of the CMMI process areas

                                                     40
RECOMMENDED READING
1. Version control with Subversion By Ben Collins-
   Sussman, Brian W. Fitzpatrick, C. Michael Pilato




                                                      48
RECOMMENDED READING
2. Version Control with Git by Jon Loeliger




                                              49
RECOMMENDED READING
3. Pragmatic Version Control: Using Subversion, 2nd edition
   by Mike Mason




                                                              50
USEFUL LINKS


1. http://svnbook.red-bean.com/ - official subversion
   reference/book “Version Control with Subversion”
2. http://progit.org/ - book about git “Pro git”
3. http://www.ericsink.com/ - one of the best blogs about version
   control
4. http://www.versioncontrolblog.com/ - another great blog about
   version control
5. http://better-scm.berlios.de/comparison/comparison.html - VCS
   comparison table
6. http://www.cmcrossroads.com/ - biggest resource about SCM
7. http://git-scm.org/course/svn.html - git for svn users

                                                                    51

More Related Content

What's hot

Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Simplilearn
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hubNaveen Pandey
 
Basic command ppt
Basic command pptBasic command ppt
Basic command pptRohit Kumar
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Gitramubonkuri
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubVenkat Malladi
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?Weaveworks
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 
Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Gemma Catolino
 
Course 102: Lecture 9: Input Output Internals
Course 102: Lecture 9: Input Output Internals Course 102: Lecture 9: Input Output Internals
Course 102: Lecture 9: Input Output Internals Ahmed El-Arabawy
 

What's hot (20)

Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
Chef Tutorial | Chef Tutorial For Beginners | DevOps Chef Tutorial | DevOps T...
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Basic command ppt
Basic command pptBasic command ppt
Basic command ppt
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Github basics
Github basicsGithub basics
Github basics
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Git
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Les bases de git
Les bases de gitLes bases de git
Les bases de git
 
git and github
git and githubgit and github
git and github
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Git
GitGit
Git
 
Git e GitHub - L'essenziale
Git e GitHub - L'essenziale Git e GitHub - L'essenziale
Git e GitHub - L'essenziale
 
Course 102: Lecture 9: Input Output Internals
Course 102: Lecture 9: Input Output Internals Course 102: Lecture 9: Input Output Internals
Course 102: Lecture 9: Input Output Internals
 

Similar to 01 - Introduction to Version Control

StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 
Distributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialDistributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialTed Naleid
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 
Docker crash course
Docker crash courseDocker crash course
Docker crash courseVishwas N
 
Introduction to Distributed Version Control System with Mercurial / TortoiseHg
Introduction to Distributed Version Control System with Mercurial / TortoiseHgIntroduction to Distributed Version Control System with Mercurial / TortoiseHg
Introduction to Distributed Version Control System with Mercurial / TortoiseHgEng Chin Gan
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part ISergey Aganezov
 
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Revelation Technologies
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control LandscapeLorna Mitchell
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemGilad Garon
 
Distributed Version Control Systems
Distributed Version Control SystemsDistributed Version Control Systems
Distributed Version Control SystemsMihail Stoynov
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesLuke Marsden
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and DockerAmin Afshar
 

Similar to 01 - Introduction to Version Control (20)

StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
 
Subversion and bug tracking
Subversion and bug trackingSubversion and bug tracking
Subversion and bug tracking
 
Mercurial presentation
Mercurial presentationMercurial presentation
Mercurial presentation
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
Understand
UnderstandUnderstand
Understand
 
Distributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With MercurialDistributed Version Control (DVCS) With Mercurial
Distributed Version Control (DVCS) With Mercurial
 
Subversion last minute survival crash course
Subversion  last minute survival crash courseSubversion  last minute survival crash course
Subversion last minute survival crash course
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 
Docker crash course
Docker crash courseDocker crash course
Docker crash course
 
Introduction to Distributed Version Control System with Mercurial / TortoiseHg
Introduction to Distributed Version Control System with Mercurial / TortoiseHgIntroduction to Distributed Version Control System with Mercurial / TortoiseHg
Introduction to Distributed Version Control System with Mercurial / TortoiseHg
 
The Docker Ecosystem
The Docker EcosystemThe Docker Ecosystem
The Docker Ecosystem
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part I
 
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)Version Uncontrolled - How to Manage Your Version Control (whitepaper)
Version Uncontrolled - How to Manage Your Version Control (whitepaper)
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control Landscape
 
JavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control systemJavaEdge 2008: Your next version control system
JavaEdge 2008: Your next version control system
 
Distributed Version Control Systems
Distributed Version Control SystemsDistributed Version Control Systems
Distributed Version Control Systems
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Containers and Docker
Containers and DockerContainers and Docker
Containers and Docker
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 

More from Sergii Shmarkatiuk

CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...Sergii Shmarkatiuk
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionSergii Shmarkatiuk
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of changeSergii Shmarkatiuk
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meetingSergii Shmarkatiuk
 
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...Sergii Shmarkatiuk
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...Sergii Shmarkatiuk
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentationSergii Shmarkatiuk
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentationSergii Shmarkatiuk
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencySergii Shmarkatiuk
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment ManagementSergii Shmarkatiuk
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell usSergii Shmarkatiuk
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-eggSergii Shmarkatiuk
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainingsSergii Shmarkatiuk
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration managementSergii Shmarkatiuk
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторийSergii Shmarkatiuk
 

More from Sergii Shmarkatiuk (20)

CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution Reconstruction
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of change
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentation
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentation
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual Consistency
 
05 - Merge Management
05 - Merge Management05 - Merge Management
05 - Merge Management
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell us
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-egg
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainings
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Breath of life
Breath of lifeBreath of life
Breath of life
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration management
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 

Recently uploaded

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

01 - Introduction to Version Control

  • 1. INTRODUCTION TO VERSION CONTROL
  • 2. PURPOSE OF CURRENT TRAINING The basics AND Making first steps 2
  • 3. CONTENTS  What is version control  History and evolution of version control  Instruments and their classification  Approaches  Domain vocabulary  What else you might want to know 3
  • 4. WHAT IS VERSION CONTROL  Place to store your source code  Historical record of what you have done over time  Approach which allows working together without getting in each others' way (allows to collaborate more effectively)  Another “trendy” word combination  Something that every software developer should deal with 4
  • 5. VERSION CONTROL. SYNONYMS  Source code management  Source control  Revision control ~SCM = Software configuration Files Numbers management 5 VERSION CONTROL
  • 6. NOT VERSION CONTROL Simple Asset management documents, files, packages, tra cked by filesystem What exact versions of libraries Dependency management are required Music, pictures, drawings, book Digital storage s Installation managers, package Package management dependencies Installations management Installation is not a version 6
  • 7. HISTORY AND EVOLUTION OF VERSION CONTROL  make utility (early 70's)  BitKeeper (1999)  Bell labs paper describing the  GNU Arch (2001) distributed original diff algorithm (1972)  Monotone (2003)  CDC update tool (early 70's.  darcs (2003) contained revision control, change  git (2005) sets, build management, file diffs)  Mercurial (2005)  SCCS source code control system  Bazzar (2005) (1972) CCC version control system (1975) proprietary   ClearCase (1992)  RCS revision control system (1980)  VSS (1994)  patch utility (around 1988)  Perforce (1995)  CVS Concurrent Version System  Vault (2002) (1986), CVSNT (1998)  AccuRev (2002) 7  Subversion (started in 1999)  TFS (2005)
  • 8. VCS CLASSIFICATION (BY REPOSITORY MODEL) Centralized (client-server model) • Subversion • CVS • VSS, TFS, Vault • ClearCase • AccuRev Distributed • Git • Mercurial • Bazzar • Perforce • BitKeeper 8
  • 9. CONCURRENCY MODELS combined merge Release/lock 9
  • 10. VCS CLASSIFICATION (BY CONCURRENCY MODEL) Merge • CVS • Git • Mercurial • Bazzar Release/lock • VSS • TFS • Vault Combined • Subversion • AccuRev • Perforce 10 • ClearCase
  • 14. DISTRIBUTED VS CENTRALIZED. DIFFERENCES Centralized Distributed  Single repository  Multiple repositories  Commit requires connection  Commit does not require (no staging area). connection (due to staging area)  Impossible to commit changes  Possible to commit changes to to another user another user  All history in one place  Impossible to get all history  Reintegrating the branch might  Easier branches management be a pain (especially reintegration)  Considered to be not so fast as  Considered to be faster than DVCS CVCS  Easy access management  No access management 14  Chosen for enterprise  Chosen for open source development development
  • 17. CONCURRENCY MODELS. Lock-unlock Merge  Everything is read-only  You can edit everything  Need to edit?  Locally 1. Get lock  And commit changes later 2. Edit  Everything will be fine 3. Release lock  Unless somebody edited the same files  Don’t forget to release lock  Otherwise you’ll need some luck  Otherwise you screwed up  You are:  Others would not be able to 1. Lucky (source has been merged edit locked files automatically) 2. Not lucky (conflict happened)  There is a good thing though  Conflicts require resolution  You won’t need to merge  But it has nothing to do with 17 conflictology  This is about merging manually
  • 18. LOCK-MODIFY-UNLOCK 3. Sally tries to edit 1. GET LOCK 4. Locked! 2. Read It’s impossible to edit until Harry releases the lock 5. Write (save) 8. Read 6. RELEASE 7. GET LOCK THE LOCK 18
  • 20. COPY-MODIFY-MERGE (#1) 20
  • 21. COPY-MODIFY-MERGE (#2) 21
  • 22. PRACTICAL VERSION CONTROL  What VCS to start with?  How to start working with subversion?  Subversion  Get Subversion from official site  Why? and install it 1. It’s most popular  Init new repository with 2. Enterprise chooses it svnadmin create command 3. EPAM has chosen it too  Create initial project structure (/trunk, /tags/, /branches) 4. It has almost all what VCS should have  Check created project out to the directory with the source 5. It’s possible to use svn and git code together if you wish  Add files with svn add  Are you software developer? command  Most likely you would need to  Commit files with svn commit deal with subversion command 22
  • 23. DOMAIN VOCABULARY. START WORKING WITH VCS checkin add commit push release lock TO REPOSITORY checkout delete update,fetch pull get lock FROM REPOSITORY 23
  • 24. DOMAIN VOCABULARY. CVCS WORKFLOW EXAMPLE WC (working copy) Repository svn add svn commit 24 svn update
  • 26. DOMAIN VOCABULARY. RESPOSITORY INVARIANT OPERATIONS add delete move svn add, svn delete, svn rename, … rename copy mkdir  VCS is not able of flexible filesystem changes tracking  It is preferably that instead of applying FS commands corresponding VCS command be applied  In other case files will be tracked by VCS as non-versioned or missing.  Subversion does not have specific commands for tags and branches 26 creation, svn copy is used instead.
  • 27. DOMAIN VOCABULARY. REPOSITORY LAYOUT Repository / /trunk /branches /tags Mainline Branches directory Tags directory 27
  • 28. DOMAIN VOCABULARY. CHANGELISTS  You have bunch of committed  However, it has limitations files 1. Changelists are applicable  Which corresponds to the only to particular working standalone feature copy  You might want to track this 2. Changelists can be assigned fileset only to files  Then it’s time to use changelists 3. At most one changelist  It is done by svn changelist assignment on one file command  How could it be useful?  It sets or unsets the changelist  It helps in logical association of a particular organization of files being working copy file committed  You’ll be able to see changelists  For example in case, when running svn status command one large feature should be committed in several steps 28
  • 30. DOMAIN VOCABULARY. CHANGESET AND SNAPSHOT changeset changeset changeset 30 Tree snapshots
  • 31. DOMAIN VOCABULARY. PATCHING svn diff > patchfile.patch create patch patch apply patch WC (working copy) patch -p0 < patchfile.patch 31
  • 32. DOMAIN VOCABULARY. METAINFO working copy working copy under subversion under git metainfo  WC under subversion has .svn folder in each directory  It allows tracking files status easily  But has disadvantages 1. It takes too long to delete WC from FS 2. FTP upload is a headache 3. Web-application deployed together with .svn folders is a security threat 4. It is easy to delete standalone .svn 32 folder and have some problems
  • 33. WORKING COPY FILE STATUS working revision .svn timestamp (last updated) Unchanged, and current Unchanged, and out of date 14 18 = 14 ~ Locally changed, and current Locally changed, and out of date 33
  • 34. DOMAIN VOCABULARY. REVERT AND BLAME  How to get rid of recent  Subversion tracks users changes in WC? committing changes  Make revert  This could be very helpful  Why not update? sometimes  Update does not override WC  Because you want to find changes someone responsible  Revert will discard all  One can find who changed changes and return WC to specific lines the working revision  By running svn blame  Unless you have committed  It will show all user logins last your changes edited specific line of code  Revert will not help in that  Developer! Be aware case.  Don’t commit buggy code  But svn merge –rHEAD:N will  They’ll find you anyway 34
  • 35. SUBVERSION VS CVS Subversion CVS  Commits are atomic  Commits are not atomic  Renames and copies are  Renames and copies are supported not supported  Changesets messaging  Changes are file-specific (per-commit message) (per-file commit message)  Full permissions support  Permissions via hooks  Difficulties with binary files versioning  Easy binary files versioning 35
  • 36. WORKING TOOLS Subversion client Command line GUI Subversion TortoiseSVN IDE server embedded support Plugins IntelliJ Netbeans AnkhSVN Subclipse IDEA 36
  • 37. VERSION CONTROL FOR NON-PROGRAMMERS  There are version control tools even for designers: Adobe version cue PixelNovel Timeline  There is version control functionality embedded in: 37 Microsoft Word OpenOffice.org Writer
  • 38. ISN'T VERSION CONTROL TOO COMPLEX? 38
  • 39. ISN'T VERSION CONTROL TOO COMPLEX? Basic working cycle  You can avoid using version control  Update your working copy  svn update  But it can’t last long  Make changes  You will need to collaborate eventually  svn add  It might be tricky sometimes  svn delete  But you can avoid most problems  svn copy  svn move  Recommendations:  Examine your changes  Stick to basic working cycle  svn status  Learn basic working cycle  svn diff commands  svn revert  Practice on sandbox project  Merge others' changes  Read “Version control with  svn merge subversion” book  svn resolved  DVCSs have more steep learning  Commit your changes curve anyway  svn commit 39
  • 40. DOES SCM = VERSION CONTROL?  No  Version control is just the main SCM process  What is SCM then?  There are several cumbersome definitions  If you want it simple, it is just more broad topic then just version control  And it is one of the CMMI process areas 40
  • 41. RECOMMENDED READING 1. Version control with Subversion By Ben Collins- Sussman, Brian W. Fitzpatrick, C. Michael Pilato 48
  • 42. RECOMMENDED READING 2. Version Control with Git by Jon Loeliger 49
  • 43. RECOMMENDED READING 3. Pragmatic Version Control: Using Subversion, 2nd edition by Mike Mason 50
  • 44. USEFUL LINKS 1. http://svnbook.red-bean.com/ - official subversion reference/book “Version Control with Subversion” 2. http://progit.org/ - book about git “Pro git” 3. http://www.ericsink.com/ - one of the best blogs about version control 4. http://www.versioncontrolblog.com/ - another great blog about version control 5. http://better-scm.berlios.de/comparison/comparison.html - VCS comparison table 6. http://www.cmcrossroads.com/ - biggest resource about SCM 7. http://git-scm.org/course/svn.html - git for svn users 51

Editor's Notes

  1. Рад приветствовать на сегодняшнем тренинге, посвященном контролю версий. В прошлом тренинге я налил воды (излагались довольно абстрактные вещи), но на то он и вводный тренинг. Обо всем – и ни о чем. Как первая лекция в университете после долгих каникул. Так как вода уже есть, теперь будем… добавлять муки и месить тесто.В понедельник у вас уши вянули от словосочетания «конфигурационный менеджмент», так как я использовал его СЛИШКОМ часто. Теперь у вас будут вянуть уши от словосочетания «контроль версий». Но вы не пугайтесь. Сегодня будет не только теория, но и практика.
  2. В википедии есть статья, которая называется отнюдь не version control, a revision control. Такое название акцентирует внимание на хранении информации таким способом, когда каждому отдельному состянию присваивается отдельный номер – номер ревизии. Это напрямую связано с числами и нумерацией. Но суть в том, что контроль версий – это кое что больше, чем просто присваивание номеров.Часто контроль версий называют контролем исходного кода (source control), делая акцент на том, что учету и хранению подлежат в первую очередь текстовые файлы. Но возможности СКВ нынче выходят и за эти пределы. Наиболее странным алиасом, синонимом КВ является употребление словосочетания source code management. Это странно вдвойне:Контроль версий – это не только хранение текстовых файлов с исходным кодомSCM – это аббревиатура, которая может неоднозначно расшифровываться (Software Configuration Management). Суть в том, что контроль версий входит в рассмотрение дисциплины SCM, но в качестве одной из составляющих (пусть и одной из главных). Всё это - контроль версий
  3. Asset management examples:version control in sharepointSharepoint workspacesDropboxPlain folders (filesystem)Для управления зависимостями используются как отдельные репозитории, так и комбинации разных версий. К примеру, работа приложения зависит от набора версий различных библиотек – нужно следить за этими версиями и конфигурировать приложение используя только правильные версии. Цифровые хранилища книг, чертежей, музыки, фильмов. Казалось бы, как можно перепутать контроль версий с цифровыми библиотеками? На самом деле у цифровых библиотек есть довольно важная особенность – исчерпывающая параметризация и описание хранимых артефактов. И как мы увидим чуть позже, в следующем тренинге, комбинация этих параметров – уже напрямую связано с понятием версий и контролем версий.Управление пакетами. Очень похоже на управление зависимостями.Если мы создадим инсталляционный пакет, это не будет считаться полноценной версией. И для того, чтобы управлять версиями, недостаточно просто создать инсталляцию или заархивировать набор файлов. Это связано со сборками, развертыванием и релиз менеджментом.
  4. Кроме классификации по модели репозитория существует еще классификация моделей версионированияОсновные две модели версионирования: С пом. БлокировокС пом. СлиянийКомбинированная
  5. Вsvnможно похищать блокировку
  6. Разработчики СКВ sourcegear vault в свое время начали рекламную кампанию открыто противопоставляя себя vss. И намекая на то, что концепция, заложенная в vssуже устарела.
  7. Наиболее оптимальный подход – это комбинированая модель версионирования. Как в subversion. Copy-modify-merge – для исходных и текстовых файлов, lock-unlock – для бинарных файлов.
  8. Добавление,изменение, обновление содержимого репозиторияУдаление или получение содержимого репозитория
  9. Ревизии – это номера, которыми обозначаются отдельные состояния содержимого репозитория