primary on low-‐end mobile devices Founded 2005, yet sGll (somewhat) in startup mode • small (but growing) engineering team (~20) • rapid iteraGons (weekly to biweekly releases) • nothing perfect, nothing frozen, constantly improve and move on • we work in shorts and T-‐shirts!
• Centralized • Subversion exists to be universally recognized and adopted as an open-‐ source, centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-‐scale enterprise operaGons.
• Merge algorithms • Easy switching between branches • Cheap local branching • Extremely smaller in size • No annoying .svn hidden folders in every subfolder
GIT distributed features – Extremely fast – Cheap local branching – git extended log command and features – git merge is a breeze (more later) – SVN access control – SVN sGll as a central repo
• $ cd web • $ git svn init –stdlayout hEps:// svn.domain.com/svn/repo/ • $ git svn fetch –r XXXX:HEAD • branches and tags can be added at later Gme via $ git config -‐-‐add svn-‐remote.svn.branches web/branches/*:refs/remotes/*
• $ git diff [otherbranch] file.php • $ git diff -‐-‐stat/-‐-‐shortstat • $ git diff -‐-‐no-‐index file1.php file2.php (to use it like normal diff tools) • Does not show changes within the line
but similar • Difference can only be noGced if you run this command between `git commit` and `git svn dcommit` • Prior to running this command, no unstaged files are allowed. So remember to commit or stash your changes • $ git svn rebase -‐-‐fetch-‐all
show you a list of history for the current branch) • $ git log -‐-‐graph (will show you nice history with it’s branching trees) • $ git log –p file.php (shows the full diff history of a parGcular file)
list of local branches) • $ git branch {branchname} • $ git svn branch {branchname} (creates a new svn branch from current branch) • $ git svn branch -‐t {tag}
to a different branch) • $ git checkout {remote/branch} -‐b {newbranch} (checkout an exisGng remote branch) • $ git checkout {branchname} file.php (checkout a file from another branch and add it to staging)
(resolve conflicted files, this is where `git log -‐p` can be very useful) • $ git add file.php • $ git commit -‐m “merge {otherbranch} into {thisbranch}”