Difference between revisions of "Subversion"

From GnuCash
Jump to: navigation, search
(corrected my pasting stupidity)
(Remove the obsolete information itself. Anybody interested can view the history.)
(34 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Our source code is hosted on the Subversion server svn.gnucash.org. For accessing the repository, you can choose many methods. The most direct method is using subversion as a client (also called svn). This is explained on this page.
+
=This page is obsolete=
  
Alternatively, you can use [[git]] as a method of accessing the source code. Or you can use svn-svk (FIXME: please add link here).
+
GnuCash has switched to git to manage its source code. Please refer to the [[git]] page if you want to check out the source code. Do not start from svn anymore.
  
There is also a branch available via [[bazaar]] which is very quick to check out.
+
[[Category:Development]]
 
 
=Repository URLs=
 
 
 
The various base URLs look like:
 
 
 
  anonymous:  <nowiki>http://svn.gnucash.org/repo/gnucash/trunk</nowiki>
 
  developer:  svn+ssh://username@svn.gnucash.org/repo/gnucash/trunk
 
      trac:  http://svn.gnucash.org/trac
 
 
 
Note: If you are having problems with the http:// anonymous access, make sure your subversion is compiled with [http://www.webdav.org/neon/ neon] support.
 
 
 
Note: If you are behind a proxy (http firewall), you need to manually set the proxy name and authentication information in one of your local svn configuration file, namely in <tt>$HOME/.subversion/servers</tt> . Just open that file with a text editor and scroll to the end; you will find instructions there on how to set the variables. See also http://subversion.tigris.org/faq.html#proxy
 
 
 
=Common Commands=
 
 
 
To get what used to be CVS HEAD, you will need to get the svn TRUNK:
 
 
 
    svn checkout <nowiki>http://svn.gnucash.org/repo/gnucash/trunk</nowiki> gnucash
 
 
 
The argument "gnucash" above can be whatever you want your local directory to be called, and is optional. If you leave it out, you'll have a directory called "trunk" created containing all the source code.
 
 
 
If you want the latest 2.2.x code, you'd need to pull from the 2.2 branch, as follows:
 
 
 
    svn checkout <nowiki>http://svn.gnucash.org/repo/gnucash/branches/2.2</nowiki> gnucash-2.2
 
 
 
And if you want the released code for a specific release (or tag), you'd use:
 
 
 
    svn checkout <nowiki>http://svn.gnucash.org/repo/gnucash/tags/1.8.12</nowiki> gnucash-1.8.12
 
 
 
And to update, just cd into the directory containing the sources you want updated and execute a simple
 
 
 
    svn update
 
 
 
To switch a TRUNK working copy to the 2.2 branch, cd into the directory containing the sources you want updated and do this:
 
 
 
    svn switch <nowiki>http://svn.gnucash.org/repo/gnucash/branches/2.2</nowiki>
 
 
 
You probably want to continue reading at the [[Building]] page. Otherwise, continue on below for information on how to use subversion.
 
 
 
= SVN tutorial =
 
 
 
Now that the gnucash repository is using svn for version control (since 2005-11-04), the need for a quick tutorial on how to get the sources might be in order. There was some introduction about SVN in an [http://lists.gnucash.org/pipermail/gnucash-devel/2005-October/014333.html e-mail] on gnucash-devel:
 
 
 
The excellent "[http://svnbook.red-bean.com/ Version Control with Subversion] is a very good resource for information about subversion. 
 
 
 
Specifically, [http://svnbook.red-bean.com/en/1.1/ch03.html Chapter 3. Guided Tour]
 
and [http://svnbook.red-bean.com/en/1.1/apa.html Appendix A. Subversion for CVS Users] are relevant.
 
 
 
The command-line client `<tt>svn</tt>` has a nice integrated help system; `<tt>svn help</tt>`
 
will provide the top-level command list, and `<tt>svn help <command></tt>` detailed
 
help for the specific command.
 
 
 
The bottom line is that getting the source via svn isn't altogether different from getting it using cvs.
 
 
 
=CVS to SVN cross reference=
 
{| cellpadding="2" cellspacing="0" border="1"
 
! CVS command
 
! SVN command
 
! Notes
 
|-
 
| cvs checkout
 
| svn checkout
 
|
 
|-
 
| cvs commit
 
| svn commit
 
|
 
|-
 
| cvs status
 
| svn status
 
| ...but the svn one is actually useful :)
 
|-
 
| cvs log
 
| svn log
 
|
 
|-
 
| cvs annotate
 
| svn blame
 
|
 
|-
 
| cvs diff
 
| svn diff
 
|
 
|-
 
| cvs diff -D 2006-01-01
 
| svn diff -r {2006-01-01}:HEAD
 
|
 
|-
 
| cvs update
 
| svn update, svn switch
 
|
 
|-
 
| cvs update -C
 
| svn revert
 
|
 
|-
 
| cvs update -j [...]
 
| svn merge
 
|
 
|-
 
| <nowiki> ---- </nowiki>
 
| svn resolved [conflicting merges must be explicitly resolved]
 
|
 
|-
 
| cvs add
 
| svn add, svn mkdir
 
|
 
|-
 
| cvs remove
 
| svn delete
 
|
 
|-
 
|<nowiki>  ----  </nowiki>
 
| svn move
 
|
 
|-
 
| cvs [r]tag [-b]
 
| svn copy
 
|
 
|}
 
 
 
 
 
Enjoy!
 
 
 
=SVN write access=
 
 
 
FAQ: Is it possible to get SVN write access?
 
 
 
A: In principle yes, but we are quite conservative with giving out new SVN write accounts. For occasional changes people are encouraged to submit patches. We do add people as developers if they stick around, supply lots of patches, become highly involved in the project, hang out on IRC, and generally show some level of clue and prove some level of trust. But in the meantime, patches in email are the suggested route, as has been stated at other places. --[[User:Cstim|Cstim]] 08:00, 8 January 2006 (EST)
 
 
 
Note: For keeping track of the various branches in SVN and have patch creation made much much easier, it might be very helpful to use one of the many tools to maintain a ''local copy'' of the SVN repository. Some of these options are:
 
* [[git]] with ''git-svn''
 
* Maintaining a SVN repository on your own: How to maintain your own local subversion branch of someone else's repository, keep it synced with changes upstream, and generate patches: http://www.parit.ca/Weblog/archive/2008/07/05/keeping-up-with-the-joneses-svn-repo
 
* Bazaar with ''bzr-svn''
 
Other options exists as well; feel free to edit this wiki page.
 

Revision as of 14:16, 19 September 2014

This page is obsolete

GnuCash has switched to git to manage its source code. Please refer to the git page if you want to check out the source code. Do not start from svn anymore.