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
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 of development that exists independently of another line,
yet still shares a common history
10. 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
11. 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
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!