Difference between revisions of "Git"

From GnuCash
Jump to: navigation, search
(add git-svn dcommit)
(some more proposed commands)
Line 3: Line 3:
 
Webpage: http://git.or.cz
 
Webpage: http://git.or.cz
  
Note: You should install git >= 1.5.0 because svn handling has improved considerably with these versions.
+
Note: You should install git >= 1.5.0 because svn handling has improved considerably with these versions. Really. Don't bother with any 1.4 version; it plainly sucks in comparison to the latest versions.
  
 
Here's how you as a developer get your local git repository if you only want ''trunk'' (git-1.5.2):
 
Here's how you as a developer get your local git repository if you only want ''trunk'' (git-1.5.2):
 
  git-svn clone -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash/trunk
 
  git-svn clone -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash/trunk
  
Here's how you as a developer get your local git repository if you want ''trunk'' and all branches (git-1.5.2):
+
That's it. The revision subset r16500:HEAD will download approx. 30-40 MB of data. If you download larger revision spans, the download amount might go up into the hundreds of MBs.
git-svn clone -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash -s
 
  
That's it. (Starting at r16500 is a good opportunity because the 2.2 branch is branched at approx. r16560.)
+
Here's how you as a developer get your local git repository if you want ''trunk and all branches'' (git-1.5.2), pay attention to the ''-s'' switch:
 +
git-svn clone -s -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash
 +
git reset --hard remotes/trunk
 +
The latter command is necessary if your local ''master'' should represent the ''trunk'' of SVN, which is probably what you want. You need ''reset --hard'' here instead of ''rebase'' because the revision subset ''r16500:HEAD'' probably doesn't contain the original branch point between some of the other svn branches and trunk. If the branch point is included in your cloned revision subset, ''git rebase remotes/trunk'' would work as well and is safer (i.e. won't throw away any local changes without asking).
 +
 
 +
Starting at r16500 is a good opportunity because the 2.2 branch is branched at approx. r16560; if you need the gda-dev: that one was created at r15090.
  
 
Here's how you run the equivalent of "svn update":
 
Here's how you run the equivalent of "svn update":

Revision as of 19:56, 22 December 2007

Git is an extremely cool version control system, but a bit geeky to get used to it. For gnucash, it can be used to hold a local copy of the full svn repository, which means extremely fast version browsing. Also, it is possible to prepare your commits in your local repository first, and sending them to the gnucash svn server sometime later in a batch. Also extremely cool.

Webpage: http://git.or.cz

Note: You should install git >= 1.5.0 because svn handling has improved considerably with these versions. Really. Don't bother with any 1.4 version; it plainly sucks in comparison to the latest versions.

Here's how you as a developer get your local git repository if you only want trunk (git-1.5.2):

git-svn clone -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash/trunk

That's it. The revision subset r16500:HEAD will download approx. 30-40 MB of data. If you download larger revision spans, the download amount might go up into the hundreds of MBs.

Here's how you as a developer get your local git repository if you want trunk and all branches (git-1.5.2), pay attention to the -s switch:

git-svn clone -s -r16500:HEAD svn+ssh://USERNAME@svn.gnucash.org/repo/gnucash
git reset --hard remotes/trunk

The latter command is necessary if your local master should represent the trunk of SVN, which is probably what you want. You need reset --hard here instead of rebase because the revision subset r16500:HEAD probably doesn't contain the original branch point between some of the other svn branches and trunk. If the branch point is included in your cloned revision subset, git rebase remotes/trunk would work as well and is safer (i.e. won't throw away any local changes without asking).

Starting at r16500 is a good opportunity because the 2.2 branch is branched at approx. r16560; if you need the gda-dev: that one was created at r15090.

Here's how you run the equivalent of "svn update":

git-svn rebase

That's it.

Once you committed your changes to your local git repository, here's how you commit the local changes upstream into gnucash's SVN repository:

git-svn dcommit

Did I mention I think git is very cool?