Today I moved using site-uptime.net development from Bazaar repository to GIT using elegant bzr2git script. The why:
- In-place branches (I used to use them heavily)

- Faster (no Python libs loading during “cold” start)
- Can’t live without “git rebase -i” now
Recently I was asked to help with fixing branch that had:
- invalid name (wrong artifact number)
- invalid comment inside (also based on wrong artifact number)
it was a mistake and programmer wanted to preserve changes done on branch, but using different name.
The solution I proposed was to:
(more…)
GIT is a fast version control system that handles branching very efficiently and allow for most operations to be done offline (is a distributed VCS). Of course sometimes you have to exchange code with external GIT repos (maybe central storage). Being distributed forces some design decisions: local/remote branches distrinction were introduced.
Remote branch in GIT is a head that tracks branch stored on server. You shouldn’t update (commit) directly that branch. You can update local branches instead then use “push” to publish changes from local branch to remote. Remote branch can be used to answer the following questions:
- is my local branch up to date regarding to server state?
- what changes (diff/log) were added to my local branch and aren’t submitted (push) yet?
In order to use properly remote branches you have to create maching local branch for every remote branch. Boring and error-prone task. Let’s automate it:!
git branch -a | awk \
'/RELEASE/ { sub("remotes/origin/", "", $1); \
print "git branch --track " $1 " origin/" $1 }' | sh
Above command imports all branches that contain string “RELEASE” (I assume we may be interested in checking release status).
Cherry-picking is a technique of porting only selected commits from one branch to another. It’s directly supported in GIT by special command:
git cherry-pick <SHA-COMMIT-ID>
Also SVN has simple merge mode that supports selecting of single commit:
svn merge -c <REV-NO> <URL>
What about Perforce? After checking Perforce documentation for merging I hit the following syntax for selecting subset of changelists to merge:
(more…)
Releasing Software is not just packing latest version to tarball and send to SFTP server. It requires preparation and some planning to be done properly. I’ll describe release procedure I applied on one of my latest projects. Supporting version control system is GIT.
The aims for releasing procedure designed:
- allow for testing window before release date
- have the possibility for examine released version to test for reported bugs
- possibility to manage existing releases (hot-fixing critical bugs)
(more…)