Difference between revisions of "Dev:Source code"

From Synfig Studio :: Documentation
Jump to: navigation, search
m (Added to the Code category)
m
 
(25 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:Code]]
+
{{Title|Source code}}
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. Anonymous access to the Synfig Subversion repository for Synfig is now enabled! Here are the URLs to the respective repositories:
+
{{Category|Code}}
 +
{{Category|Permalink}}
  
* http://svn.voria.com/code/ETL/
+
Hey you! Do you want access to bleeding-edge Synfig? Well, I have good news. We provide a way to get the code:  
* http://svn.voria.com/code/synfig-docs/
+
* http://svn.voria.com/code/synfig-core/
+
* http://svn.voria.com/code/synfig-studio/
+
  
From the command line, to check out synfig, you would type:
+
*Using git (one repository)
  
  svn co http://svn.voria.com/code/synfig-core/trunk/ synfig
+
Once you grab the code, you will need to follow the {{l|Dev:Build Instructions|build instructions}}.
  
You can also download a [http://synfig.org/code/synfig-svn-checkout.tar.gz daily updated svn checkout] that you can update using svn up. This was created using a [[Subversion|procedure]] by [[User:Dooglus|dooglus]].
+
Commit notifications to master branch are <strike>sent to [http://cia.vc/stats/project/synfig CIA] and</strike> shown up in the {{l|Contact|IRC channel}}.
  
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 Github==
  
Once you grab the code, you will need to bootstrap the build environment and then [[Build instructions|build the code]].
+
Anonymous access:
  
Commit notifications are sent to [http://cia.vc/stats/project/synfig CIA] and show up in the [[Communication|IRC channel]].
+
  git clone git://github.com/synfig/synfig.git
 +
People with commit access should use this command instead:
  
While you are browsing the code, you may wish to refer to these links:
+
  git clone git@github.com:synfig/synfig.git
  
* [[Source Outline|source code outline]]
+
Or this one if you prefer https protocol:
* [[Source Glossary|source code glossary]]
+
* [http://synfig.org/api/ API documentation]
+
* [[Source:ETL_make_check|ETL make check failures]]
+
* [[Source:Layers|Mapping between layer types, classes and .cpp files]]
+
* [[Source:class_ValueNode|ValueNode types]]
+
* [[Source:BlendMethods|Blend Method enumeration values]]
+
  
== GIT ==
+
git clone https://github.com/synfig/synfig.git
  
We are trialling [http://git.or.cz/ git] and may switch to it:
+
You can also check out the [https://github.com/synfig/synfig web interface] to that repository.
  
  git clone git://synfig.org/git/ETL.git
+
Check out [https://help.github.com Github help page] for further references.
  git clone git://synfig.org/git/synfig.git
+
  git clone git://synfig.org/git/synfigstudio.git
+
  
People behind restrictive firewalls may be able to use these instead:
+
=Proposed git workflow=
  
  git clone http://synfig.org/git/ETL.git
+
* Consider the '''master''' branch the stable one.  
  git clone http://synfig.org/git/synfig.git
+
* Each coder should have a '''username_master''' branch where all the small changes are done.
  git clone http://synfig.org/git/synfigstudio.git
+
* 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.64.0 -> 0.64.1
 +
** 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.64.1 -> 0.65.0
  
People with commit access should use these commands instead:
+
=See Also=
 
+
While you are browsing the code, you may wish to refer to these links:
  git clone git@synfig.org:ETL.git
+
  git clone git@synfig.org:synfig.git
+
  git clone git@synfig.org:synfigstudio.git
+
 
+
You can also check out the [http://synfig.org/gitweb/ web interface] to these repositories.
+
 
+
Also, dooglus maintains a git-svn repository of synfig and has a [http://kibi.dyndns.org:8083/~dooglus/gitweb.pl?p=synfig;a=summary gitweb interface] for it.
+
 
+
Proposed git workflow:
+
  
* Do all work on the '''master''' branch
+
* [http://www.synfig.org/issues/thebuggenie/synfig Bug tracker]
* Latest stable releases should be tagged with '''stable-release'''.
+
* [http://sourceforge.net/p/synfig/mailman/synfig-devl/ Synfig Dev mailing list]
* Latest development releases should be tagged with '''devel-release'''.
+
==Code overview==
* All releases should be tagged with their version number (with no extra chars): '''0.61.08'''.
+
* [http://download.tuxfamily.org/synfig/api/index.html API documentation]
* For now, we don't need a stable release branch, when/if we do:
+
* {{l|Dev:Source Outline|source code outline}}
** Branch the '''stable-release''' tag (or whatever is appropriate) to something like '''0.62'''.
+
* {{l|Dev:Source Glossary|source code glossary}}
** Change the '''stable-branch''' symbolic-ref branch to point to the '''0.62''' branch.  
+
* {{l|Dev:Layers|Mapping between layer types, classes and .cpp files}}
** Cherry-pick commits from the '''master''' branch to the stable branch where possible.
+
* {{l|Dev:class_ValueNode|ValueNode types}}
** Commit directly to the stable branch only when cherry-picks are not possible.
+
* {{l|Dev:BlendMethods|Blend Method enumeration values}}
* Work on new non-trivial features/fixes on public topic branches where possible
+
==Others==
* Obviously commit trivial fixes straight to the '''master''' or '''stable-branch''' branch.
+
* {{l|Dev:ETL_make_check|ETL make check failures}}
* Rebase & rework branches to keep history more sane, linear and atomic
+
* {{l|Interesting Readings}}
  
Proposed set of git repositories:
+
<!--
 +
Proposed set of git repositories (this section is outdated):
  
 
* admin.git - gitosis admin settings - holds groups, repos and users
 
* admin.git - gitosis admin settings - holds groups, repos and users
Line 75: Line 65:
 
** code/synfig.git - synfig
 
** code/synfig.git - synfig
 
** code/synfigstudio.git - synfigstudio
 
** code/synfigstudio.git - synfigstudio
* packages/* - bits for various packaging systems
+
* pkg/* - bits for various packaging systems
** packages/windows.git - Windows packaging (needs separating from the code repos)
+
** pkg/windows.git - Windows packaging (needs separating from the code repos)
** packages/macos.git - MacOS packaging (needs separating from the code repos)
+
** pkg/macos.git - MacOS packaging (needs separating from the code repos)
** packages/jhbuild.git - JHBuild moduleset (needs writing)
+
** pkg/jhbuild.git - JHBuild moduleset (needs writing)
** packages/autopackage.git - Autopackage bits (needs writing)
+
** pkg/autopackage.git - Autopackage bits (needs writing)
* website/* - various bits used to maintain the website
+
* web/* - various bits used to maintain the website
** website/skin.git - skin for the website
+
** web/skin.git - skin for the website
** website/content.git - content for the website (pending switch to ikiwiki)
+
** web/content.git - content for the website (pending switch to ikiwiki)
* scripts/* - various scripts needed
+
* misc/* - various stuff needed
** scripts/svn2git.git - the scripts used to convert the SVN repo to git
+
** misc/svn2git.git - the scripts used to convert the SVN repo to git
 +
-->

Latest revision as of 17:55, 16 March 2017

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)

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

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

GIT repository at Github

Anonymous access:

 git clone git://github.com/synfig/synfig.git 

People with commit access should use this command instead:

 git clone git@github.com:synfig/synfig.git

Or this one if you prefer https protocol:

git clone https://github.com/synfig/synfig.git

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

Check out Github help page for further references.

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.64.0 -> 0.64.1
    • 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.64.1 -> 0.65.0

See Also

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

Code overview

Others