Difference between revisions of "Dev:Source code"

From Synfig Studio :: Documentation
Jump to: navigation, search
m (added a link to the Interesting_links page.)
(Update repositories information)
Line 1: Line 1:
 
[[Category:Code]] [[Category:Permalink]]
 
[[Category:Code]] [[Category:Permalink]]
  
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide two ways to get the code:  
+
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code:  
*Using subversion (three repositories)
+
 
 
*Using git (one repository)
 
*Using git (one repository)
 +
*Using svn (three repositories). '''DISCONTINUED'''
  
Once you grab the code, you will need to bootstrap the build environment and then [[Build instructions|build the code]].
+
Once you grab the code, you will need to follow the [[Build instructions|build instructions]].
  
Commit notifications are sent to [http://cia.vc/stats/project/synfig CIA] and show up in the [[Contact|IRC channel]].
+
Commit notifications to master branch are sent to [http://cia.vc/stats/project/synfig CIA] and show up in the [[Contact|IRC channel]].
  
 
While you are browsing the code, you may wish to refer to these links:
 
While you are browsing the code, you may wish to refer to these links:
Line 13: Line 14:
 
* [http://sourceforge.net/tracker/?atid=757416&group_id=144022&func=browse Bug tracker]
 
* [http://sourceforge.net/tracker/?atid=757416&group_id=144022&func=browse Bug tracker]
 
* [http://patches.synfig.org/groups/synfig/ Patches review board]
 
* [http://patches.synfig.org/groups/synfig/ Patches review board]
* [http://synfig.org/api/ API documentation]
+
* [http://synfig.sourceforge.net/api/ API documentation]
 
* [[Source Outline|source code outline]]
 
* [[Source Outline|source code outline]]
 
* [[Source Glossary|source code glossary]]
 
* [[Source Glossary|source code glossary]]
Line 22: Line 23:
 
* [[Interesting Readings]]
 
* [[Interesting Readings]]
  
 +
== GIT repository at Sorceforge==
  
== SVN repository at Sourceforge ==
+
Anonymous access:
 +
 
 +
  git clone git://synfig.git.sourceforge.net/gitroot/synfig
 +
People with commit access should use this command instead:
 +
 
 +
  git clone ssh://USERNAME@synfig.git.sourceforge.net/gitroot/synfig
 +
 
 +
You can also check out the [http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig web interface] to that repository.
 +
 
 +
Check out [http://sourceforge.net/apps/trac/sourceforge/wiki/Git Sourceforge Git wiki page] for further references.
 +
 
 +
== SVN repository at Sourceforge (THIS REPOSITORY HAS BEEN DISCONTINUED)==
  
 
Anonymous access:  
 
Anonymous access:  
Line 43: Line 56:
 
You can also download daily updated svn exports for [http://synfig.org/code/ETL-svn.tar.gz ETL], [http://synfig.org/code/synfig-svn.tar.gz synfig], [http://synfig.org/code/synfigstudio-svn.tar.gz synfigstudio].
 
You can also download daily updated svn exports for [http://synfig.org/code/ETL-svn.tar.gz ETL], [http://synfig.org/code/synfig-svn.tar.gz synfig], [http://synfig.org/code/synfigstudio-svn.tar.gz synfigstudio].
  
 
== GIT repository at Sorceforge==
 
 
[[User:Genete|Genete]] is maintaining a single git repository at Sourceforge. It includes the changes done in SVN and also other code development his working on. The idea is completely migrate to git in the future.
 
 
Anonymous access:
 
 
  git clone git://synfig.git.sourceforge.net/gitroot/synfig
 
People with commit access should use this command instead:
 
 
  git clone ssh://USERNAME@synfig.git.sourceforge.net/gitroot/synfig
 
 
You can also check out the [http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig web interface] to that repository.
 
 
Check out [http://sourceforge.net/apps/trac/sourceforge/wiki/Git Sourceforge Git wiki page] for further references.
 
  
 
==Proposed workflow and other repositories ==
 
==Proposed workflow and other repositories ==
Line 63: Line 61:
 
Proposed git workflow:
 
Proposed git workflow:
  
* Do all work on the '''master''' branch
+
* Consider the '''master''' branch the stable one.
* Latest stable releases should be tagged with '''stable-release'''.
+
* Each coder should have a '''username_master''' branch where all the small changes are done.  
* Latest development releases should be tagged with '''devel-release'''.
+
* Once the '''username_master''' branch is considered stable it can be rebased/merged to '''master'''.
* All releases should be tagged with their version number (with no extra chars): '''0.61.08'''.
+
* Work on new non-trivial features/fixes on '''username_feature''' branches.
* For now, we don't need a stable release branch, when/if we do:
+
* Once the '''username_feature''' branch is considered stable it can be rebased/merged to '''master'''.
** Branch the '''stable-release''' tag (or whatever is appropriate) to something like '''0.62'''.
+
* Obviously commit trivial fixes straight to the '''master'''.
** Cherry-pick commits from the '''master''' branch to the stable branch where possible.
+
* If it is possible, rebase & rework branches to keep history more sane, linear and atomic.
** Commit directly to the stable branch only when cherry-picks are not possible.
+
* Releases are tagged according to following criteria:
* Work on new non-trivial features/fixes on public topic branches where possible
+
** If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.61.09 -> 0.61.10
* Obviously commit trivial fixes straight to the '''master''' or the stable branch.
+
** If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.61.09 -> 0.62.00
* Rebase & rework branches to keep history more sane, linear and atomic
+
  
 
Proposed set of git repositories:
 
Proposed set of git repositories:

Revision as of 20:36, 6 July 2009


Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code:

  • Using git (one repository)
  • Using svn (three repositories). DISCONTINUED

Once you grab the code, you will need to follow the build instructions.

Commit notifications to master branch are sent to CIA and show up in the IRC channel.

While you are browsing the code, you may wish to refer to these links:

GIT repository at Sorceforge

Anonymous access:

 git clone git://synfig.git.sourceforge.net/gitroot/synfig 

People with commit access should use this command instead:

 git clone ssh://USERNAME@synfig.git.sourceforge.net/gitroot/synfig

You can also check out the web interface to that repository.

Check out Sourceforge Git wiki page for further references.

SVN repository at Sourceforge (THIS REPOSITORY HAS BEEN DISCONTINUED)

Anonymous access:

Web interface:

To checkout code from the command line:

 svn co https://synfig.svn.sourceforge.net/svnroot/synfig/ETL/trunk/ etl
 svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-core/trunk/ synfig-core
 svn co https://synfig.svn.sourceforge.net/svnroot/synfig/synfig-studio/trunk/ synfig-studio

You can also download a daily updated svn checkout that you can update using svn up. This was created using a procedure by dooglus.

You can also download daily updated svn exports for ETL, synfig, synfigstudio.


Proposed workflow and other repositories

Proposed git workflow:

  • Consider the master branch the stable one.
  • Each coder should have a username_master branch where all the small changes are done.
  • Once the username_master branch is considered stable it can be rebased/merged to master.
  • Work on new non-trivial features/fixes on username_feature branches.
  • Once the username_feature branch is considered stable it can be rebased/merged to master.
  • Obviously commit trivial fixes straight to the master.
  • If it is possible, rebase & rework branches to keep history more sane, linear and atomic.
  • Releases are tagged according to following criteria:
    • If the release consist on a few trivial set of features or bug fixes then increase the third numeration level: 0.61.09 -> 0.61.10
    • If the release consist on a set of important features and/or includes non backward compatible file format, then increase the second level numeration: 0.61.09 -> 0.62.00

Proposed set of git repositories:

  • admin.git - gitosis admin settings - holds groups, repos and users
  • code/* - direct conversions from SVN
    • code/ETL.git - ETL
    • code/synfig.git - synfig
    • code/synfigstudio.git - synfigstudio
  • pkg/* - bits for various packaging systems
    • pkg/windows.git - Windows packaging (needs separating from the code repos)
    • pkg/macos.git - MacOS packaging (needs separating from the code repos)
    • pkg/jhbuild.git - JHBuild moduleset (needs writing)
    • pkg/autopackage.git - Autopackage bits (needs writing)
  • web/* - various bits used to maintain the website
    • web/skin.git - skin for the website
    • web/content.git - content for the website (pending switch to ikiwiki)
  • misc/* - various stuff needed
    • misc/svn2git.git - the scripts used to convert the SVN repo to git