Slide 1

Slide 1 text

Version Control Systems Version Control Systems Rahul Gopinath A moment from the history of linux kernel

Slide 2

Slide 2 text

Version Control Systems are the lifeblood of Software Engineering. History Reproducibility Synchronization Concurrency Why?

Slide 3

Slide 3 text

Concepts (C) Timeline (H) Choice Calculus (V) Representation (R) Structure of the talk 1

Slide 4

Slide 4 text

C1 Versions Merges Tags Common Concepts

Slide 5

Slide 5 text

Versions A box A large box A large blue box A small blue box C2 Revisions

Slide 6

Slide 6 text

Versions A cup of water B A C A cup of milk A cup of cows milk A cup of coffee A cup of sea water C3 A cup of salty sea water A cup of hot coffee A cup of hot tea A cup of cold coffee Branches

Slide 7

Slide 7 text

Merging water A small cup of water A cup of cold water A cup of water A small bottle of water A cup of cold sea water A small bottle of cold sea water C4 A small cup of water A cup of water A small bottle of water A small bottle of water C4 Revisions Branches

Slide 8

Slide 8 text

Conflicts C5 water A small cup of water A cup of cold water A cup of water A small bottle of hot water A cup of cold sea water A small bottle of (hotcold) sea water

Slide 9

Slide 9 text

Tags Alpha Beta Stable Demo C6 Next: Time line

Slide 10

Slide 10 text

Early History Patchy Clear/Caster Source Code Control System Revision Control System Mainframe Dumb terminals H1

Slide 11

Slide 11 text

Delta Storage Interleaved Composable (Forward| Reverse) H2

Slide 12

Slide 12 text

Operation Based State Based A B C D E A B D E C History Models H3

Slide 13

Slide 13 text

Client Server Generations Local Open Syntax Aware Architecture H4 R e p l i c a t e d

Slide 14

Slide 14 text

Client Server Concurrent Versioning System Subversion Server Clients H5

Slide 15

Slide 15 text

Replicated Clear Case Code Co-Op Past Watch Peers H6

Slide 16

Slide 16 text

Open TeamWare Bitkeeper Git Mercurial Darcs Peers H7

Slide 17

Slide 17 text

Syntax Aware Monticello MolhadoRef H8 Next: CC

Slide 18

Slide 18 text

Choice Calculus : Syntax V1 Formal system to describe variations Dimension Choice Dim Platform in Platform is a web browser. Platform is an office suite. Tag Plain Text : Comon parts

Slide 19

Slide 19 text

V2 Choice Calculus : Semantics dim Platform in dim UI in Platform is a web browser. Platform> is an office suite. Tag Selection {Platform.Linux,UI.KDE} → Firefoxi is a web browser. KOffice is an office suite Semantics {Platform.Win, UI.Gnome} => ie is a web browser. Office is an office suite {Platform.Win, UI.KDE} => ie is a web browser. Office is an office suite {Platform.Linux, UI.Gnome} => Firefox is a web browser. OpenOffice is an office suite {Platform.Linux, UI.KDE} => Firefox is a web browser. KOffice is an office suite

Slide 20

Slide 20 text

V3 Choice Calculus : Alternate representations for choices dim Platform in dim UI in Platform is a web browser. Platform> is an office suite. Semantics {Platform.Win, UI.Gnome} => ie is a web browser. MSOffice is an office suite {Platform.Win, UI.KDE} => ie is a web browser. MSOffice is an office suite {Platform.Linux, UI.Gnome} => Firefox is a web browser. OpenOffice is an office suite {Platform.Linux, UI.KDE} => Firefox is a web browser. KOffice is an office suite dim Platform in dim UI in Platform is a web browser. UI,Platform> is an office suite. Equivalent to

Slide 21

Slide 21 text

V4 Choice Calculus : Eliminate Redundancy dim Platform in dim UI in Platform is a web browser. Platform> is an office suite. Semantics {Platform.Win, UI.Gnome} => ie is a web browser. MSOffice is an office suite {Platform.Win, UI.KDE} => ie is a web browser. MSOffice is an office suite {Platform.Linux, UI.Gnome} => Firefox is a web browser. OpenOffice is an office suite {Platform.Linux, UI.KDE} => Firefox is a web browser. KOffice is an office suite dim Platform in dim UI in Platform . Platform> is an office suite. . Equivalent to

Slide 22

Slide 22 text

V5 Choice Calculus : Embedded Dimension dim Platform in Platform is a web browser. Platform in UI> is an office suite. Tag Selection {Platform.Win} → ie is a web browser. MSOffice is an office suite Semantics {Platform.Win} => ie is a web browser. Office is an office suite {Platform.Linux, UI.Gnome} => Firefox is a web browser. OpenOffice is an office suite {Platform.Linux, UI.KDE} => Firefox is a web browser. KOffice is an office suite Next: Rep

Slide 23

Slide 23 text

Modeling a Repository with Choice Calculus Modeling a Repository with Choice Calculus Temporal Ordering Dependencies C1 C2 C3 C1 C2 Branching Stable Release Dev Merges and Conflicts R1

Slide 24

Slide 24 text

Choices Choices Change Set based | Snapshot based Revisions as: Tags | Dimensions Dim Rev in Rev Dim V.1 in Dim V.2 in V.2,f.2> Branches as: Top level Dims | Dependent Dims Dim Var in Dim V.1 in V.1> Dim V.1 in V.1 in Var> R2

Slide 25

Slide 25 text

Dim Var in Dim V1 in Dim V2 in Dim V2’ in Dim V3 in Dim V3’ in Var,f.2>,f.3>,V3’,f.2’>,f.3’>> v.1 v.2 v.2’ v.3 v.3’ v.4 v.4’ Dim Var in Dim V1 in Dim V2 in Dim V2’ in Dim V3 in Dim V3’ in Dim V4in Var,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V.3’,f.2’>,f.3’>> Dim Var in Dim V1 in Dim V2 in Dim V2’ in Dim V3 in Dim V3’ in Dim V4 in Dim V4' in Var,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V.4’,f.2’>,f.3’>,f.4’>> R3 Before v4 After v4 After v4' Merges Merges

Slide 26

Slide 26 text

Structure Structure V ::= D { V } | V; V | q=> V | 1 q ::= D.t Dim A in A<1,2> :: A Dim A Dim Bin A<1,2> :: A;B Dim A in A< Dim B in 1,2> :: A;A.a1 => B R4 Dim Var in Dim V1 in Dim V2 in Dim V2’ in Dim V3 in Dim V3’ in Dim V4 in Dim V4' in Var,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V4’,f.2’>,f.3’>,f.4’>> :: Var,V1V2V2'V3V3'V4V4'

Slide 27

Slide 27 text

Related Fields Concurrency: Software Transactional Memory Distributed and Versioned Data Bases Software Configuration Management

Slide 28

Slide 28 text

Questions?