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
Branchinga 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!