Source Code Management

          Widoyo
    <widoyo@gmail.com>
Agenda

 Software Characteristic
 Software Changes
 Traditional Method
 Version Control
 Distributed Version Control
 Centralized Version Control
 Branching
 Common Term in SCM
 Daily use of git
Software Characteristic

  Software running well on a certain condition
  Software are easy to break
  Software are easy to modify
  Software are an abstract things
  Bugs may be found at later time
Software Changes

 New Features
 Found Bugs
 Environment changes
 Request to change
Traditional Method

  Save into New name or Save the old one into archive name
  Making new directory to hold the old one
  Problems:
     No standard way to log changes
     Difficult to identify which the fresh (newest) one
     More complicated when working on Team


                          coba-asli.php
                          /aplikasi-v1/
                          /aplikasi-v2/
                          mycode-060908.rb
                          mycode-020908.rb
Version Control

  To log changes
  To prevent overwriting each other
  To tag a set of software code, release code
  As a code repository
Centralized Version Control

  Code repository are reside on a central place
  Ideal for Team that working on the same project
  Product examples:
     Concurrent Version System (CVS)
     Subversion (SVN)
     Source Safe?
Distributed Version Control

  Repository are placed any where
  Ideal for individual developer or small project
  Product examples (most of them are centralized too):
     GIT
     Bazaar
     Mercurical
Branching

a line of development that exists independently of another line,
yet still shares a common history
Common Term in SCM
 Repository --Storage of current and historical code
 Check-in / Commit -- commit changes, write log
 Check-out -- getting the source
 Branch -- making different line of development
 Conflict, Resolve --changes are made on the same source
 Baseline, Trunk, Master -- Main line of development
 Tag -- labeling snapshot of source
 Log --notes given by developer on changes
 Head -- the most recent commit
 Revision, Version --state at point in time
 Import -- copying local directory tree into repository
 Export --similar to checkout without metadata ofversion
 control
Daily Use of GIT

  Initiate repository
  import project (file(s) or Directory)
  checkout
  code - test iteration
  Commit - writing logs here
  Tag - labeling
  Branch
  Merge
  Log
  Diff
Starting Using git

  Install, ONLY available on Linux:(
  Write your code
  Initiate Repository
  Add your code into repo
  code-compile-test
  Commit the changes
  Tag
  and ... JUST Use it!
< 10 minutes
                       git show
my hello Project
Further Reading

http://www.kernel.org/pub/software/scm/git/docs/


                          Thank you

Source code management

  • 1.
    Source Code Management Widoyo <widoyo@gmail.com>
  • 2.
    Agenda Software Characteristic Software Changes Traditional Method Version Control Distributed Version Control Centralized Version Control Branching Common Term in SCM Daily use of git
  • 3.
    Software Characteristic Software running well on a certain condition Software are easy to break Software are easy to modify Software are an abstract things Bugs may be found at later time
  • 4.
    Software Changes NewFeatures Found Bugs Environment changes Request to change
  • 5.
    Traditional Method Save into New name or Save the old one into archive name Making new directory to hold the old one Problems: No standard way to log changes Difficult to identify which the fresh (newest) one More complicated when working on Team coba-asli.php /aplikasi-v1/ /aplikasi-v2/ mycode-060908.rb mycode-020908.rb
  • 6.
    Version Control To log changes To prevent overwriting each other To tag a set of software code, release code As a code repository
  • 7.
    Centralized Version Control Code repository are reside on a central place Ideal for Team that working on the same project Product examples: Concurrent Version System (CVS) Subversion (SVN) Source Safe?
  • 8.
    Distributed Version Control Repository are placed any where Ideal for individual developer or small project Product examples (most of them are centralized too): GIT Bazaar Mercurical
  • 9.
    Branching a line ofdevelopment that exists independently of another line, yet still shares a common history
  • 10.
    Common Term inSCM Repository --Storage of current and historical code Check-in / Commit -- commit changes, write log Check-out -- getting the source Branch -- making different line of development Conflict, Resolve --changes are made on the same source Baseline, Trunk, Master -- Main line of development Tag -- labeling snapshot of source Log --notes given by developer on changes Head -- the most recent commit Revision, Version --state at point in time Import -- copying local directory tree into repository Export --similar to checkout without metadata ofversion control
  • 11.
    Daily Use ofGIT Initiate repository import project (file(s) or Directory) checkout code - test iteration Commit - writing logs here Tag - labeling Branch Merge Log Diff
  • 12.
    Starting Using git Install, ONLY available on Linux:( Write your code Initiate Repository Add your code into repo code-compile-test Commit the changes Tag and ... JUST Use it!
  • 13.
    < 10 minutes git show my hello Project
  • 14.