SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitLukas Fittl
 
Understanding GIT and Version Control
Understanding GIT and Version ControlUnderstanding GIT and Version Control
Understanding GIT and Version ControlSourabh Sahu
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systemsTim Staley
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Phil Estes
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & GitJason Byrne
 
Introduction to Github Actions
Introduction to Github ActionsIntroduction to Github Actions
Introduction to Github ActionsKnoldus Inc.
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to gitEmanuele Olivetti
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Omar Fathy
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners HubSpot
 

Tendances (20)

Git
GitGit
Git
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Subversion to Git Migration
Subversion to Git MigrationSubversion to Git Migration
Subversion to Git Migration
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Understanding GIT and Version Control
Understanding GIT and Version ControlUnderstanding GIT and Version Control
Understanding GIT and Version Control
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
DevOps & SRE at Google Scale
DevOps & SRE at Google ScaleDevOps & SRE at Google Scale
DevOps & SRE at Google Scale
 
Git presentation
Git presentationGit presentation
Git presentation
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
Git Presentation
Git PresentationGit Presentation
Git Presentation
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
Diving Through The Layers: Investigating runc, containerd, and the Docker eng...
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
Introduction to Github Actions
Introduction to Github ActionsIntroduction to Github Actions
Introduction to Github Actions
 
github-actions.pdf
github-actions.pdfgithub-actions.pdf
github-actions.pdf
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
devops
devops devops
devops
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 

Dernier

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 

Dernier (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 

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

Notes de l'éditeur

  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. Ревизии – это номера, которыми обозначаются отдельные состояния содержимого репозитория