Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Version Control Systems and CC

Version Control Systems and CC

Rahul Gopinath

November 01, 2011
Tweet

More Decks by Rahul Gopinath

Other Decks in Research

Transcript

  1. Version Control Systems are the lifeblood of Software Engineering. History

    Reproducibility Synchronization Concurrency Why?
  2. Versions A box A large box A large blue box

    A small blue box C2 Revisions
  3. 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
  4. 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
  5. 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
  6. Operation Based State Based A B C D E A

    B D E C History Models H3
  7. Choice Calculus : Syntax V1 Formal system to describe variations

    Dimension Choice Dim Platform<Win,Mac> in Platform<ie, safari> is a web browser. Platform<Office, iWork> is an office suite. Tag Plain Text : Comon parts
  8. V2 Choice Calculus : Semantics dim Platform<Win,Linux> in dim UI<Gnome,KDE>

    in Platform<ie, Firefox> is a web browser. Platform<Office, UI<OpenOffice,KOffice>> 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
  9. V3 Choice Calculus : Alternate representations for choices dim Platform<Win,Linux>

    in dim UI<Gnome,KDE> in Platform<ie, Firefox> is a web browser. Platform<Office, UI<OpenOffice,KOffice>> 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<Win,Linux> in dim UI<Gnome,KDE> in Platform<ie, Firefox> is a web browser. UI<Platform<MSOffice, OpenOffice>,Platform<MSOffice, KOffice>> is an office suite. Equivalent to
  10. V4 Choice Calculus : Eliminate Redundancy dim Platform<Win,Linux> in dim

    UI<Gnome,KDE> in Platform<ie, Firefox> is a web browser. Platform<Office, UI<OpenOffice,KOffice>> 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<Win,Linux> in dim UI<Gnome,KDE> in Platform<ie is a web browser, Firefox is a web browser> . Platform<Office, UI<OpenOffice,KOffice>> is an office suite. . Equivalent to
  11. V5 Choice Calculus : Embedded Dimension dim Platform<Win,Linux> in Platform<ie,

    Firefox> is a web browser. Platform<MSOffice,dim UI<Gnome,KDE> in UI<OpenOffice,KOffice>> 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
  12. 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
  13. Choices Choices Change Set based | Snapshot based Revisions as:

    Tags | Dimensions Dim Rev<v.1,v.2,v.3> in Rev<f.1, f.2, f.3> Dim V.1<v-,v+> in Dim V.2<v-,v+> in V.2<V.1<f.0, f.1>,f.2> Branches as: Top level Dims | Dependent Dims Dim Var<dev,stable,maint> in Dim V.1<v-,v+> in V.1<f.0,Var<f.d,f.s,f.m>> Dim V.1<v-,v+> in V.1<f.0, Dim Var<dv,st,t> in Var<f.d, f.s,f.m>> R2
  14. Dim Var<dev,stable> in Dim V1<v-,v+> in Dim V2<v-,v+> in Dim

    V2’<v-,v+> in Dim V3<v-,v+> in Dim V3’<v-,v+> in Var<V3<V2<V1<f.0,f.1>,f.2>,f.3>,V3’<V2’<V1<f.0,f.1>,f.2’>,f.3’>> v.1 v.2 v.2’ v.3 v.3’ v.4 v.4’ Dim Var<dev,stable> in Dim V1<v-,v+> in Dim V2<v-,v+> in Dim V2’<v-,v+> in Dim V3<v-,v+> in Dim V3’<v-,v+> in Dim V4<v-,v+>in Var<V4<V3’<V2’<V1<V3<V2<V1<f.0,f.1>,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V.3’<V2’<V1<f.0,f.1>,f.2’>,f.3’>> Dim Var<dev,stable> in Dim V1<v-,v+> in Dim V2<v-,v+> in Dim V2’<v-,v+> in Dim V3<v-,v+> in Dim V3’<v-,v+> in Dim V4<v-,v+> in Dim V4'<v-,v+> in Var<V4<V3’<V2’<V1<V3<V2<V1<f.0,f.1>,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V.4’<V3’<V2’<V1<f.0,f.1>,f.2’>,f.3’>,f.4’>> R3 Before v4 After v4 After v4' Merges Merges
  15. Structure Structure V ::= D<t1,t2…> { V } | V;

    V | q=> V | 1 q ::= D.t Dim A<a1,a2> in A<1,2> :: A<a1,a2> Dim A<a1,a2> Dim B<b1,b2>in A<1,2> :: A<a1,a2>;B<b1,b2> Dim A<a1,a2> in A< Dim B<b1,b2> in 1,2> :: A<a1,a2>;A.a1 => B<b1,b2> R4 Dim Var<dev,stable> in Dim V1<v-,v+> in Dim V2<v-,v+> in Dim V2’<v-,v+> in Dim V3<v-,v+> in Dim V3’<v-,v+> in Dim V4<v-,v+> in Dim V4'<v-,v+> in Var<V4<V3’<V2’<V1<V3<V2<V1<f.0,f.1>,f.2>,f.3>,f.1>,f.2’>,f.3’>,f.4>,V4’<V3’<V2’<V1<f.0,f.1>,f.2’>,f.3’>,f.4’>> :: Var<dev,stable>,V1<v-,v+>V2<v-,v+>V2'<v-,v+>V3<v-,v+>V3'<v-,v+>V4<v-,v+>V4'<v-,v+>