Difference between revisions of "Git"
(→Installation: clarify where git svn init should be done from) |
(→Branches: adding "git svn fetch -p") |
||
Line 43: | Line 43: | ||
git checkout -b gramps34 mirror/maintenance/gramps34 | git checkout -b gramps34 mirror/maintenance/gramps34 | ||
+ | |||
+ | Then fetch the corresponding svn rev history with | ||
+ | |||
+ | git svn fetch -p | ||
+ | |||
+ | (This can also be done at a later stage, as long as you have switched to the branch with "git checkout gramps34".) | ||
The branch command allows you to see all the local branches and indicates which branch is active. | The branch command allows you to see all the local branches and indicates which branch is active. |
Revision as of 10:10, 11 June 2013
A guide for people who would like to use Git rather than subversion (SVN).
John Ralls has provided a Git mirror of the Gramps subversion repository which is updated every day.
Installation
First install git and the git-svn bridge. In Ubuntu use the following command:
sudo apt-get install git git-svn
Note: The git package is called git-core in older distributions.
Next download a local copy of Gramps from the mirror provided by John Ralls. This will take about 5 minutes.
git clone -o mirror https://github.com/jralls/Gramps
Finally initialise the remote svn connection from the local copy directory. Replacing <USERNAME> with your SourceForge username.
cd Gramps git svn init --prefix=mirror/ -s svn+ssh://<USERNAME>@svn.code.sf.net/p/gramps/code
Workflow
By default a branch called trunk is created for you. To update a branch with the latest changes in the git mirror use:
git pull --rebase
When committing changes to the subversion repository we need a linear history, so we specify the --rebase option.
To commit changes back to the subversion repository use:
git svn dcommit
Caution: Do not attempt to push changes back to the git mirror.
Branches
To see the remote branches available in the mirror use:
git remote show mirror
To create a new local tracking branch use the checkout command. For example, to create a branch that tracks the gramps34 maintenance branch use:
git checkout -b gramps34 mirror/maintenance/gramps34
Then fetch the corresponding svn rev history with
git svn fetch -p
(This can also be done at a later stage, as long as you have switched to the branch with "git checkout gramps34".)
The branch command allows you to see all the local branches and indicates which branch is active.
git branch
Before switching to another branch it is useful to remove untracked files created by the build process. You can do this with the following command:
git clean -dxf
To switch to a branch use the checkout command. For example, to switch to trunk use:
git checkout trunk
References
- http://git-scm.com/book
- http://wiki.gnucash.org/wiki/Git
- http://www.kernel.org/pub/software/scm/git/docs/git-svn.html
- http://www.tfnico.com/presentations/git-and-subversion
- http://blog.tfnico.com/2011/09/git-svn-mirror-without-annoying-update.html