I'm working on porting FreeGLUT to Android!
Since I don't have access so the repository (I'm not a regular contributor), and since it will be a BIG patch, I thought I'd try a git-svn branch. So this won't be a post on OpenGL for once
I'm not an expert at managing Git branch but here's how I set it up.
In this case, let's forget about importing tags: they don't have the same directory branch point in the hierarchy (sometimes the freeglut/ module, sometimes the parent directory), and git-svn only correctly supports set of sane tags that track the same initial directory.
SVN is SLOW, especially remotely. I suggest you make a rsync copy of the repository first, it will greatly speed up the import :
rsync -avHSP freeglut.svn.sourceforge.net::svn/freeglut/ freeglut.svn/
Then start the import with git-svn :
git svn clone --trunk=trunk/freeglut/freeglut file://$(pwd)/freeglut.svn/ freeglut-git/
And edit .git/config
to point to https://freeglut.svn.sourceforge.net/svnroot/freeglut :
[svn-remote "svn"]
url = https://freeglut.svn.sourceforge.net/svnroot/freeglut
fetch = trunk/freeglut/freeglut:refs/remotes/trunk
I work with 2 branches:
- master : the SVN on-going sync - may be rebased to push with
git svn dcommit
- android : my feature branch - not rebased and hence trackable by contributors
Here's how I synchronize the upstream repository and merge it regularly with my feature branch:
git svn fetch
git checkout master
git merge remotes/trunk
git checkout android # my feature branch
git merge master
# if conflict
git add .../sthing.c
git commit -m "Merge master"
git push
Any better way?
The ongoing work is available at https://gitorious.org/freeglut/android
http://www-cs-students.stanford.edu/~blynn/gitmagic/ch03.html#_guerilla_version_control
Have fun, //mirabilos
Thanks for the link!
I wondering if the 'master' is really necessary. People can't reuse it to make 'svn fetch' faster, and we only need it when dcommitting, so this could be considered a temporary branch.
Still usefull to make quick diffs against the trunk when you clone the Git repo without syncing all the SVN repo.