* * * * *
A primitive form of fine-grained revision control
Work continues on “Project: Leaflet” and when I last left off [1], I
mentioned that git [2] is nearly perfect for handling the fine-grained
revision control [3].
I'm here to report—it is.
The ability to make changes to one version of “Project: Leaflet” (say, the
MySQL [4] version) and then selectively merge changes into the other version
(in this case, the PostgreSQL [5] version) isn't that bad with git.
I currently have three respositories for “Project: Leaflet”—the “master”
repository with two branches, one for the MySQL version, and one for the
PostgreSQL version; another one that's my working MySQL repository, and the
third that's the working PostgreSQL version.
The workflow isn't that bad. I make changes on one of the work repositories,
say, the MySQL version:
> mysql-work> vi somefile.c # make changes, test, etc
> mysql-work> git commit -a # have working version, commit changes
>
Then, when done there, I go to the master repository:
> master> git checkout mysql
> Switched to branch "mysql"
> master> git pull server-path-to-mysql-work
> [ bunch of output ]
> master> git log >/tmp/changes
> master> git checkout postgresql
> Switched to branch "postgresql"
>
I then view the changes made, and pick which commits I want to merge:
> master> git cherry-pick f290b3e50e4cea1c3ee5e5265faa996943ef8542
> # that large value is the ID of the commit
> # I pick the ones that apply
> [ bunch of output ]
> master> git cherry-pick 574756ffaa10cdc8452b33bf3d0ab8b786395080
> [ bunch of output ]
>
Then go to the other work repository, and pull the now-merged changes:
> postgresql-work> git pull server-path-to-master
> [ bunch of output ]
> postgresql-work> vi somefile.c # make any non-portable changes,
> postgresql-work> git commit -a # tests, etc,
>
And then back to the master to pull back the PostgreSQL changes and any non-
specific merges that may have come up. I could probably make it smoother, as
git is also a revision control toolkit, but as of yet, it's not yet annoying
enough to warrant the work.
[1]
gopher://gopher.conman.org/0Phlog:2008/04/30.2
[2]
http://git.or.cz/
[3]
gopher://gopher.conman.org/0Phlog:2007/09/08.1
[4]
http://www.mysql.com/
[5]
http://www.postgresql.org/
Email author at
[email protected]