<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://techbase.kde.org/skins/common/feed.css?0.2"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Odysseus&amp;feedformat=atom</id>
		<title>KDE TechBase - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://techbase.kde.org/api.php?action=feedcontributions&amp;user=Odysseus&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Special:Contributions/Odysseus"/>
		<updated>2013-06-20T03:27:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2012-10-30T14:56:41Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.  This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
For more information on how the KDE Git Repositories are organized, please see the [[Getting_Started/Sources|Sources]] page or the [https://projects.kde.org/projects KDE Git Projects] page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Please note that some KDE modules are still using SVN, for more details read the [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Configuration|Git Configuration page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
No formal workflow policy currently exists, but a number of draft proposals have been made:&lt;br /&gt;
* [[Development/Git/Simple_Workflow]]&lt;br /&gt;
* [[Development/Git/Feature_Branch_Workflow]]&lt;br /&gt;
* [[Development/Tutorials/Git/Feature_Development_Workflow]]&lt;br /&gt;
* http://community.kde.org/Frameworks/Git_Workflow&lt;br /&gt;
&lt;br /&gt;
The SVN Commit Policy is being reviewed to be replaced with a new Commit Policy applying to both SVN and Git:&lt;br /&gt;
* [[Policies/SVN_Commit_Policy]]&lt;br /&gt;
* [[Policies/Draft/Commit_Policy]]&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Recipes|Git Recipes page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Please help filling this section by&lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/documentation Links to git official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/course/svn.html The git-svn Crash Course]&lt;br /&gt;
&lt;br /&gt;
=== Git books === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]&lt;br /&gt;
- Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] &lt;br /&gt;
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes = &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Keep:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Basics|Basics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/git-svn|Git-svn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/kde-qt| Kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Amarok Git Tutorial| The Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/Sysadmin/GitKdeOrgManual Git-KDE Manual]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda Git Workflow Agenda]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea Git Workflow Agenda, Steve's Idea]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4| Build KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4.x|Build KDE 4.x]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Prerequisites|Prerequisites]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Windows/subversion|Subversion on Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increase Productivity with Scripts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/kdesrc-build|Kdesrc-build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Anonymous SVN|Anonymous SVN]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Sources/Using_Subversion_with_KDE|Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Using_an_IDE_with_KDE4|Using an IDE with KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Commit_Policy|SVN Commit Policy]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Guidelines|SVN Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tools|Development Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Recipes|Git Recipes]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/decoding-git|Decoding Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/rekonq/Git_with_rekonq_HowTo|Git with Rekonq How-to]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/Related/Subversion|Subversion]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MovetoGit|Move to Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MoveToGit/StepsToMove|Steps to Move]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/Get a SVN Account|Get a SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/First Steps with your KDE SVN Account|First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure === &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build|Getting_Started/Build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Environment|Getting_Started/Build/Environment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Requirements|Getting_Started/Build/Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Qt|Getting_Started/Build/Q]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/KdeSupport|Getting_Started/Build/KdeSupport]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Windows|Getting_Started/Build/Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Mac_OS_X|Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Shell|Getting_Started/Run/Shell]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Nested_Session|Getting_Started/Run/Nested_Session]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Full_Session|Getting_Started/Run/Full_Session&amp;gt;]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2012-10-30T11:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.  This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
For more information on how the KDE Git Repositories are organized, please see the [[Getting_Started/Sources|Sources]] page or the [https://projects.kde.org/projects KDE Git Projects] page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Please note that some KDE modules are still using SVN, for more details read the [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Configuration|Git Configuration page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
No formal workflow policy currently exists, but a number of draft proposals have been made:&lt;br /&gt;
* [[Development/Git/Simple_Workflow]]&lt;br /&gt;
* [[Development/Git/Feature_Branch_Workflow]]&lt;br /&gt;
* [[Development/Tutorials/Git/Feature_Development_Workflow]]&lt;br /&gt;
* http://community.kde.org/Frameworks/Git_Workflow&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Recipes|Git Recipes page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Please help filling this section by&lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/documentation Links to git official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/course/svn.html The git-svn Crash Course]&lt;br /&gt;
&lt;br /&gt;
=== Git books === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]&lt;br /&gt;
- Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] &lt;br /&gt;
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes = &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Keep:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Basics|Basics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/git-svn|Git-svn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/kde-qt| Kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Amarok Git Tutorial| The Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/Sysadmin/GitKdeOrgManual Git-KDE Manual]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda Git Workflow Agenda]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea Git Workflow Agenda, Steve's Idea]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4| Build KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4.x|Build KDE 4.x]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Prerequisites|Prerequisites]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Windows/subversion|Subversion on Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increase Productivity with Scripts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/kdesrc-build|Kdesrc-build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Anonymous SVN|Anonymous SVN]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Sources/Using_Subversion_with_KDE|Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Using_an_IDE_with_KDE4|Using an IDE with KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Commit_Policy|SVN Commit Policy]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Guidelines|SVN Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tools|Development Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Recipes|Git Recipes]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/decoding-git|Decoding Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/rekonq/Git_with_rekonq_HowTo|Git with Rekonq How-to]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/Related/Subversion|Subversion]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MovetoGit|Move to Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MoveToGit/StepsToMove|Steps to Move]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/Get a SVN Account|Get a SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/First Steps with your KDE SVN Account|First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure === &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build|Getting_Started/Build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Environment|Getting_Started/Build/Environment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Requirements|Getting_Started/Build/Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Qt|Getting_Started/Build/Q]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/KdeSupport|Getting_Started/Build/KdeSupport]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Windows|Getting_Started/Build/Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Mac_OS_X|Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Shell|Getting_Started/Run/Shell]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Nested_Session|Getting_Started/Run/Nested_Session]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Full_Session|Getting_Started/Run/Full_Session&amp;gt;]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2012-10-30T11:41:50Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.  This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:91--&amp;gt;&lt;br /&gt;
For more information on how the KDE Git Repositories are organized, please see the [[Getting_Started/Sources|Sources]] page or the [https://projects.kde.org/projects KDE Git Projects] page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
Please note that some KDE modules are still using SVN, for more details read the [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Configuration|Git Configuration page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
No formal workflow policy currently exists, but a number of draft proposals have been made:&lt;br /&gt;
* [[Development/Git/Simple_Workflow]]&lt;br /&gt;
* [[Development/Git/Feature_Branch_Workflow]]&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Recipes|Git Recipes page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Please help filling this section by&lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/documentation Links to git official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/course/svn.html The git-svn Crash Course]&lt;br /&gt;
&lt;br /&gt;
=== Git books === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]&lt;br /&gt;
- Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] &lt;br /&gt;
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes = &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Keep:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Basics|Basics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/git-svn|Git-svn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/kde-qt| Kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Amarok Git Tutorial| The Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/Sysadmin/GitKdeOrgManual Git-KDE Manual]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda Git Workflow Agenda]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea Git Workflow Agenda, Steve's Idea]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4| Build KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4.x|Build KDE 4.x]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Prerequisites|Prerequisites]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Windows/subversion|Subversion on Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increase Productivity with Scripts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/kdesrc-build|Kdesrc-build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Anonymous SVN|Anonymous SVN]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Sources/Using_Subversion_with_KDE|Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Using_an_IDE_with_KDE4|Using an IDE with KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Commit_Policy|SVN Commit Policy]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Guidelines|SVN Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tools|Development Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Recipes|Git Recipes]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/decoding-git|Decoding Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/rekonq/Git_with_rekonq_HowTo|Git with Rekonq How-to]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/Related/Subversion|Subversion]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MovetoGit|Move to Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MoveToGit/StepsToMove|Steps to Move]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/Get a SVN Account|Get a SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/First Steps with your KDE SVN Account|First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure === &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build|Getting_Started/Build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Environment|Getting_Started/Build/Environment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Requirements|Getting_Started/Build/Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Qt|Getting_Started/Build/Q]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/KdeSupport|Getting_Started/Build/KdeSupport]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Windows|Getting_Started/Build/Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Mac_OS_X|Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Shell|Getting_Started/Run/Shell]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Nested_Session|Getting_Started/Run/Nested_Session]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Full_Session|Getting_Started/Run/Full_Session&amp;gt;]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble</id>
		<title>Projects/Marble</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble"/>
				<updated>2012-09-19T20:50:39Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Mapping Coordination */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Marble_logo.png]]&lt;br /&gt;
&lt;br /&gt;
== About Marble ==&lt;br /&gt;
;[[/Devices_and_Use_Cases|Devices and Use Cases]]&lt;br /&gt;
;[[/FAQ|Marble FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Success Stories: 3rd party applications using the Marble Library==&lt;br /&gt;
;[[/MarbleUsedBy|Software that makes use of Marble]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials: How to use the Marble Widget in your application ==&lt;br /&gt;
;[[/MarbleDesigner|with Qt Designer]]&lt;br /&gt;
;[[/MarbleWindows|On Windows, with Qt Creator/Qt Designer]]&lt;br /&gt;
&lt;br /&gt;
=== With C++ ===&lt;br /&gt;
;[[/MarbleCPlusPlus|Hello World]]&lt;br /&gt;
;[[/MarbleMarbleWidget|Changing basic map properties]]&lt;br /&gt;
;[[/MarbleSignalsSlots|Creating a window with controls]]&lt;br /&gt;
;[[/MarbleGeoPainter|Painting onto the map]]&lt;br /&gt;
;[[/LayerInterface|Drawing in Custom Layers]]&lt;br /&gt;
;[[/Routing/BasicRouting|Basic Routing]]&lt;br /&gt;
;[[/Runners/Search|Searching for Points of Interest]]&lt;br /&gt;
;[[/Runners/ReverseGeocoding|Reverse Geocoding]]&lt;br /&gt;
;[[/Runners/Parse|Parsing Files]]&lt;br /&gt;
;[[/Runners/PaintingGeoDataLineString|Painting LineString]]&lt;br /&gt;
;[[/Runners/DisplayGeoDataPlacemark|Displaying GeoData Documents]]&lt;br /&gt;
&lt;br /&gt;
;[[/MarblePython|with Python]]&lt;br /&gt;
&lt;br /&gt;
;[[/MarbleDBus|via a shell script]]&lt;br /&gt;
&lt;br /&gt;
== How to become a Marble developer (&amp;quot;Marblehead&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
=== So you are new to Marble development ... ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Welcome!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you'll get all the information you need to start Marble development:&lt;br /&gt;
&lt;br /&gt;
;[[/GoMarble|How to become a Marble Developer]]&lt;br /&gt;
&lt;br /&gt;
== Compiling Marble ==&lt;br /&gt;
;[[/LinuxCompiling|Compiling on Linux]]&lt;br /&gt;
;[[/WindowsCompiling|Compiling on Windows]]&lt;br /&gt;
;[[/MaemoEnvironment|Compiling on Maemo]]&lt;br /&gt;
;[[/MeeGoEnvironment|Compiling on MeeGo]]&lt;br /&gt;
;[[/PlasmaActiveEnvironment|Compiling for Plasma Active]]&lt;br /&gt;
;[[/MacCompiling|Compiling on Mac OS]]&lt;br /&gt;
;[[/QtCreator|Setting up QtCreator for Marble Development]]&lt;br /&gt;
&lt;br /&gt;
== Packaging Marble ==&lt;br /&gt;
&lt;br /&gt;
;[[/NewMarbleMoldules|New Marble Modules]] (future packaging advice)&lt;br /&gt;
&lt;br /&gt;
Here is some advice about how packaging is supposed to happen on the various platforms that are supported.&lt;br /&gt;
&lt;br /&gt;
;[[/LinuxPackaging|Packaging for Linux]]&lt;br /&gt;
;[[/WindowsPackaging|Packaging for Windows]]&lt;br /&gt;
;[[/MaemoPackaging|Packaging for Maemo]]&lt;br /&gt;
;[[/MeeGoPackaging|Packaging for MeeGo]]&lt;br /&gt;
;[[/MacPackaging|Packaging for Mac]]&lt;br /&gt;
&lt;br /&gt;
== Tools for Marble ==&lt;br /&gt;
&lt;br /&gt;
Here are some tools and checks that are performed on marble code:&lt;br /&gt;
;[https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=marble&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;cmdtype=doit&amp;amp;order=Importance Marble Open Bugs]&lt;br /&gt;
;[http://reviewboard.kde.org/groups/marble/ Review Board]&lt;br /&gt;
;[http://api.kde.org/4.x-api/kdeedu-apidocs/marble/html/index.html API Docs (KDE Trunk)]&lt;br /&gt;
;[http://www.englishbreakfastnetwork.org/apidocs/apidox-kde-4.x/kdeedu-marble.html APIDOX reports]&lt;br /&gt;
;[http://www.englishbreakfastnetwork.org/krazy/reports/kde-4.x/kdeedu/marble/index.html Krazy reports]&lt;br /&gt;
&lt;br /&gt;
== Programming Coordination ==&lt;br /&gt;
&lt;br /&gt;
Here are a few links to various issues we are working on:&lt;br /&gt;
;[[/Gsoc2010| Gsoc Students projects 2010]]&lt;br /&gt;
;[[/GsocGit| Use of git(orious) for GSOC]]&lt;br /&gt;
;[[/TODO|TODO list]]&lt;br /&gt;
;[[/MaemoTODO|Maemo specific TODO list]]&lt;br /&gt;
&lt;br /&gt;
;[[/GSoC2011| GSoC Students' projects 2011]]&lt;br /&gt;
;[http://community.kde.org/SoCiS/2011/Ideas#Marble_Virtual_Globe ESA SoCIS 2011 ideas]&lt;br /&gt;
&lt;br /&gt;
;[[/GSoC2012| GSoC Students' projects 2012]]&lt;br /&gt;
&lt;br /&gt;
=== Translation ===&lt;br /&gt;
;[[/MapTranslation|Map Translation]]&lt;br /&gt;
;[[/UiTranslation|UI Translation]]&lt;br /&gt;
;[[/GeoDataCoordinatesTranslation|GeoDataCoordinates Translation]]&lt;br /&gt;
&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
;[[/Mockups|Mockups]]&lt;br /&gt;
;[[/IconStatus|Icon Status]]&lt;br /&gt;
&lt;br /&gt;
=== Texture Mapping ===&lt;br /&gt;
;[[/TextureNG|Texture Mapping]]&lt;br /&gt;
&lt;br /&gt;
=== GeoData Library / KML ===&lt;br /&gt;
The base classes to manipulate geographic data&lt;br /&gt;
;[[/GeoData|GeoData Presentation]]&lt;br /&gt;
;[[/GeoData/GeoDataUse|Use cases for GeoData classes]]&lt;br /&gt;
;[http://websvn.kde.org/*checkout*/trunk/KDE/kdeedu/marble/src/lib/geodata/data/README.html GeoData API Description]&lt;br /&gt;
;[[/GeoData/GeoDataParsing|Parsing GeoData]]&lt;br /&gt;
;[[/GeoData/GeoDataWriter|Writing GeoData]]&lt;br /&gt;
;[[/GeoData/PointerVsImplicitShare|Pointer vs. Implicit Share]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;[[/KMLStatus|KML Status]]&lt;br /&gt;
;[[/GPXStatus|GPX Status]]&lt;br /&gt;
&lt;br /&gt;
Using GeoData:&lt;br /&gt;
;[[/Placemark|Placemarks Management]]&lt;br /&gt;
;[[/ModelView|Review of Model-View use in marble]]&lt;br /&gt;
&lt;br /&gt;
=== Geo Graphics View === &lt;br /&gt;
;[[/GeoGraphicsViewOverview|Overview of the GeoGraphicsView]]&lt;br /&gt;
;[[/GraphicsViewGeoParser| Interaction between GeoData and GeoGraphicsView]]&lt;br /&gt;
&lt;br /&gt;
=== GeoPainter / DGML ===&lt;br /&gt;
;[[/GeoPainter|GeoPainter]]&lt;br /&gt;
;[[/Dgml|DGML]]&lt;br /&gt;
&lt;br /&gt;
=== Plugin Interfaces ===&lt;br /&gt;
;[[/Plugins|Plugin interfaces]]&lt;br /&gt;
&lt;br /&gt;
=== Marble Runner ===&lt;br /&gt;
;[[/CoordinateRunner|Coordinate Runner]]&lt;br /&gt;
;[[/OsmNameFinderRunner|OSM Runner]]&lt;br /&gt;
;[[/RunnerHOWTO|Runner HOWTO]]&lt;br /&gt;
&lt;br /&gt;
=== Online Services ===&lt;br /&gt;
;[[/OnlineServices|Creating new Online Services]]&lt;br /&gt;
;[[/ListOfPossibleOnlineServices|List of possible Online Services]]&lt;br /&gt;
&lt;br /&gt;
=== Projections ===&lt;br /&gt;
;[[/WinkelIii|Winkel III]]&lt;br /&gt;
;[[/RobinsonProjection|Robinson projection]]&lt;br /&gt;
[http://www.radicalcartography.net/?projectionref A little overview of map projections]&lt;br /&gt;
&lt;br /&gt;
=== Tile Download ===&lt;br /&gt;
;[[/VectorTilingProposal|Vector Tiling Proposal]]&lt;br /&gt;
;[[/TileDownload|Tile Download]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
;[[/CustomMaps|How to customize maps]]&lt;br /&gt;
;[[/PNTFiles|How to change the PNT files used by Marble]]&lt;br /&gt;
;[[/MarblesSecrets|Marble's Secrets]]&lt;br /&gt;
;[[/ProxyConnection|How to use the Proxy]]&lt;br /&gt;
&lt;br /&gt;
=== GeoClue / GPS ===&lt;br /&gt;
;[[/GeoClue|GeoClue support in Marble]]&lt;br /&gt;
&lt;br /&gt;
=== XDG Base Directory Specification ===&lt;br /&gt;
;[[/xdg|XDG Base Directory Specification]]&lt;br /&gt;
&lt;br /&gt;
== Mapping Coordination ==&lt;br /&gt;
Possible maps we could use:&lt;br /&gt;
* [http://pelagios.dme.ait.ac.at/maps/greco-roman/ Tiled map of the classical world] see the [http://pelagios-project.blogspot.co.uk/2012/09/a-digital-map-of-roman-empire.html authors blog] for details &lt;br /&gt;
* [http://www.unearthedoutdoors.net/global_data/true_marble/download TrueMarble Global 250m images]&lt;br /&gt;
* [http://onearth.jpl.nasa.gov/ OnEarth NASA satellite images]&lt;br /&gt;
* [http://worldwindcentral.com/wiki/Add-on:ZoomIt! ZoomIt! (in parts proprietary)]&lt;br /&gt;
* [http://sos.noaa.gov/datasets/ NOAA Science on a Sphere]&lt;br /&gt;
* [http://efele.net/maps/tz/world/ Olsen Time Zone map in Shapefile format].  Public Domain.  Scripted to generate from current tz file.&lt;br /&gt;
&lt;br /&gt;
=== Natural Earth Vector Map ===&lt;br /&gt;
;[[/NaturalEarth|A proposal to use the Natural Earth vector map]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
;[[/HistoricalMaps|How to create Historical Maps]]&lt;br /&gt;
;[[/CustomMaps|How to create Custom Maps]]&lt;br /&gt;
&lt;br /&gt;
;[[/PalaeoMaps|Global Palaeogeography]]&lt;br /&gt;
&lt;br /&gt;
== Routing ==&lt;br /&gt;
;[[/OnlineRoutingImplementation|Implementation of Online-Routing]]&lt;br /&gt;
;[[/MaemoOfflineRouting|Installation of Marble and Gosmore on Maemo]]&lt;br /&gt;
;[[/RoutingRoadmap|Routing Roadmap]]&lt;br /&gt;
;[[/RoutingInstructions|Routing Instructions]]&lt;br /&gt;
&lt;br /&gt;
== valgrind  ==&lt;br /&gt;
if you want to fix memory leaks, you can run valgrind with:&lt;br /&gt;
&lt;br /&gt;
valgrind --leak-check=full --track-origins=yes --num-callers=30 marble 2&amp;gt;&amp;amp;1 | tee MARBLE_MEMCHECK&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
Summaries and logs of scheduled Marble meetings can be found on the following pages:&lt;br /&gt;
;[[/MarbleMeeting20081029|Wednesday Nov. 10th, 2008]]&lt;br /&gt;
&lt;br /&gt;
;[[/MarbleMeeting20101107|Marble Weekend Sprint, Nov. 5-7]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble/NaturalEarth</id>
		<title>Projects/Marble/NaturalEarth</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble/NaturalEarth"/>
				<updated>2012-05-01T11:33:15Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Spatialite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Natural Earth =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Marble currently uses the very old and outdated MWDBII dataset for its vector base map such as national borders and coastlines and we really need to replace it with more up-to-date data.  However, MWDBII has two key advantages, it is very compact in size enabling Marble to ship it by default, and the individual nodes have a zoom level value which speeds up drawing.&lt;br /&gt;
&lt;br /&gt;
The current vector layer also has the disadvantage of not being able to be manipulated either programtiacally or by the user.  This prevents it from being used for such things as KGeography or other educational uses where you would want to select and manipulate a geographic entity.&lt;br /&gt;
&lt;br /&gt;
Improving the vector base maps would thus consist of two closely related parts:&lt;br /&gt;
* Improving the vector drawing code to allow interaction with the vectors, and improved performance to allow more detailed vectors to be drawn.&lt;br /&gt;
* Importing a new base layer dataset.&lt;br /&gt;
&lt;br /&gt;
== Using NaturalEarth ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.naturalearthdata.com/ Natural Earth data set] is a &amp;quot;public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software.&amp;quot;  This data set seems ideal as a replacement for the MWDBII.&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Free / Public Domain data&lt;br /&gt;
* Regularly updated&lt;br /&gt;
* Wide variety of political and geographic features&lt;br /&gt;
* Available at 3 different scales: 1:10m 1:50m and 1:110m&lt;br /&gt;
* All feature nodes at same scale are matched&lt;br /&gt;
* Data attributes such as country code, population, relative magnitude, etc&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* Is in Shapefile format which is space inefficient&lt;br /&gt;
* No per node zoom level attribute&lt;br /&gt;
* Different scale datasets do not match so cannot efficiently be used together for zooming&lt;br /&gt;
&lt;br /&gt;
The 1:10m dataset seems ideal as the base map in Marble as it provides a higher level of detail than the current MWDBII.  The 1:110m dataset seems ideal for use in a country selector widget in kdelibs.  The 1:50m dataset is less detailed than the current MWDBII so may be less useful.&lt;br /&gt;
&lt;br /&gt;
Using the data in the default shapefile format is not considered desirable however:&lt;br /&gt;
* No shapefile format support in Marble (yet), would have to rely on an external library or write our own&lt;br /&gt;
* Space inefficient (14Mb vs 2.6Mb for MWDBII)&lt;br /&gt;
* No zoom level attribute or any node level attributes  which would slow drawing&lt;br /&gt;
* Vector level attributes are stored in .dbf format which adds complexity to implementing shapefile support&lt;br /&gt;
&lt;br /&gt;
The ideal solution would seem be to convert the Natural Earth data into a more efficient file format and either calculate and store the zoom level attribute in the file or calculate it on file load.  The full Natural Earth dataset would be converted, but would only ship the minimal dataset required with Marble (approx 4-5Mb?) with the remainder of the data later being downloaded via GHNS or as a separate package.&lt;br /&gt;
&lt;br /&gt;
=== Vector Layer Improvements ===&lt;br /&gt;
&lt;br /&gt;
The main changes required to Marble will be in the vector layer itself, removing the old PNT file vector drawing code and implementing the new dataset using the new GeoData library vector support.&lt;br /&gt;
&lt;br /&gt;
Two main issues will need to be solved here&lt;br /&gt;
* if a new file format is needed for efficient storage&lt;br /&gt;
* if a zoom level attribute is needed for fast drawing, and if so where and how to implement the attribute&lt;br /&gt;
&lt;br /&gt;
Some possibilities for the file format are:&lt;br /&gt;
* Adapt the existing PNT format used for MWDBII to have a higher degree of accuracy and add an attributes table&lt;br /&gt;
* Use the existing Marble serial/cache format which will be faster but the size efficiency may not be sufficient&lt;br /&gt;
* Use shapefile by implementing a lightweight parser without dbf support but our own simple attribute table.&lt;br /&gt;
* Implement full shapefile support including dbf (possibly using libshape)&lt;br /&gt;
&lt;br /&gt;
The zoom level problem can be solved by either:&lt;br /&gt;
* Calculate a zoom level for each point during the file conversion and save it in the new file format, but this will require more storage space.&lt;br /&gt;
* Improve the vector drawing layer to calculate the zoom level on the fly, which would benefit all vector drawing but may be too slow.&lt;br /&gt;
&lt;br /&gt;
The Douglas-Peucker algorithm may be able to be used here.&lt;br /&gt;
&lt;br /&gt;
Some pros/cons to consider:&lt;br /&gt;
&lt;br /&gt;
* The 1:10m country file is 6.55MB and contains 533,202 points = 12.28 &lt;br /&gt;
bytes/point compared to the PNT which is 745KB and contains 127,246 points  = &lt;br /&gt;
5.85 bytes/point, which would suggest the NE data in PNT format would be half &lt;br /&gt;
the size, so 6 MB in total.  This could probably be further reduced by a light &lt;br /&gt;
application of Douglas-Peucker.&lt;br /&gt;
&lt;br /&gt;
* The NE shapefiles have been carefully processed so shared borders and &lt;br /&gt;
overlapping features like rivers match exactly and other such niceties, &lt;br /&gt;
applying the Douglas-Peucker algorithm might affect that.&lt;br /&gt;
&lt;br /&gt;
* A shapefile parser would allow users/apps to load other shapefiles.&lt;br /&gt;
&lt;br /&gt;
* We would have to reconvert and check the data every time there's a new NE &lt;br /&gt;
release which could be a lot of effort, but an automated shp2pnt script could &lt;br /&gt;
prove useful to allow apps/users to display their own shapefiles in a simple &lt;br /&gt;
way.&lt;br /&gt;
&lt;br /&gt;
* It is unknown if the D-H algorithm can be deployed in a way to mark each point with a detail level rather than just throwing the points away.&lt;br /&gt;
&lt;br /&gt;
==== Calculating Zoom Level on the fly ====&lt;br /&gt;
Using GeoPainter and GeoDataLineString (&amp;quot;libgeodata&amp;quot;):&lt;br /&gt;
* Apply Douglas-Peuker dynamically in GeoDataLineString class to set Detail Level&lt;br /&gt;
* When GeoDataLineString modified (add/del point) set dirty flag&lt;br /&gt;
* When node accessed for drawing, Dirty flag would trigger D-P to calculate detail level and unset dirty flag&lt;br /&gt;
* Would benefit all vector formats, e.g. kml, ppx, shp&lt;br /&gt;
&lt;br /&gt;
==== Possible new file format ====&lt;br /&gt;
Potential new Marble file format based on PNT:&lt;br /&gt;
* 1st integer (32 bit): Latitude in arcseconds highest bit indicates new polygon starts: header information has to be read from 3rd integer&lt;br /&gt;
* 2nd integer (32 bit): Longitude in arcseconds&lt;br /&gt;
* Optional 3rd integer: feature key highest bit feature geometry (line or ring).&lt;br /&gt;
&lt;br /&gt;
Applying this to the 1:10m dataset:&lt;br /&gt;
* Each point takes 64 bits/8 bytes&lt;br /&gt;
* The start of each polygon takes 96 bits&lt;br /&gt;
* Roughly 533,202 x 8 bytes = 4 Mb for the country borders alone, not including internal border and coastline files&lt;br /&gt;
* If that's too much to ship, then ship the 1:50m dataset as the default and download the 1:10m dataset once online&lt;br /&gt;
&lt;br /&gt;
==== Attribute Database ====&lt;br /&gt;
&lt;br /&gt;
Metadata file:&lt;br /&gt;
* convert / filter dbf into our own format&lt;br /&gt;
* could just be csv or xml? or sqlite?&lt;br /&gt;
&lt;br /&gt;
Rather than the Geonames ID, we could just use the Natural Earth object ID, &lt;br /&gt;
then a look-up file/table that matches the NE ID to the ISO / FIPS / whatever &lt;br /&gt;
code (NE provides this in the metadata) and Geonames ID (which we would have &lt;br /&gt;
to provide).  This would allow look-ups via whatever code or ID is available, &lt;br /&gt;
and we wouldn't be reliant on Geonames IDs staying constant or being online.&lt;br /&gt;
&lt;br /&gt;
==== Spatialite ====&lt;br /&gt;
&lt;br /&gt;
One option would be to integrate Spatialite and use this as both the data storage for the vectors and as the attribute database.  Spatialite is an extension to SQLite implementing a Spatial SQL database.  Among the feature this provides is a compact data storage format and the ability to import Shapefiles and CSV files, as well as access all the standard GEOS tools if installed.&lt;br /&gt;
&lt;br /&gt;
There is a 20Mb zip file available for Natural Earth in Spatialite format, it is unclear how much of Natural Earth is contained in this.  A minimal dataset could be shipped by default with the full dataset downloaded later.&lt;br /&gt;
&lt;br /&gt;
Spatial SQL queries could return just those vectors currently in the viewport, but repeated reloading and redrawing could be inefficient.  However this may also solve the Level-of-Detail problem.&lt;br /&gt;
&lt;br /&gt;
The major downside is the dependencies which include SQLite, PROJ and GEOS so on a platform like Windows would require a larger monolithic binary which defeats the purpose of shipping slimmed down data.&lt;br /&gt;
&lt;br /&gt;
More research is required here.  It may not be a suitable option for the default Atlas view, but would be a very powerful extension for Marble to provide lightweight GIS-like functionality.&lt;br /&gt;
&lt;br /&gt;
=== Action Plan ===&lt;br /&gt;
&lt;br /&gt;
A possible action plan is&lt;br /&gt;
# Fix GeoPainter LinearRings which contain a pole not rendered correctly&lt;br /&gt;
# Implement Douglas-Peucker reduction in GeoDataLineString&lt;br /&gt;
# New PNT file format definition (with a different name, MBL?)&lt;br /&gt;
# Metadata file format definition&lt;br /&gt;
# New GeoData PNT2 file loading code (convert old data).&lt;br /&gt;
# shp2pnt2 script to convert shp to new formats (using Perl::shp? there's shp2xxx scripts out there we could copy?), including matching to Geonames ID&lt;br /&gt;
# split files into 'ship with', 'download asap', 'ghns'&lt;br /&gt;
&lt;br /&gt;
Later add simple shapefile loading to GeoData, maybe with attibute layer?&lt;br /&gt;
&lt;br /&gt;
== Natural Earth Datasets ==&lt;br /&gt;
&lt;br /&gt;
=== Dataset Sizes ===&lt;br /&gt;
&lt;br /&gt;
Key Natural Earth data files from v1.2, recent updates to 1.3 not included.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                            1:110m     1:50m       1:10m&lt;br /&gt;
                            ------    -------     -------&lt;br /&gt;
Admin level 0 countries     172 KB    1.36 MB     6.55 MB&lt;br /&gt;
Admin level 0 land borders   39 KB     301 KB      896 KB&lt;br /&gt;
Admin level 0 sea borders    12 KB      40 KB       79 KB&lt;br /&gt;
Admin level 0 disputed                  40 KB      157 KB&lt;br /&gt;
Admin level 1 regions        39 KB     339 MB     13.9 MB *&lt;br /&gt;
Admin level 1 land borders   16 KB      60 KB     4.82 MB&lt;br /&gt;
Coastlines                   79 KB     883 KB     2.15 MB&lt;br /&gt;
Rivers                       19 KB     420 KB     3.29 MB&lt;br /&gt;
Lakes                        10 KB     286 KB      786 MB              &lt;br /&gt;
Glaciers                     13 KB     208 KB     1.23 MB&lt;br /&gt;
Dateline                     18 KB      18 KB       18 KB&lt;br /&gt;
Playas                                  18 KB      106 KB&lt;br /&gt;
Ice Shelves                            105 KB      211 KB&lt;br /&gt;
Minor Islands                                      449 KB&lt;br /&gt;
Reefs                                              171 KB&lt;br /&gt;
                           -------    -------   ---------&lt;br /&gt;
                            417 KB    4.08 MB    34.03 MB&lt;br /&gt;
&lt;br /&gt;
* level 1 regions are USA/Canada only at 110m and 50m, but whole world at 10m, &lt;br /&gt;
perfect for KGeography use :-)&lt;br /&gt;
&lt;br /&gt;
Other useful files:&lt;br /&gt;
Physical Features Land      146 KB    1.50 MB      692 KB&lt;br /&gt;
Physical Features Sea       348 KB     836 KB      836 MB&lt;br /&gt;
Populated Places                       347 KB     1.48 MB&lt;br /&gt;
Urban Areas                            439 KB     3.48 MB&lt;br /&gt;
Bathmetry                                        11.64 MB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dataset Details ===&lt;br /&gt;
&lt;br /&gt;
* Countries&lt;br /&gt;
** matched boundary lines and polygons with names attributes for countries and &lt;br /&gt;
sovereign states. Includes dependencies (French Polynesia), &lt;br /&gt;
map units (U.S. Pacific Island Territories) and &lt;br /&gt;
sub-national map subunits (Corsica versus mainland Metropolitan France).&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Disputed areas and breakaway regions&lt;br /&gt;
** From Kashmir to the Elemi Triangle, Northern Cyprus to Western Sahara.&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Internal boundaries&lt;br /&gt;
** Core data??&lt;br /&gt;
&lt;br /&gt;
* Coastline&lt;br /&gt;
** ocean coastline, including major islands. Coastline is matched to land and water polygons.&lt;br /&gt;
** Core data?&lt;br /&gt;
&lt;br /&gt;
* First order admin (provinces, departments, states, etc.)&lt;br /&gt;
** internal boundaries and polygons for all but a few tiny island nations. Includes names attributes and some statistical groupings of the same for smaller countries.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Populated places&lt;br /&gt;
** point symbols with name attributes. Includes capitals, major cities and towns, plus significant smaller towns in sparsely inhabited regions. We favor regional significance over population census in determining rankings.&lt;br /&gt;
** Optional download, or use to replace current places file?&lt;br /&gt;
&lt;br /&gt;
* Urban polygons&lt;br /&gt;
** derived from 2002-2003 MODIS satellite data.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Pacific nation groupings&lt;br /&gt;
** boxes for keeping these far-flung islands tidy.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Water boundary indicators&lt;br /&gt;
** partial selection of key 200-mile nautical limits, plus some disputed, treaty, and median lines.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Land&lt;br /&gt;
** Land polygons including major islands&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Ocean&lt;br /&gt;
** Ocean polygon split into contiguous pieces.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Minor Islands&lt;br /&gt;
** additional small ocean islands ranked to two levels of relative importance.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Reefs&lt;br /&gt;
** major coral reefs from WDB2.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Physical region features&lt;br /&gt;
** polygon and point labels of major physical features.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Rivers and Lake Centerlines&lt;br /&gt;
** ranked by relative importance. Includes name and line width attributes. Don’t want minor lakes? Turn on their centerlines to avoid unseemly data gaps.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Lakes&lt;br /&gt;
** Ranked by relative importance, coordinating with river ranking. Includes name attributes.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Glaciated areas&lt;br /&gt;
** polygons derived from DCW, except for Antarctica derived from MOA. Includes name attributes for major polar glaciers.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Antarctic ice shelves&lt;br /&gt;
** Derived from 2003-2004 MOA. Reflects recent ice shelf collapses.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Bathymetry&lt;br /&gt;
** nested polygons at 0, -200, -1,000, -2,000, -3,000, -4,000, -5,000, -6,000, -7,000, -8,000, -9,000,and -10,000 meters. Created from SRTM Plus.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Parks and protected areas&lt;br /&gt;
** US Only&lt;br /&gt;
** Don't use, maybe user download layer&lt;br /&gt;
&lt;br /&gt;
* Geographic lines&lt;br /&gt;
** Polar circles, tropical circles, equator, and International Date Line.&lt;br /&gt;
** Probably not useful to Marble as we have a plugin for most of these.&lt;br /&gt;
** International Date Line could be extracted&lt;br /&gt;
&lt;br /&gt;
*Graticules&lt;br /&gt;
** 1-, 5-, 10-, 15-, 20-, and 30-degree increments. Includes WGS84 bounding box.&lt;br /&gt;
** Probably not useful to Marble as we have a Graticle plugin.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble/NaturalEarth</id>
		<title>Projects/Marble/NaturalEarth</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble/NaturalEarth"/>
				<updated>2012-05-01T11:23:45Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Spatialite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Natural Earth =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Marble currently uses the very old and outdated MWDBII dataset for its vector base map such as national borders and coastlines and we really need to replace it with more up-to-date data.  However, MWDBII has two key advantages, it is very compact in size enabling Marble to ship it by default, and the individual nodes have a zoom level value which speeds up drawing.&lt;br /&gt;
&lt;br /&gt;
The current vector layer also has the disadvantage of not being able to be manipulated either programtiacally or by the user.  This prevents it from being used for such things as KGeography or other educational uses where you would want to select and manipulate a geographic entity.&lt;br /&gt;
&lt;br /&gt;
Improving the vector base maps would thus consist of two closely related parts:&lt;br /&gt;
* Improving the vector drawing code to allow interaction with the vectors, and improved performance to allow more detailed vectors to be drawn.&lt;br /&gt;
* Importing a new base layer dataset.&lt;br /&gt;
&lt;br /&gt;
== Using NaturalEarth ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.naturalearthdata.com/ Natural Earth data set] is a &amp;quot;public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software.&amp;quot;  This data set seems ideal as a replacement for the MWDBII.&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Free / Public Domain data&lt;br /&gt;
* Regularly updated&lt;br /&gt;
* Wide variety of political and geographic features&lt;br /&gt;
* Available at 3 different scales: 1:10m 1:50m and 1:110m&lt;br /&gt;
* All feature nodes at same scale are matched&lt;br /&gt;
* Data attributes such as country code, population, relative magnitude, etc&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* Is in Shapefile format which is space inefficient&lt;br /&gt;
* No per node zoom level attribute&lt;br /&gt;
* Different scale datasets do not match so cannot efficiently be used together for zooming&lt;br /&gt;
&lt;br /&gt;
The 1:10m dataset seems ideal as the base map in Marble as it provides a higher level of detail than the current MWDBII.  The 1:110m dataset seems ideal for use in a country selector widget in kdelibs.  The 1:50m dataset is less detailed than the current MWDBII so may be less useful.&lt;br /&gt;
&lt;br /&gt;
Using the data in the default shapefile format is not considered desirable however:&lt;br /&gt;
* No shapefile format support in Marble (yet), would have to rely on an external library or write our own&lt;br /&gt;
* Space inefficient (14Mb vs 2.6Mb for MWDBII)&lt;br /&gt;
* No zoom level attribute or any node level attributes  which would slow drawing&lt;br /&gt;
* Vector level attributes are stored in .dbf format which adds complexity to implementing shapefile support&lt;br /&gt;
&lt;br /&gt;
The ideal solution would seem be to convert the Natural Earth data into a more efficient file format and either calculate and store the zoom level attribute in the file or calculate it on file load.  The full Natural Earth dataset would be converted, but would only ship the minimal dataset required with Marble (approx 4-5Mb?) with the remainder of the data later being downloaded via GHNS or as a separate package.&lt;br /&gt;
&lt;br /&gt;
=== Vector Layer Improvements ===&lt;br /&gt;
&lt;br /&gt;
The main changes required to Marble will be in the vector layer itself, removing the old PNT file vector drawing code and implementing the new dataset using the new GeoData library vector support.&lt;br /&gt;
&lt;br /&gt;
Two main issues will need to be solved here&lt;br /&gt;
* if a new file format is needed for efficient storage&lt;br /&gt;
* if a zoom level attribute is needed for fast drawing, and if so where and how to implement the attribute&lt;br /&gt;
&lt;br /&gt;
Some possibilities for the file format are:&lt;br /&gt;
* Adapt the existing PNT format used for MWDBII to have a higher degree of accuracy and add an attributes table&lt;br /&gt;
* Use the existing Marble serial/cache format which will be faster but the size efficiency may not be sufficient&lt;br /&gt;
* Use shapefile by implementing a lightweight parser without dbf support but our own simple attribute table.&lt;br /&gt;
* Implement full shapefile support including dbf (possibly using libshape)&lt;br /&gt;
&lt;br /&gt;
The zoom level problem can be solved by either:&lt;br /&gt;
* Calculate a zoom level for each point during the file conversion and save it in the new file format, but this will require more storage space.&lt;br /&gt;
* Improve the vector drawing layer to calculate the zoom level on the fly, which would benefit all vector drawing but may be too slow.&lt;br /&gt;
&lt;br /&gt;
The Douglas-Peucker algorithm may be able to be used here.&lt;br /&gt;
&lt;br /&gt;
Some pros/cons to consider:&lt;br /&gt;
&lt;br /&gt;
* The 1:10m country file is 6.55MB and contains 533,202 points = 12.28 &lt;br /&gt;
bytes/point compared to the PNT which is 745KB and contains 127,246 points  = &lt;br /&gt;
5.85 bytes/point, which would suggest the NE data in PNT format would be half &lt;br /&gt;
the size, so 6 MB in total.  This could probably be further reduced by a light &lt;br /&gt;
application of Douglas-Peucker.&lt;br /&gt;
&lt;br /&gt;
* The NE shapefiles have been carefully processed so shared borders and &lt;br /&gt;
overlapping features like rivers match exactly and other such niceties, &lt;br /&gt;
applying the Douglas-Peucker algorithm might affect that.&lt;br /&gt;
&lt;br /&gt;
* A shapefile parser would allow users/apps to load other shapefiles.&lt;br /&gt;
&lt;br /&gt;
* We would have to reconvert and check the data every time there's a new NE &lt;br /&gt;
release which could be a lot of effort, but an automated shp2pnt script could &lt;br /&gt;
prove useful to allow apps/users to display their own shapefiles in a simple &lt;br /&gt;
way.&lt;br /&gt;
&lt;br /&gt;
* It is unknown if the D-H algorithm can be deployed in a way to mark each point with a detail level rather than just throwing the points away.&lt;br /&gt;
&lt;br /&gt;
==== Calculating Zoom Level on the fly ====&lt;br /&gt;
Using GeoPainter and GeoDataLineString (&amp;quot;libgeodata&amp;quot;):&lt;br /&gt;
* Apply Douglas-Peuker dynamically in GeoDataLineString class to set Detail Level&lt;br /&gt;
* When GeoDataLineString modified (add/del point) set dirty flag&lt;br /&gt;
* When node accessed for drawing, Dirty flag would trigger D-P to calculate detail level and unset dirty flag&lt;br /&gt;
* Would benefit all vector formats, e.g. kml, ppx, shp&lt;br /&gt;
&lt;br /&gt;
==== Possible new file format ====&lt;br /&gt;
Potential new Marble file format based on PNT:&lt;br /&gt;
* 1st integer (32 bit): Latitude in arcseconds highest bit indicates new polygon starts: header information has to be read from 3rd integer&lt;br /&gt;
* 2nd integer (32 bit): Longitude in arcseconds&lt;br /&gt;
* Optional 3rd integer: feature key highest bit feature geometry (line or ring).&lt;br /&gt;
&lt;br /&gt;
Applying this to the 1:10m dataset:&lt;br /&gt;
* Each point takes 64 bits/8 bytes&lt;br /&gt;
* The start of each polygon takes 96 bits&lt;br /&gt;
* Roughly 533,202 x 8 bytes = 4 Mb for the country borders alone, not including internal border and coastline files&lt;br /&gt;
* If that's too much to ship, then ship the 1:50m dataset as the default and download the 1:10m dataset once online&lt;br /&gt;
&lt;br /&gt;
==== Attribute Database ====&lt;br /&gt;
&lt;br /&gt;
Metadata file:&lt;br /&gt;
* convert / filter dbf into our own format&lt;br /&gt;
* could just be csv or xml? or sqlite?&lt;br /&gt;
&lt;br /&gt;
Rather than the Geonames ID, we could just use the Natural Earth object ID, &lt;br /&gt;
then a look-up file/table that matches the NE ID to the ISO / FIPS / whatever &lt;br /&gt;
code (NE provides this in the metadata) and Geonames ID (which we would have &lt;br /&gt;
to provide).  This would allow look-ups via whatever code or ID is available, &lt;br /&gt;
and we wouldn't be reliant on Geonames IDs staying constant or being online.&lt;br /&gt;
&lt;br /&gt;
==== Spatialite ====&lt;br /&gt;
&lt;br /&gt;
One option would be to integrate Spatialite and use this as both the data storage for the vectors and as the attribute database.  Spatialite is an extension to SQLite implementing a Spatial SQL database.  Among the feature this provides is a compact data storage format and the ability to import Shapefiles and CSV files, as well as access all the standard GEOS tools if installed.&lt;br /&gt;
&lt;br /&gt;
There is a 20Mb zip file available for Natural Earth in Spatialite format, it is unclear how much of Natural Earth is contained in this.  A minimal dataset could be shipped by default with the full dataset downloaded later.&lt;br /&gt;
&lt;br /&gt;
Spatial SQL queries could return just those vectors currently in the viewport, but repeated reloading and redrawing could be inefficent.  However this may also solve the Level-of-Detail problem.&lt;br /&gt;
&lt;br /&gt;
More research is required here.  It may not be a suitable option for the default Atlas view, but would be a very powerful extension for Marble to provide lightweight GIS-like functionality.&lt;br /&gt;
&lt;br /&gt;
=== Action Plan ===&lt;br /&gt;
&lt;br /&gt;
A possible action plan is&lt;br /&gt;
# Fix GeoPainter LinearRings which contain a pole not rendered correctly&lt;br /&gt;
# Implement Douglas-Peucker reduction in GeoDataLineString&lt;br /&gt;
# New PNT file format definition (with a different name, MBL?)&lt;br /&gt;
# Metadata file format definition&lt;br /&gt;
# New GeoData PNT2 file loading code (convert old data).&lt;br /&gt;
# shp2pnt2 script to convert shp to new formats (using Perl::shp? there's shp2xxx scripts out there we could copy?), including matching to Geonames ID&lt;br /&gt;
# split files into 'ship with', 'download asap', 'ghns'&lt;br /&gt;
&lt;br /&gt;
Later add simple shapefile loading to GeoData, maybe with attibute layer?&lt;br /&gt;
&lt;br /&gt;
== Natural Earth Datasets ==&lt;br /&gt;
&lt;br /&gt;
=== Dataset Sizes ===&lt;br /&gt;
&lt;br /&gt;
Key Natural Earth data files from v1.2, recent updates to 1.3 not included.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                            1:110m     1:50m       1:10m&lt;br /&gt;
                            ------    -------     -------&lt;br /&gt;
Admin level 0 countries     172 KB    1.36 MB     6.55 MB&lt;br /&gt;
Admin level 0 land borders   39 KB     301 KB      896 KB&lt;br /&gt;
Admin level 0 sea borders    12 KB      40 KB       79 KB&lt;br /&gt;
Admin level 0 disputed                  40 KB      157 KB&lt;br /&gt;
Admin level 1 regions        39 KB     339 MB     13.9 MB *&lt;br /&gt;
Admin level 1 land borders   16 KB      60 KB     4.82 MB&lt;br /&gt;
Coastlines                   79 KB     883 KB     2.15 MB&lt;br /&gt;
Rivers                       19 KB     420 KB     3.29 MB&lt;br /&gt;
Lakes                        10 KB     286 KB      786 MB              &lt;br /&gt;
Glaciers                     13 KB     208 KB     1.23 MB&lt;br /&gt;
Dateline                     18 KB      18 KB       18 KB&lt;br /&gt;
Playas                                  18 KB      106 KB&lt;br /&gt;
Ice Shelves                            105 KB      211 KB&lt;br /&gt;
Minor Islands                                      449 KB&lt;br /&gt;
Reefs                                              171 KB&lt;br /&gt;
                           -------    -------   ---------&lt;br /&gt;
                            417 KB    4.08 MB    34.03 MB&lt;br /&gt;
&lt;br /&gt;
* level 1 regions are USA/Canada only at 110m and 50m, but whole world at 10m, &lt;br /&gt;
perfect for KGeography use :-)&lt;br /&gt;
&lt;br /&gt;
Other useful files:&lt;br /&gt;
Physical Features Land      146 KB    1.50 MB      692 KB&lt;br /&gt;
Physical Features Sea       348 KB     836 KB      836 MB&lt;br /&gt;
Populated Places                       347 KB     1.48 MB&lt;br /&gt;
Urban Areas                            439 KB     3.48 MB&lt;br /&gt;
Bathmetry                                        11.64 MB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dataset Details ===&lt;br /&gt;
&lt;br /&gt;
* Countries&lt;br /&gt;
** matched boundary lines and polygons with names attributes for countries and &lt;br /&gt;
sovereign states. Includes dependencies (French Polynesia), &lt;br /&gt;
map units (U.S. Pacific Island Territories) and &lt;br /&gt;
sub-national map subunits (Corsica versus mainland Metropolitan France).&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Disputed areas and breakaway regions&lt;br /&gt;
** From Kashmir to the Elemi Triangle, Northern Cyprus to Western Sahara.&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Internal boundaries&lt;br /&gt;
** Core data??&lt;br /&gt;
&lt;br /&gt;
* Coastline&lt;br /&gt;
** ocean coastline, including major islands. Coastline is matched to land and water polygons.&lt;br /&gt;
** Core data?&lt;br /&gt;
&lt;br /&gt;
* First order admin (provinces, departments, states, etc.)&lt;br /&gt;
** internal boundaries and polygons for all but a few tiny island nations. Includes names attributes and some statistical groupings of the same for smaller countries.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Populated places&lt;br /&gt;
** point symbols with name attributes. Includes capitals, major cities and towns, plus significant smaller towns in sparsely inhabited regions. We favor regional significance over population census in determining rankings.&lt;br /&gt;
** Optional download, or use to replace current places file?&lt;br /&gt;
&lt;br /&gt;
* Urban polygons&lt;br /&gt;
** derived from 2002-2003 MODIS satellite data.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Pacific nation groupings&lt;br /&gt;
** boxes for keeping these far-flung islands tidy.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Water boundary indicators&lt;br /&gt;
** partial selection of key 200-mile nautical limits, plus some disputed, treaty, and median lines.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Land&lt;br /&gt;
** Land polygons including major islands&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Ocean&lt;br /&gt;
** Ocean polygon split into contiguous pieces.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Minor Islands&lt;br /&gt;
** additional small ocean islands ranked to two levels of relative importance.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Reefs&lt;br /&gt;
** major coral reefs from WDB2.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Physical region features&lt;br /&gt;
** polygon and point labels of major physical features.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Rivers and Lake Centerlines&lt;br /&gt;
** ranked by relative importance. Includes name and line width attributes. Don’t want minor lakes? Turn on their centerlines to avoid unseemly data gaps.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Lakes&lt;br /&gt;
** Ranked by relative importance, coordinating with river ranking. Includes name attributes.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Glaciated areas&lt;br /&gt;
** polygons derived from DCW, except for Antarctica derived from MOA. Includes name attributes for major polar glaciers.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Antarctic ice shelves&lt;br /&gt;
** Derived from 2003-2004 MOA. Reflects recent ice shelf collapses.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Bathymetry&lt;br /&gt;
** nested polygons at 0, -200, -1,000, -2,000, -3,000, -4,000, -5,000, -6,000, -7,000, -8,000, -9,000,and -10,000 meters. Created from SRTM Plus.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Parks and protected areas&lt;br /&gt;
** US Only&lt;br /&gt;
** Don't use, maybe user download layer&lt;br /&gt;
&lt;br /&gt;
* Geographic lines&lt;br /&gt;
** Polar circles, tropical circles, equator, and International Date Line.&lt;br /&gt;
** Probably not useful to Marble as we have a plugin for most of these.&lt;br /&gt;
** International Date Line could be extracted&lt;br /&gt;
&lt;br /&gt;
*Graticules&lt;br /&gt;
** 1-, 5-, 10-, 15-, 20-, and 30-degree increments. Includes WGS84 bounding box.&lt;br /&gt;
** Probably not useful to Marble as we have a Graticle plugin.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble/NaturalEarth</id>
		<title>Projects/Marble/NaturalEarth</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble/NaturalEarth"/>
				<updated>2012-05-01T11:23:04Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Attribute Database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Natural Earth =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Marble currently uses the very old and outdated MWDBII dataset for its vector base map such as national borders and coastlines and we really need to replace it with more up-to-date data.  However, MWDBII has two key advantages, it is very compact in size enabling Marble to ship it by default, and the individual nodes have a zoom level value which speeds up drawing.&lt;br /&gt;
&lt;br /&gt;
The current vector layer also has the disadvantage of not being able to be manipulated either programtiacally or by the user.  This prevents it from being used for such things as KGeography or other educational uses where you would want to select and manipulate a geographic entity.&lt;br /&gt;
&lt;br /&gt;
Improving the vector base maps would thus consist of two closely related parts:&lt;br /&gt;
* Improving the vector drawing code to allow interaction with the vectors, and improved performance to allow more detailed vectors to be drawn.&lt;br /&gt;
* Importing a new base layer dataset.&lt;br /&gt;
&lt;br /&gt;
== Using NaturalEarth ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.naturalearthdata.com/ Natural Earth data set] is a &amp;quot;public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software.&amp;quot;  This data set seems ideal as a replacement for the MWDBII.&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Free / Public Domain data&lt;br /&gt;
* Regularly updated&lt;br /&gt;
* Wide variety of political and geographic features&lt;br /&gt;
* Available at 3 different scales: 1:10m 1:50m and 1:110m&lt;br /&gt;
* All feature nodes at same scale are matched&lt;br /&gt;
* Data attributes such as country code, population, relative magnitude, etc&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* Is in Shapefile format which is space inefficient&lt;br /&gt;
* No per node zoom level attribute&lt;br /&gt;
* Different scale datasets do not match so cannot efficiently be used together for zooming&lt;br /&gt;
&lt;br /&gt;
The 1:10m dataset seems ideal as the base map in Marble as it provides a higher level of detail than the current MWDBII.  The 1:110m dataset seems ideal for use in a country selector widget in kdelibs.  The 1:50m dataset is less detailed than the current MWDBII so may be less useful.&lt;br /&gt;
&lt;br /&gt;
Using the data in the default shapefile format is not considered desirable however:&lt;br /&gt;
* No shapefile format support in Marble (yet), would have to rely on an external library or write our own&lt;br /&gt;
* Space inefficient (14Mb vs 2.6Mb for MWDBII)&lt;br /&gt;
* No zoom level attribute or any node level attributes  which would slow drawing&lt;br /&gt;
* Vector level attributes are stored in .dbf format which adds complexity to implementing shapefile support&lt;br /&gt;
&lt;br /&gt;
The ideal solution would seem be to convert the Natural Earth data into a more efficient file format and either calculate and store the zoom level attribute in the file or calculate it on file load.  The full Natural Earth dataset would be converted, but would only ship the minimal dataset required with Marble (approx 4-5Mb?) with the remainder of the data later being downloaded via GHNS or as a separate package.&lt;br /&gt;
&lt;br /&gt;
=== Vector Layer Improvements ===&lt;br /&gt;
&lt;br /&gt;
The main changes required to Marble will be in the vector layer itself, removing the old PNT file vector drawing code and implementing the new dataset using the new GeoData library vector support.&lt;br /&gt;
&lt;br /&gt;
Two main issues will need to be solved here&lt;br /&gt;
* if a new file format is needed for efficient storage&lt;br /&gt;
* if a zoom level attribute is needed for fast drawing, and if so where and how to implement the attribute&lt;br /&gt;
&lt;br /&gt;
Some possibilities for the file format are:&lt;br /&gt;
* Adapt the existing PNT format used for MWDBII to have a higher degree of accuracy and add an attributes table&lt;br /&gt;
* Use the existing Marble serial/cache format which will be faster but the size efficiency may not be sufficient&lt;br /&gt;
* Use shapefile by implementing a lightweight parser without dbf support but our own simple attribute table.&lt;br /&gt;
* Implement full shapefile support including dbf (possibly using libshape)&lt;br /&gt;
&lt;br /&gt;
The zoom level problem can be solved by either:&lt;br /&gt;
* Calculate a zoom level for each point during the file conversion and save it in the new file format, but this will require more storage space.&lt;br /&gt;
* Improve the vector drawing layer to calculate the zoom level on the fly, which would benefit all vector drawing but may be too slow.&lt;br /&gt;
&lt;br /&gt;
The Douglas-Peucker algorithm may be able to be used here.&lt;br /&gt;
&lt;br /&gt;
Some pros/cons to consider:&lt;br /&gt;
&lt;br /&gt;
* The 1:10m country file is 6.55MB and contains 533,202 points = 12.28 &lt;br /&gt;
bytes/point compared to the PNT which is 745KB and contains 127,246 points  = &lt;br /&gt;
5.85 bytes/point, which would suggest the NE data in PNT format would be half &lt;br /&gt;
the size, so 6 MB in total.  This could probably be further reduced by a light &lt;br /&gt;
application of Douglas-Peucker.&lt;br /&gt;
&lt;br /&gt;
* The NE shapefiles have been carefully processed so shared borders and &lt;br /&gt;
overlapping features like rivers match exactly and other such niceties, &lt;br /&gt;
applying the Douglas-Peucker algorithm might affect that.&lt;br /&gt;
&lt;br /&gt;
* A shapefile parser would allow users/apps to load other shapefiles.&lt;br /&gt;
&lt;br /&gt;
* We would have to reconvert and check the data every time there's a new NE &lt;br /&gt;
release which could be a lot of effort, but an automated shp2pnt script could &lt;br /&gt;
prove useful to allow apps/users to display their own shapefiles in a simple &lt;br /&gt;
way.&lt;br /&gt;
&lt;br /&gt;
* It is unknown if the D-H algorithm can be deployed in a way to mark each point with a detail level rather than just throwing the points away.&lt;br /&gt;
&lt;br /&gt;
==== Calculating Zoom Level on the fly ====&lt;br /&gt;
Using GeoPainter and GeoDataLineString (&amp;quot;libgeodata&amp;quot;):&lt;br /&gt;
* Apply Douglas-Peuker dynamically in GeoDataLineString class to set Detail Level&lt;br /&gt;
* When GeoDataLineString modified (add/del point) set dirty flag&lt;br /&gt;
* When node accessed for drawing, Dirty flag would trigger D-P to calculate detail level and unset dirty flag&lt;br /&gt;
* Would benefit all vector formats, e.g. kml, ppx, shp&lt;br /&gt;
&lt;br /&gt;
==== Possible new file format ====&lt;br /&gt;
Potential new Marble file format based on PNT:&lt;br /&gt;
* 1st integer (32 bit): Latitude in arcseconds highest bit indicates new polygon starts: header information has to be read from 3rd integer&lt;br /&gt;
* 2nd integer (32 bit): Longitude in arcseconds&lt;br /&gt;
* Optional 3rd integer: feature key highest bit feature geometry (line or ring).&lt;br /&gt;
&lt;br /&gt;
Applying this to the 1:10m dataset:&lt;br /&gt;
* Each point takes 64 bits/8 bytes&lt;br /&gt;
* The start of each polygon takes 96 bits&lt;br /&gt;
* Roughly 533,202 x 8 bytes = 4 Mb for the country borders alone, not including internal border and coastline files&lt;br /&gt;
* If that's too much to ship, then ship the 1:50m dataset as the default and download the 1:10m dataset once online&lt;br /&gt;
&lt;br /&gt;
==== Attribute Database ====&lt;br /&gt;
&lt;br /&gt;
Metadata file:&lt;br /&gt;
* convert / filter dbf into our own format&lt;br /&gt;
* could just be csv or xml? or sqlite?&lt;br /&gt;
&lt;br /&gt;
Rather than the Geonames ID, we could just use the Natural Earth object ID, &lt;br /&gt;
then a look-up file/table that matches the NE ID to the ISO / FIPS / whatever &lt;br /&gt;
code (NE provides this in the metadata) and Geonames ID (which we would have &lt;br /&gt;
to provide).  This would allow look-ups via whatever code or ID is available, &lt;br /&gt;
and we wouldn't be reliant on Geonames IDs staying constant or being online.&lt;br /&gt;
&lt;br /&gt;
=== Spatialite ===&lt;br /&gt;
&lt;br /&gt;
One option would be to integrate Spatialite and use this as both the data storage for the vectors and as the attribute database.  Spatialite is an extension to SQLite implementing a Spatial SQL database.  Among the feature this provides is a compact data storage format and the ability to import Shapefiles and CSV files, as well as access all the standard GEOS tools if installed.&lt;br /&gt;
&lt;br /&gt;
There is a 20Mb zip file available for Natural Earth in Spatialite format, it is unclear how much of Natural Earth is contained in this.  A minimal dataset could be shipped by default with the full dataset downloaded later.&lt;br /&gt;
&lt;br /&gt;
Spatial SQL queries could return just those vectors currently in the viewport, but repeated reloading and redrawing could be inefficent.  However this may also solve the Level-of-Detail problem.&lt;br /&gt;
&lt;br /&gt;
More research is required here.  It may not be a suitable option for the default Atlas view, but would be a very powerful extension for Marble to provide lightweight GIS-like functionality.&lt;br /&gt;
&lt;br /&gt;
=== Action Plan ===&lt;br /&gt;
&lt;br /&gt;
A possible action plan is&lt;br /&gt;
# Fix GeoPainter LinearRings which contain a pole not rendered correctly&lt;br /&gt;
# Implement Douglas-Peucker reduction in GeoDataLineString&lt;br /&gt;
# New PNT file format definition (with a different name, MBL?)&lt;br /&gt;
# Metadata file format definition&lt;br /&gt;
# New GeoData PNT2 file loading code (convert old data).&lt;br /&gt;
# shp2pnt2 script to convert shp to new formats (using Perl::shp? there's shp2xxx scripts out there we could copy?), including matching to Geonames ID&lt;br /&gt;
# split files into 'ship with', 'download asap', 'ghns'&lt;br /&gt;
&lt;br /&gt;
Later add simple shapefile loading to GeoData, maybe with attibute layer?&lt;br /&gt;
&lt;br /&gt;
== Natural Earth Datasets ==&lt;br /&gt;
&lt;br /&gt;
=== Dataset Sizes ===&lt;br /&gt;
&lt;br /&gt;
Key Natural Earth data files from v1.2, recent updates to 1.3 not included.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                            1:110m     1:50m       1:10m&lt;br /&gt;
                            ------    -------     -------&lt;br /&gt;
Admin level 0 countries     172 KB    1.36 MB     6.55 MB&lt;br /&gt;
Admin level 0 land borders   39 KB     301 KB      896 KB&lt;br /&gt;
Admin level 0 sea borders    12 KB      40 KB       79 KB&lt;br /&gt;
Admin level 0 disputed                  40 KB      157 KB&lt;br /&gt;
Admin level 1 regions        39 KB     339 MB     13.9 MB *&lt;br /&gt;
Admin level 1 land borders   16 KB      60 KB     4.82 MB&lt;br /&gt;
Coastlines                   79 KB     883 KB     2.15 MB&lt;br /&gt;
Rivers                       19 KB     420 KB     3.29 MB&lt;br /&gt;
Lakes                        10 KB     286 KB      786 MB              &lt;br /&gt;
Glaciers                     13 KB     208 KB     1.23 MB&lt;br /&gt;
Dateline                     18 KB      18 KB       18 KB&lt;br /&gt;
Playas                                  18 KB      106 KB&lt;br /&gt;
Ice Shelves                            105 KB      211 KB&lt;br /&gt;
Minor Islands                                      449 KB&lt;br /&gt;
Reefs                                              171 KB&lt;br /&gt;
                           -------    -------   ---------&lt;br /&gt;
                            417 KB    4.08 MB    34.03 MB&lt;br /&gt;
&lt;br /&gt;
* level 1 regions are USA/Canada only at 110m and 50m, but whole world at 10m, &lt;br /&gt;
perfect for KGeography use :-)&lt;br /&gt;
&lt;br /&gt;
Other useful files:&lt;br /&gt;
Physical Features Land      146 KB    1.50 MB      692 KB&lt;br /&gt;
Physical Features Sea       348 KB     836 KB      836 MB&lt;br /&gt;
Populated Places                       347 KB     1.48 MB&lt;br /&gt;
Urban Areas                            439 KB     3.48 MB&lt;br /&gt;
Bathmetry                                        11.64 MB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dataset Details ===&lt;br /&gt;
&lt;br /&gt;
* Countries&lt;br /&gt;
** matched boundary lines and polygons with names attributes for countries and &lt;br /&gt;
sovereign states. Includes dependencies (French Polynesia), &lt;br /&gt;
map units (U.S. Pacific Island Territories) and &lt;br /&gt;
sub-national map subunits (Corsica versus mainland Metropolitan France).&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Disputed areas and breakaway regions&lt;br /&gt;
** From Kashmir to the Elemi Triangle, Northern Cyprus to Western Sahara.&lt;br /&gt;
** Core data&lt;br /&gt;
&lt;br /&gt;
* Internal boundaries&lt;br /&gt;
** Core data??&lt;br /&gt;
&lt;br /&gt;
* Coastline&lt;br /&gt;
** ocean coastline, including major islands. Coastline is matched to land and water polygons.&lt;br /&gt;
** Core data?&lt;br /&gt;
&lt;br /&gt;
* First order admin (provinces, departments, states, etc.)&lt;br /&gt;
** internal boundaries and polygons for all but a few tiny island nations. Includes names attributes and some statistical groupings of the same for smaller countries.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Populated places&lt;br /&gt;
** point symbols with name attributes. Includes capitals, major cities and towns, plus significant smaller towns in sparsely inhabited regions. We favor regional significance over population census in determining rankings.&lt;br /&gt;
** Optional download, or use to replace current places file?&lt;br /&gt;
&lt;br /&gt;
* Urban polygons&lt;br /&gt;
** derived from 2002-2003 MODIS satellite data.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Pacific nation groupings&lt;br /&gt;
** boxes for keeping these far-flung islands tidy.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Water boundary indicators&lt;br /&gt;
** partial selection of key 200-mile nautical limits, plus some disputed, treaty, and median lines.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Land&lt;br /&gt;
** Land polygons including major islands&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Ocean&lt;br /&gt;
** Ocean polygon split into contiguous pieces.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Minor Islands&lt;br /&gt;
** additional small ocean islands ranked to two levels of relative importance.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Reefs&lt;br /&gt;
** major coral reefs from WDB2.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Physical region features&lt;br /&gt;
** polygon and point labels of major physical features.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Rivers and Lake Centerlines&lt;br /&gt;
** ranked by relative importance. Includes name and line width attributes. Don’t want minor lakes? Turn on their centerlines to avoid unseemly data gaps.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Lakes&lt;br /&gt;
** Ranked by relative importance, coordinating with river ranking. Includes name attributes.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Glaciated areas&lt;br /&gt;
** polygons derived from DCW, except for Antarctica derived from MOA. Includes name attributes for major polar glaciers.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Antarctic ice shelves&lt;br /&gt;
** Derived from 2003-2004 MOA. Reflects recent ice shelf collapses.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
*Bathymetry&lt;br /&gt;
** nested polygons at 0, -200, -1,000, -2,000, -3,000, -4,000, -5,000, -6,000, -7,000, -8,000, -9,000,and -10,000 meters. Created from SRTM Plus.&lt;br /&gt;
** Optional download&lt;br /&gt;
&lt;br /&gt;
* Parks and protected areas&lt;br /&gt;
** US Only&lt;br /&gt;
** Don't use, maybe user download layer&lt;br /&gt;
&lt;br /&gt;
* Geographic lines&lt;br /&gt;
** Polar circles, tropical circles, equator, and International Date Line.&lt;br /&gt;
** Probably not useful to Marble as we have a plugin for most of these.&lt;br /&gt;
** International Date Line could be extracted&lt;br /&gt;
&lt;br /&gt;
*Graticules&lt;br /&gt;
** 1-, 5-, 10-, 15-, 20-, and 30-degree increments. Includes WGS84 bounding box.&lt;br /&gt;
** Probably not useful to Marble as we have a Graticle plugin.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2012-04-29T17:18:40Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.  This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
For more information on how the KDE Git Repositories are organized, please see the [[Getting_Started/Sources|Sources]] page or the [https://projects.kde.org/projects KDE Git Projects] page.&lt;br /&gt;
&lt;br /&gt;
Please note that some KDE modules are still using SVN, for more details read the [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Configuration|Git Configuration page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Recipes|Git Recipes page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Please help filling this section by&lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/documentation Links to git official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/course/svn.html The git-svn Crash Course]&lt;br /&gt;
&lt;br /&gt;
=== Git books === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]&lt;br /&gt;
- Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] &lt;br /&gt;
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes = &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Keep:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Basics|Basics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/git-svn|Git-svn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/kde-qt| Kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Amarok Git Tutorial| The Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/Sysadmin/GitKdeOrgManual Git-KDE Manual]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda Git Workflow Agenda]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea Git Workflow Agenda, Steve's Idea]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4| Build KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4.x|Build KDE 4.x]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Prerequisites|Prerequisites]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Windows/subversion|Subversion on Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increase Productivity with Scripts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/kdesrc-build|Kdesrc-build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Anonymous SVN|Anonymous SVN]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Sources/Using_Subversion_with_KDE|Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Using_an_IDE_with_KDE4|Using an IDE with KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Commit_Policy|SVN Commit Policy]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Guidelines|SVN Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tools|Development Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Recipes|Git Recipes]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/decoding-git|Decoding Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/rekonq/Git_with_rekonq_HowTo|Git with Rekonq How-to]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/Related/Subversion|Subversion]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MovetoGit|Move to Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MoveToGit/StepsToMove|Steps to Move]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/Get a SVN Account|Get a SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/First Steps with your KDE SVN Account|First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure === &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build|Getting_Started/Build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Environment|Getting_Started/Build/Environment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Requirements|Getting_Started/Build/Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Qt|Getting_Started/Build/Q]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/KdeSupport|Getting_Started/Build/KdeSupport]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Windows|Getting_Started/Build/Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Mac_OS_X|Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Shell|Getting_Started/Run/Shell]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Nested_Session|Getting_Started/Run/Nested_Session]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Full_Session|Getting_Started/Run/Full_Session&amp;gt;]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git</id>
		<title>Development/Git</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git"/>
				<updated>2012-04-29T17:18:16Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE and Git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages /&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
This is the hub page for all information about the use of Git by KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
This page is a work in progress where all new Git material is being organised.  Most of these sections will eventually be moved to their own pages.  Feel free to add stuff.&lt;br /&gt;
&lt;br /&gt;
== KDE and Git == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:4--&amp;gt;&lt;br /&gt;
This section provides details on using the KDE Git infrastructure.  This is intended for use by KDE developers to find out how KDE uses Git and how to set up Git for use with KDE.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
The [http://community.kde.org/Sysadmin/GitKdeOrgManual KDE Git System Administrators Manual] is a useful resource for more details on the technical implementation of the KDE Git infrastructure.&lt;br /&gt;
&lt;br /&gt;
For more information on how the KDE Git Repositories are organized, please see the [[Getting_Started/Sources|Sources]] page or the [https://projects.kde.org/projects KDE Git Projects] page.&lt;br /&gt;
&lt;br /&gt;
Please note that some KDE modules are still using SVN, for more details read the [[Getting_Started/Sources/Using_Subversion_with_KDE|Using Subversion with KDE]] page.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Configuration === &amp;lt;!--T:6--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
How to configure Git for use with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Configuration|Git Configuration page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Policies === &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
KDE policies on Git.  More generic development policies go elsewhere.&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Recipes === &amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
Short recipes for using Git with the KDE infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:14--&amp;gt;&lt;br /&gt;
Please see the [[Special:myLanguage/Development/Git/Recipes|Git Recipes page]].&lt;br /&gt;
&lt;br /&gt;
=== KDE Git Tutorials === &amp;lt;!--T:16--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
More in-depth instructions in using Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/GitQuickStart|A quick step-by-step guide for getting started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Create a patch|Creating a patch]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
Please help filling this section by&lt;br /&gt;
* checking the links at the bottom of the page and see which still have valid content&lt;br /&gt;
* write tutorials yourself&lt;br /&gt;
&lt;br /&gt;
== External Git Resources == &amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
Links to useful external sites about Git&lt;br /&gt;
&lt;br /&gt;
=== Official Documentation === &amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:24--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/documentation Links to git official documentation]&lt;br /&gt;
&lt;br /&gt;
=== Git for SVN Users === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
* [http://git-scm.com/course/svn.html The git-svn Crash Course]&lt;br /&gt;
&lt;br /&gt;
=== Git books === &amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* [http://progit.org/book/ Pro Git] - An easy to understand book on git (CC licensed).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* [http://book.git-scm.com/ The git community book], also as a [http://book.git-scm.com/book.pdf pdf]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials === &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:33--&amp;gt;&lt;br /&gt;
* [http://www-cs-students.stanford.edu/~blynn/gitmagic/ Git Magic] - A good intro to git (in several languages!) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
*[http://tom.preston-werner.com/2009/05/19/the-git-parable.html The Git Parable]&lt;br /&gt;
- Essential reading if you want to truly understand git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
* [http://www.gitcasts.com/ Git Screencasts]&lt;br /&gt;
&lt;br /&gt;
=== Cheat Sheets === &amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
* [http://cheat.errtheblog.com/s/git Quick reference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
* [http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html Illustrated git cheat sheet] &lt;br /&gt;
(broken image, get it from [[Media:Zrusin-git-cheat-sheet-medium.png]])&lt;br /&gt;
&lt;br /&gt;
= Documentation Changes = &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KDE Documentation Review == &amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existing Pages For Review === &amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
Existing KDE pages about Git, SVN, and/or buildinga KDE that need to be revised.  When revising pages try to split the generic development and revision control policies separate from Git specific stuff.  Do not refer to &amp;quot;the KDE Git Repository&amp;quot; but instead the &amp;quot;KDE Code Repository&amp;quot;.  Lots of small simple pages that are less daunting to newbies and can be linked to from multiple locations are preferred to massive walls of text.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
Keep:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:47--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Basics|Basics]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:48--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/git-svn|Git-svn]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/kde-qt| Kde-qt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:50--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Amarok Git Tutorial| The Amarok Git Tutorial]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:51--&amp;gt;&lt;br /&gt;
On community.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/Sysadmin/GitKdeOrgManual Git-KDE Manual]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda Git Workflow Agenda]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:54--&amp;gt;&lt;br /&gt;
* [http://community.kde.org/20110213_GitWorkflowAgenda/StevesIdea Git Workflow Agenda, Steve's Idea]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:55--&amp;gt;&lt;br /&gt;
On techbase.kde.org:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4| Build KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4.x|Build KDE 4.x]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Prerequisites|Prerequisites]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Build/KDE4/Windows/subversion|Subversion on Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Increased_Productivity_in_KDE4_with_Scripts|Increase Productivity with Scripts]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/kdesrc-build|Kdesrc-build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting Started/Sources/Anonymous SVN|Anonymous SVN]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Sources/Using_Subversion_with_KDE|Subversion with KDE]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Using_an_IDE_with_KDE4|Using an IDE with KDE 4]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Commit_Policy|SVN Commit Policy]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Policies/SVN_Guidelines|SVN Guidelines]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tools|Development Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/Recipes|Git Recipes]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Development/Tutorials/Git/decoding-git|Decoding Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/rekonq/Git_with_rekonq_HowTo|Git with Rekonq How-to]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/Related/Subversion|Subversion]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MovetoGit|Move to Git]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Projects/MoveToGit/StepsToMove|Steps to Move]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/Get a SVN Account|Get a SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Contribute/First Steps with your KDE SVN Account|First Steps with your KDE SVN Account]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
There are also numerous other pages referring to &amp;quot;the KDE SVN/subversion repositories&amp;quot; which should be replaced with the generic &amp;quot;KDE code repositories&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
There are also numerous translated pages which will need to be updated once the original pages are completed.&lt;br /&gt;
&lt;br /&gt;
=== New Page Structure === &amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:80--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started|Getting Started]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:81--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build|Getting_Started/Build]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:82--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Environment|Getting_Started/Build/Environment]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Requirements|Getting_Started/Build/Requirements]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Qt|Getting_Started/Build/Q]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/KdeSupport|Getting_Started/Build/KdeSupport]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:86--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Windows|Getting_Started/Build/Windows]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Build/Mac_OS_X|Getting_Started/Build/Mac_OS_X]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Shell|Getting_Started/Run/Shell]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Nested_Session|Getting_Started/Run/Nested_Session]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:90--&amp;gt;&lt;br /&gt;
* [[Special:myLanguage/Getting_Started/Run/Full_Session|Getting_Started/Run/Full_Session&amp;gt;]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE_Development_Platform</id>
		<title>Getting Started/Build/KDE Development Platform</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE_Development_Platform"/>
				<updated>2012-03-18T18:54:15Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Runtime */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE_Development_Platform}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
name=Building KDE4 From Source/KDE Development Platform|&lt;br /&gt;
pre=[[../KDE_Support|KDE Support]]|&lt;br /&gt;
next=[[../KDE_Workspace|KDE Workspace]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform contains a number of KDE modules that form the foundation for all KDE Software.&lt;br /&gt;
&lt;br /&gt;
If you are only interested in developing a KDE Application and not the KDE Development Platform itself then your distribution packages may be sufficient for these requirements, but Unstable development may require the latest Unstable versions to be built from source.&lt;br /&gt;
&lt;br /&gt;
=== Required Steps ===&lt;br /&gt;
&lt;br /&gt;
You need to have completed the following steps:&lt;br /&gt;
* Set up your [[../Environment|Build Environment]]&lt;br /&gt;
* Selected your [[../Recipes|Build Recipes]]&lt;br /&gt;
* Installed the [[../Requirements|System Requirements]]&lt;br /&gt;
* Installed or Built [[../Qt|Qt and related requirements]]&lt;br /&gt;
* Installed or Built [[../KDE_Support|KDE Support]]&lt;br /&gt;
* Understand the [[../Requirements#Definitions|Requirements Table format]]&lt;br /&gt;
&lt;br /&gt;
== KDE Libraries ==&lt;br /&gt;
&lt;br /&gt;
KDE Libraries (kdelibs) is the core library of the KDE Development Platform.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kdelibs https://projects.kde.org/projects/kde/kdelibs]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:kdelibs.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/kdelibs.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Libraries Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://oscaf.sourceforge.net Shared desktop ontologies]&lt;br /&gt;
| style=&amp;quot;background-color:#FFFFFF&amp;quot; | ??&lt;br /&gt;
| style=&amp;quot;background-color:#FFFF66&amp;quot; | &amp;gt;= 0.6.50&lt;br /&gt;
| ??&lt;br /&gt;
| Support for the Nepomuk semantic desktop system.&amp;lt;br /&amp;gt;This is needed if you intend to  install ''kdepimlibs''&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.grantlee.org Grantlee]&lt;br /&gt;
| style=&amp;quot;background-color:#FFFFFF&amp;quot; | ??&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &amp;gt;= 0.1.0&lt;br /&gt;
| ??&lt;br /&gt;
| Grantlee is used for generating compilable code by the ModelEventLogger.&amp;lt;br /&amp;gt;Without Grantlee, the logger will do nothing.&lt;br /&gt;
|-&lt;br /&gt;
| [http://aspell.net Aspell]&lt;br /&gt;
| style=&amp;quot;background-color:#FFFFFF&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; |&lt;br /&gt;
| ??&lt;br /&gt;
| Spell checking support via Aspell.&lt;br /&gt;
|-&lt;br /&gt;
| [http://ivrix.org.il/projects/spell-checker/ HSpell]&lt;br /&gt;
| style=&amp;quot;background-color:#FFFFFF&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; |&lt;br /&gt;
| ??&lt;br /&gt;
| Spell checking support for Hebrew.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KDE PIM Libraries ==&lt;br /&gt;
&lt;br /&gt;
KDE PIM Libraries (kdepimlibs) is the PIM library of the KDE Development Platform.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kdepimlibs https://projects.kde.org/projects/kde/kdepimlibs]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:kdepimlibs.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/kdepimlibs.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE PIM Libraries Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If cmake tells you that it can not find ''Nepomuk'', it may be that you are missing some of the nepomuk dependencies of kdelibs.&lt;br /&gt;
&lt;br /&gt;
The solution is to rebuild kdelibs with the missing dependencies.&lt;br /&gt;
&lt;br /&gt;
== KDE Runtime ==&lt;br /&gt;
&lt;br /&gt;
KDE Runtime (kde-runtime) is the runtime component of the KDE Development Platform.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kde-runtime/ https://projects.kde.org/projects/kde/kde-runtime/]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:kde-runtime.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/kde-runtime.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KActivities ==&lt;br /&gt;
&lt;br /&gt;
API for using and interacting with Activities as a consumer, application adding information to them or as an activity manager.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kdelibs/kactivities https://projects.kde.org/projects/kde/kdelibs/kactivities]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:kactivities&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/kactivities&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Kate ==&lt;br /&gt;
&lt;br /&gt;
TODO: Does it belong here or Apps?&lt;br /&gt;
&lt;br /&gt;
Kate is the text editor component for the KDE Development Platform.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kdebase/kate https://projects.kde.org/projects/kde/kdebase/kate]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:kate.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/kate.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Kate Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Konsole ==&lt;br /&gt;
&lt;br /&gt;
TODO: Does it belong here or Apps?&lt;br /&gt;
&lt;br /&gt;
Konsole is the terminal emulator component for the KDE Development Platform.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [https://projects.kde.org/projects/kde/kdebase/konsole https://projects.kde.org/projects/kde/kdebase/konsole]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:konsole.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/konsole.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Konsole Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== KDE SDK ==&lt;br /&gt;
&lt;br /&gt;
The KDE SDK Module is not strictly speaking part of the KDE Development Platform, but it contains many useful tools and scripts that make developing KDE Software a lot easier and so is recommended to always be built or installed.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | http://websvn.kde.org/trunk/KDE/kdesdk/&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| svn checkout svn://anonsvn.kde.org/home/kde/trunk/KDE/kdesdk/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE SDK Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE_Support</id>
		<title>Getting Started/Build/KDE Support</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE_Support"/>
				<updated>2012-03-18T16:11:27Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Full Recipe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE_Support}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
name=Building KDE4 From Source/KDE Support|&lt;br /&gt;
pre=[[../Qt|Qt]]|&lt;br /&gt;
next=[[../KDE_Development_Platform|KDE Development Platform]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The KDE Support module contains a number of KDE developed and supported packages that the main KDE Modules depend upon.  Your distribution packages may be sufficient for these requirements when building a KDE stable branch, but Unstable may sometimes require the latest versions to be built from source.&lt;br /&gt;
&lt;br /&gt;
Most KDE Support packages have now migrated to Git as separate modules and must be built individually, although some are still left in Subversion and can be built as a single unit.  The modules are listed below in a rough dependency order.&lt;br /&gt;
&lt;br /&gt;
=== Required Steps ===&lt;br /&gt;
&lt;br /&gt;
You need to have completed the following steps:&lt;br /&gt;
* Set up your [[../Environment|Build Environment]]&lt;br /&gt;
* Selected your [[../Recipes|Build Recipes]]&lt;br /&gt;
* Installed the [[../Requirements|System Requirements]]&lt;br /&gt;
* Installed or Built [[../Qt|Qt and related requirements]]&lt;br /&gt;
* Understand the [[../Requirements#Definitions|Requirements Table format]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The following table summarizes all the Projects contained in KDE Support and the versions required for building KDE Software.  The optional/mandatory coloring is based on the requirements of the KDE Development Platform, the requirements for building other KDE Modules or Applications may vary.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/automoc Automoc]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/attica Attica]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/polkit-qt-1 Polkit Qt]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [https://projects.kde.org/projects/kdesupport/strigi Strigi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/soprano Soprano]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/akonadi Akonadi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/cagibi Cagibi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [https://projects.kde.org/projects/kdesupport/phonon Phonon]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/prison Prison]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt based barcode library&lt;br /&gt;
|-&lt;br /&gt;
| Oxygen Icons&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| QImageBlitz&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| TagLib&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| cpp2xml&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Template ==&lt;br /&gt;
&lt;br /&gt;
Project is a &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/project http://projects.kde.org/projects/kdesupport/project]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:project.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/project.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/project Project]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automoc ==&lt;br /&gt;
&lt;br /&gt;
Automoc is a tool to automate Qt moc file creation.  Automoc '''MUST''' be built first as other KDE Support Modules depend on it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/automoc http://projects.kde.org/projects/kdesupport/automoc]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.9.88&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| All KDE Modules and Projects using moc&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:automoc.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/automoc.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/automoc Automoc]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666;&amp;quot; |&lt;br /&gt;
| No&lt;br /&gt;
| A tool to automate Qt moc file creation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attica ==&lt;br /&gt;
&lt;br /&gt;
Attica is a library for accessing the Open Collaboration Services. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/attica http://projects.kde.org/projects/kdesupport/attica]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.2.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:attica.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/attica.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/attica Attica]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for accessing the Open Collaboration Services.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polkit Qt==&lt;br /&gt;
&lt;br /&gt;
Polkit Qt is a library for accessing the PolicyKit authorization framework. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/polkit-qt-1 http://projects.kde.org/projects/kdesupport/polkit-qt-1]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.99&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:polkit-qt-1.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/polkit-qt-1.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/polkit-qt-1 PolKit Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for accessing the PolicyKit authorization framework.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Polkit Qt Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.freedesktop.org/wiki/Software/PolicyKit PolicyKit]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 0.98&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 0.98&lt;br /&gt;
| Yes&lt;br /&gt;
| The PolicyKit authorization framework.  PolicyKit 0.98 is recommended, but Polkit Qt will build with any version.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Strigi ==&lt;br /&gt;
&lt;br /&gt;
Strigi is a library for indexing files.  Note that Strigi has now been split into a number of separate Git sub-projects, but these can still be cloned and built as a single entity using the Strigi parent project.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/strigi http://projects.kde.org/projects/kdesupport/strigi]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.7.2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:strigi &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/strigi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ warning|As of 2011-03-21: After cloning the Strigi parent project, you will have to run the ''change_to_development_git.sh'' script to pull in all sub projects.}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/strigi Strigi]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for indexing files. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://qt.nokia.com/ Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.3.0&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.3.0&lt;br /&gt;
| Yes&lt;br /&gt;
| The Qt development framework.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.zlib.net/ libz]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for zip file compression&lt;br /&gt;
|-&lt;br /&gt;
| [http://bzip.org/ libbz2]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for bzip2 file compression.&lt;br /&gt;
|-&lt;br /&gt;
| [http://xmlsoft.org/ libxml2]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for parsing XML&lt;br /&gt;
|-&lt;br /&gt;
| [http://clucene.sourceforge.net/ Clucene]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &amp;gt;=0.9.16a&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &amp;gt;=0.9.16a&lt;br /&gt;
| Yes&lt;br /&gt;
| A high-performance indexing and searching API.  Version 0.9.17 does '''not''' work.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.exiv2.org/ Exiv2]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A library to manage image metadata.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ffmpeg.org/ FFMPEG]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading audio and video files.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.freedesktop.org/wiki/Software/dbus DBus]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A message bus system.&lt;br /&gt;
|-&lt;br /&gt;
| [http://oss.sgi.com/projects/fam/ FAM]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A tool for file system monitoring.&lt;br /&gt;
|-&lt;br /&gt;
| [http://logging.apache.org/log4cxx/index.html Log4cxx]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A logging framework for C++&lt;br /&gt;
|-&lt;br /&gt;
| [http://sourceforge.net/projects/cppunit/ CppUnit]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A C++ Unit Testing framework&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Soprano ==&lt;br /&gt;
&lt;br /&gt;
Soprano is a library for storing RDF data for the Nepomuk semantic desktop. &lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/soprano Soprano project page] for details.&lt;br /&gt;
&lt;br /&gt;
Soprano must be built '''BEFORE''' Akonadi.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:soprano.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/soprano.git&lt;br /&gt;
&lt;br /&gt;
== Akonadi ==&lt;br /&gt;
&lt;br /&gt;
Akonadi is a library for caching PIM data. &lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/akonadi Akonadi project page] for details.&lt;br /&gt;
&lt;br /&gt;
Akonadi must be built '''AFTER''' Soprano.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:akonadi.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/akonadi.git&lt;br /&gt;
&lt;br /&gt;
== Cagibi ==&lt;br /&gt;
&lt;br /&gt;
Cagibi is a cache/proxy daemon for SSDP, the discovery part of UPnP.&lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/cagibi Cagibi project page] for details.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:cagibi.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/cagibi.git&lt;br /&gt;
&lt;br /&gt;
== Qt Zeitgeist ==&lt;br /&gt;
&lt;br /&gt;
Qt Zeitgeist is a QT wrapper for the Zeitgeist logging program.&lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/libqtzeitgeist Qt Zeitgeist project page] for details.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:libqtzeitgeist.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/libqtzeitgeist.git&lt;br /&gt;
&lt;br /&gt;
== Phonon ==&lt;br /&gt;
&lt;br /&gt;
Phonon is a sound system abstraction layer.  This is usually packaged with Qt,  but the Phonon version from Qt is not recent enough for KDE sound to work so you will need to build the required version yourself.&lt;br /&gt;
&lt;br /&gt;
Please see the [https://projects.kde.org/projects/kdesupport/phonon Phonon project page] for details.&lt;br /&gt;
&lt;br /&gt;
You need to install this Phonon in the same location as Phonon from Qt i.e. in $QTDIR and '''NOT''' in $KDEDIR.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you have set up the recommended KDE scripts, environment variables, and git configuration.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 git clone kde:phonon.git&lt;br /&gt;
 cd phonon&lt;br /&gt;
 cb&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$QTDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
       \ -DKDE4_BUILD_TESTS=TRUE&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Note that make install may require root access.&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you are not using the recommended scripts and have properly set up your own environment.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 git clone git://anongit.kde.org/phonon.git&lt;br /&gt;
 cd &amp;lt;your build root directory, or the module source dir&amp;gt;&lt;br /&gt;
 mkdir &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cd &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$QTDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Backend ===&lt;br /&gt;
&lt;br /&gt;
Building the main Phonon module is sufficient for building KDE.  If you also want to play sound then you need to build a backend.  Choose a suitable backend from those available below:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-gstreamer.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-xine.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-directshow.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-mmf.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-quicktime.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-waveout.git&lt;br /&gt;
&lt;br /&gt;
Note that DirectShow is for Windows only.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you get an error like&lt;br /&gt;
&lt;br /&gt;
 designer: symbol lookup error: /path/to/kde/lib/kde4/plugins/phonon_backend/phonon_xine.so: &lt;br /&gt;
           undefined symbol: _ZN6Phonon12PulseSupport11getInstanceEv&lt;br /&gt;
&lt;br /&gt;
while running Qt Designer you need to:&lt;br /&gt;
&lt;br /&gt;
 rm $QTDIR/lib/libphonon.so.4&lt;br /&gt;
&lt;br /&gt;
== Prison ==&lt;br /&gt;
&lt;br /&gt;
Prison is a barcode library to enable optional barcode support in KDE Software.  It was introduced in the KDE 4.7 Release Cycle.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/prison http://projects.kde.org/projects/kdesupport/prison]&lt;br /&gt;
|-&lt;br /&gt;
| '''Stable Version'''&lt;br /&gt;
| Unreleased&lt;br /&gt;
|-&lt;br /&gt;
| '''Required By'''&lt;br /&gt;
| No KDE Modules as yet&lt;br /&gt;
|-&lt;br /&gt;
| '''Easy Repository'''&lt;br /&gt;
| git clone kde:prison.git&lt;br /&gt;
|-&lt;br /&gt;
| '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/prison.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/prison Prison]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#6ECFFF;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt based barcode library&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Prison Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://fukuchi.org/works/qrencode/index.en.html QRencode]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#FF6E6E;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading and writing QR Code barcodes&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.libdmtx.org/ Dmtx]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#FF6E6E;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading and writing Data Matrix 2D barcodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== kdesupport svn module ==&lt;br /&gt;
&lt;br /&gt;
A number of kdesupport packages are still in svn:&lt;br /&gt;
&lt;br /&gt;
* oxygen-icons&lt;br /&gt;
* qimageblitz - for building kde-workspace&lt;br /&gt;
* taglib&lt;br /&gt;
* taglib-extras&lt;br /&gt;
* cpp2xml&lt;br /&gt;
* twine - for building kdebindings&lt;br /&gt;
* emerge - for building kde on windows&lt;br /&gt;
&lt;br /&gt;
These packages can be checked out and built together with a single recipe.&lt;br /&gt;
&lt;br /&gt;
Note that QCA lives in kdesupport svn but is not built by default.  It is recommended that you use your system QCA packages and only checkout the kdesupport svn version if you are going to develop QCA.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you have set up the recommended KDE scripts, environment variables, and git configuration.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd kdesupport&lt;br /&gt;
 kdebuild&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you are not using the recommended scripts and have properly set up your own environment.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd &amp;lt;your build root directory, or the module source dir&amp;gt;&lt;br /&gt;
 mkdir &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cd &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$KDEDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
       \ -DKDE4_BUILD_TESTS=TRUE&lt;br /&gt;
 make &lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you get a message related to &lt;br /&gt;
   target libQtTest.so not found&lt;br /&gt;
you may need to recompile qt-kde. This time you should take out&lt;br /&gt;
   -nomake demos -nomake examples&lt;br /&gt;
from the configure command, so that Qt generates library QtTest.&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
      CMake Error: Qt qmake not found!&lt;br /&gt;
Then:&lt;br /&gt;
      1) uncomment Qt section in .bashrc script (QTDIR, QT_PLUGINS_DIR,      &lt;br /&gt;
            PKG_CONFIG_PATH variable settings).&lt;br /&gt;
      2) source ~/.bashrc&lt;br /&gt;
      3) cd &amp;amp;&amp;amp; cd qt-kde&lt;br /&gt;
      4) make confclean&lt;br /&gt;
      5) repeat steps for installing Qt (from ./configure line).&lt;br /&gt;
      6) retry building kdesupport&lt;br /&gt;
&lt;br /&gt;
= Next Step =&lt;br /&gt;
&lt;br /&gt;
Once all the KDE Support requirements have been installed it is time to install the [[../KDE_Development_Platform|KDE Development Platform]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Getting_Started/Build/Qt</id>
		<title>Archive:Getting Started/Build/Qt</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Getting_Started/Build/Qt"/>
				<updated>2012-03-17T22:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* DBusMenu-Qt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started/Build/Qt}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source/Qt|&lt;br /&gt;
&lt;br /&gt;
pre=[[Getting_Started/Build/Requirements]]|&lt;br /&gt;
&lt;br /&gt;
next=[[Getting_Started/Build/KdeSupport]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page details the build requirements for Qt and some related packages.  For most of these requirements it is preferable to use your distribution supplied packages, however in some case you will need to build some requirements yourself and this page will also explain how to do so.&lt;br /&gt;
&lt;br /&gt;
=== Required Steps ===&lt;br /&gt;
&lt;br /&gt;
You need to have completed the following steps:&lt;br /&gt;
* Set up your [[../Environment|Build Environment]]&lt;br /&gt;
* Selected your [[../Recipes|Build Recipes]]&lt;br /&gt;
* Installed the [[../Requirements|System Requirements]]&lt;br /&gt;
* Understand the [[../Requirements#Definitions|Requirements Table format]]&lt;br /&gt;
&lt;br /&gt;
== makeobj ==&lt;br /&gt;
&lt;br /&gt;
Makeobj is a shell script to assist make.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://websvn.kde.org/trunk/KDE/kdesdk/scripts/makeobj makeobj]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj r1215872]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj r1215872]&lt;br /&gt;
| No&lt;br /&gt;
| A make helper shell script&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is a part of the kdesdk module and, while optional, is strongly recommended when building KDE modules.  If you have kdesdk installed on your system then this version should be sufficient, but r1215872 is recommended when working with Git.&lt;br /&gt;
&lt;br /&gt;
To install it [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj download via WebSVN] and install into your path somewhere, preferably ~/.bin.  Once you have built kdesdk from source you should then remove this copy.&lt;br /&gt;
&lt;br /&gt;
== Qt ==&lt;br /&gt;
&lt;br /&gt;
Qt is the development freamework that all KDE Software is built upon.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://qt.nokia.com/ Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.7.0&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.7.0&lt;br /&gt;
| Yes&lt;br /&gt;
| The Qt development framework&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most distributions package a recent enough Qt to build KDE, although you may need to add an extra repository to do so.  Building Qt can take a long time, so packages are preferred for a quick start.&lt;br /&gt;
&lt;br /&gt;
At some stage, KDE master may switch to relying on a development version of Qt, or may require patches to Qt for bug-fixes that have not yet been released by Qt.  In this case you may need to build your own copy of Qt to build KDE against.  You can choose use either the main Qt repository on Gitorious or the KDE copy of Qt.  You can choose to overwrite your system Qt install when doing so but this is not recommended.  You are advised to set your build environment $QTDIR install directory to a local folder different to $KDEDIR to allow easy switching between Qt versions.&lt;br /&gt;
&lt;br /&gt;
Please see the [https://projects.kde.org/projects/qt KDE Qt project page] for further details.  It is recommended to read [https://projects.kde.org/projects/qt/repository/revisions/master/entry/INSTALL the INSTALL file] for more details.&lt;br /&gt;
&lt;br /&gt;
Note that you need to install Qt and Phonon from Qt and then later to install Phonon KDE from git at the same location. This will ensure you get sound in Qt-based applications as well as in KDE ones.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
Ensure you setup your environment $QTDIR to point to somewhere suitable, e.g. /usr/local.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source directory&amp;gt;&lt;br /&gt;
 git clone kde:qt&lt;br /&gt;
 cd qt&lt;br /&gt;
 ./configure ''&amp;lt;configure options, use $QTDIR as your 'installdir'&amp;gt;''&lt;br /&gt;
 nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source directory&amp;gt;&lt;br /&gt;
 git clone git://anongit.kde.org/qt&lt;br /&gt;
 cd qt&lt;br /&gt;
 ./configure ''&amp;lt;configure options&amp;gt;''&lt;br /&gt;
 nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If ./configure produces errors about missing headers, run the following command before trying again: &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;QTDIR=`pwd` bin/syncqt&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure &amp;lt;tt&amp;gt;which qmake&amp;lt;/tt&amp;gt; delivers something out of $QTDIR, e.g. /home/kde-devel/qt-kde/bin/qmake&lt;br /&gt;
&lt;br /&gt;
If you get &amp;quot;error: X11/Xlib.h: No such file or directory&amp;quot;, install the devel package of &amp;lt;tt&amp;gt;xorg&amp;lt;/tt&amp;gt; (the actual name may vary between operating systems, for example it is &amp;lt;tt&amp;gt;xorg-dev&amp;lt;/tt&amp;gt; on Ubuntu based systems such as Kubuntu). &lt;br /&gt;
&lt;br /&gt;
If you get an error in the configure step about missing defines, check the value of &amp;lt;tt&amp;gt;$QMAKESPEC&amp;lt;/tt&amp;gt;.  Some distributions set this to point directly to the system-installed Qt.  If &amp;lt;tt&amp;gt;unset QMAKESPEC&amp;lt;/tt&amp;gt; solves the problem, you probably want to add it to the &amp;lt;tt&amp;gt;~/.bashrc&amp;lt;/tt&amp;gt; script.&lt;br /&gt;
&lt;br /&gt;
If you get an error &amp;quot;.pch/debug-shared/QtCore&amp;quot;, this is because Qt-4.3 enables precompiled headers if your gcc supports it, but for some reason it doesn't work for you. If you use distcc, configure qt with -no-pch. If you use icecream, update to the latest icecream from svn trunk.&lt;br /&gt;
&lt;br /&gt;
Try running any Qt program, like {{program|assistant}}.&lt;br /&gt;
&lt;br /&gt;
=== Generating local API documentation ===&lt;br /&gt;
&lt;br /&gt;
It's nice to have the Qt documentation locally for nice integration with [http://kdevelop.org/ KDevelop], and doing this is really quite easy:&lt;br /&gt;
 cd $KDE_SRC/qt&lt;br /&gt;
 make docs&lt;br /&gt;
 ./config.status&lt;br /&gt;
 make install&lt;br /&gt;
Note that it is necessary to do this only once, even if you rebuild Qt later.&lt;br /&gt;
&lt;br /&gt;
== DBusMenu-Qt ==&lt;br /&gt;
&lt;br /&gt;
DBusMenu-Qt is a library providing a Qt implementation of the DBusMenu spec.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [https://launchpad.net/libdbusmenu-qt DBusMenu-Qt]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt implementation of the DBusMenu spec.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Your distribution packages should be sufficient for this requirement.  If you need to build your own copy using the Easy or Full Recipe then either download a tarball form the project home page or use the following bazaar command:&lt;br /&gt;
&lt;br /&gt;
 bzr branch lp:libdbusmenu-qt&lt;br /&gt;
&lt;br /&gt;
You need json to build the tests.&lt;br /&gt;
&lt;br /&gt;
== Next Step ==&lt;br /&gt;
Once Qt has been installed it is time to install [[../KDE_Support|KDE Support]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-11-06T18:06:38Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Working with stable branches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the remote branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
The remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.  You can even add ''any'' remote repository you want to your local clone to cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, ''always'' use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common Options:&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last n commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^n&lt;br /&gt;
&lt;br /&gt;
HEAD^ is the terminology for saying &amp;quot;commit prior to head&amp;quot;. HEAD~ works too. HEAD^^ would indicate 2 commits back, and so forth.&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see a list of commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see the details and diff for a commit&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Archive:Getting_Started/Build/Qt</id>
		<title>Archive:Getting Started/Build/Qt</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Archive:Getting_Started/Build/Qt"/>
				<updated>2011-09-07T18:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Qt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started/Build/Qt}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Building KDE4 From Source/Qt|&lt;br /&gt;
&lt;br /&gt;
pre=[[Getting_Started/Build/Requirements]]|&lt;br /&gt;
&lt;br /&gt;
next=[[Getting_Started/Build/KdeSupport]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page details the build requirements for Qt and some related packages.  For most of these requirements it is preferable to use your distribution supplied packages, however in some case you will need to build some requirements yourself and this page will also explain how to do so.&lt;br /&gt;
&lt;br /&gt;
=== Required Steps ===&lt;br /&gt;
&lt;br /&gt;
You need to have completed the following steps:&lt;br /&gt;
* Set up your [[../Environment|Build Environment]]&lt;br /&gt;
* Selected your [[../Recipes|Build Recipes]]&lt;br /&gt;
* Installed the [[../Requirements|System Requirements]]&lt;br /&gt;
* Understand the [[../Requirements#Definitions|Requirements Table format]]&lt;br /&gt;
&lt;br /&gt;
== makeobj ==&lt;br /&gt;
&lt;br /&gt;
Makeobj is a shell script to assist make.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://websvn.kde.org/trunk/KDE/kdesdk/scripts/makeobj makeobj]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj r1215872]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj r1215872]&lt;br /&gt;
| No&lt;br /&gt;
| A make helper shell script&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is a part of the kdesdk module and, while optional, is strongly recommended when building KDE modules.  If you have kdesdk installed on your system then this version should be sufficient, but r1215872 is recommended when working with Git.&lt;br /&gt;
&lt;br /&gt;
To install it [http://websvn.kde.org/*checkout*/trunk/KDE/kdesdk/scripts/makeobj download via WebSVN] and install into your path somewhere, preferably ~/.bin.  Once you have built kdesdk from source you should then remove this copy.&lt;br /&gt;
&lt;br /&gt;
== Qt ==&lt;br /&gt;
&lt;br /&gt;
Qt is the development freamework that all KDE Software is built upon.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://qt.nokia.com/ Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.7.0&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.7.0&lt;br /&gt;
| Yes&lt;br /&gt;
| The Qt development framework&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most distributions package a recent enough Qt to build KDE, although you may need to add an extra repository to do so.  Building Qt can take a long time, so packages are preferred for a quick start.&lt;br /&gt;
&lt;br /&gt;
At some stage, KDE master may switch to relying on a development version of Qt, or may require patches to Qt for bug-fixes that have not yet been released by Qt.  In this case you may need to build your own copy of Qt to build KDE against.  You can choose use either the main Qt repository on Gitorious or the KDE copy of Qt.  You can choose to overwrite your system Qt install when doing so but this is not recommended.  You are advised to set your build environment $QTDIR install directory to a local folder different to $KDEDIR to allow easy switching between Qt versions.&lt;br /&gt;
&lt;br /&gt;
Please see the [https://projects.kde.org/projects/qt KDE Qt project page] for further details.  It is recommended to read [https://projects.kde.org/projects/qt/repository/revisions/master/entry/INSTALL the INSTALL file] for more details.&lt;br /&gt;
&lt;br /&gt;
Note that you need to install Qt and Phonon from Qt and then later to install Phonon KDE from git at the same location. This will ensure you get sound in Qt-based applications as well as in KDE ones.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
Ensure you setup your environment $QTDIR to point to somewhere suitable.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source directory&amp;gt;&lt;br /&gt;
 git clone kde:qt&lt;br /&gt;
 cd qt&lt;br /&gt;
 ./configure ''&amp;lt;configure options, use $QTDIR as your 'installdir'&amp;gt;''&lt;br /&gt;
 nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source directory&amp;gt;&lt;br /&gt;
 git clone git://anongit.kde.org/qt&lt;br /&gt;
 cd qt&lt;br /&gt;
 ./configure ''&amp;lt;configure options&amp;gt;''&lt;br /&gt;
 nice make -j2 # for faster compiles use -j(X+1)' where X is your number of processor cores&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If ./configure produces errors about missing headers, run the following command before trying again: &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;QTDIR=`pwd` bin/syncqt&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure &amp;lt;tt&amp;gt;which qmake&amp;lt;/tt&amp;gt; delivers something out of $QTDIR, e.g. /home/kde-devel/qt-kde/bin/qmake&lt;br /&gt;
&lt;br /&gt;
If you get &amp;quot;error: X11/Xlib.h: No such file or directory&amp;quot;, install the devel package of &amp;lt;tt&amp;gt;xorg&amp;lt;/tt&amp;gt; (the actual name may vary between operating systems, for example it is &amp;lt;tt&amp;gt;xorg-dev&amp;lt;/tt&amp;gt; on Ubuntu based systems such as Kubuntu). &lt;br /&gt;
&lt;br /&gt;
If you get an error in the configure step about missing defines, check the value of &amp;lt;tt&amp;gt;$QMAKESPEC&amp;lt;/tt&amp;gt;.  Some distributions set this to point directly to the system-installed Qt.  If &amp;lt;tt&amp;gt;unset QMAKESPEC&amp;lt;/tt&amp;gt; solves the problem, you probably want to add it to the &amp;lt;tt&amp;gt;~/.bashrc&amp;lt;/tt&amp;gt; script.&lt;br /&gt;
&lt;br /&gt;
If you get an error &amp;quot;.pch/debug-shared/QtCore&amp;quot;, this is because Qt-4.3 enables precompiled headers if your gcc supports it, but for some reason it doesn't work for you. If you use distcc, configure qt with -no-pch. If you use icecream, update to the latest icecream from svn trunk.&lt;br /&gt;
&lt;br /&gt;
Try running any Qt program, like {{program|assistant}}.&lt;br /&gt;
&lt;br /&gt;
=== Generating local API documentation ===&lt;br /&gt;
&lt;br /&gt;
It's nice to have the Qt documentation locally for nice integration with [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|KDevelop]], and doing this is really quite easy:&lt;br /&gt;
 cd $KDE_SRC/qt&lt;br /&gt;
 make docs&lt;br /&gt;
 ./config.status&lt;br /&gt;
 make install&lt;br /&gt;
Note that it is necessary to do this only once, even if you rebuild Qt later.&lt;br /&gt;
&lt;br /&gt;
== DBusMenu-Qt ==&lt;br /&gt;
&lt;br /&gt;
DBusMenu-Qt is a library providing a Qt implementation of the DBusMenu spec.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://people.canonical.com/~agateau/dbusmenu/index.html DBusMenu-Qt]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt implementation of the DBusMenu spec.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Your distribution packages should be sufficient for this requirement.  If you need to build your own copy using the Easy or Full Recipe then either download a tarball form the project home page or use the following subversion command:&lt;br /&gt;
&lt;br /&gt;
 git clone git://gitorious.org/dbusmenu/dbusmenu-qt.git&lt;br /&gt;
&lt;br /&gt;
You need json to build the tests.&lt;br /&gt;
&lt;br /&gt;
== Next Step ==&lt;br /&gt;
Once Qt has been installed it is time to install [[../KDE_Support|KDE Support]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Projects/Marble</id>
		<title>Projects/Marble</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Projects/Marble"/>
				<updated>2011-09-01T18:26:12Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Mapping Coordination */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Projects/Marble}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Marble_logo.png]]&lt;br /&gt;
&lt;br /&gt;
== About Marble ==&lt;br /&gt;
;[[/Devices_and_Use_Cases|Devices and Use Cases]]&lt;br /&gt;
;[[/FAQ|Marble FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Success Stories: 3rd party applications using the Marble Library==&lt;br /&gt;
;[[/MarbleUsedBy|Software that makes use of Marble]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials: How to use the Marble Widget in your application ==&lt;br /&gt;
;[[/MarbleDesigner|with Qt Designer]]&lt;br /&gt;
;[[/MarbleWindows|On Windows, with Qt Creator/Qt Designer]]&lt;br /&gt;
;[[/MarbleCPlusPlus|with C++]]&lt;br /&gt;
;[[/MarblePython|with Python]]&lt;br /&gt;
&lt;br /&gt;
;[[/MarbleDBus|via a shell script]]&lt;br /&gt;
&lt;br /&gt;
== How to become a Marble developer (&amp;quot;Marblehead&amp;quot;) ==&lt;br /&gt;
&lt;br /&gt;
=== So you are new to Marble development ... ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Welcome!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you'll get all the information you need to start Marble development:&lt;br /&gt;
&lt;br /&gt;
;[[/GoMarble|How to become a Marble Developer]]&lt;br /&gt;
&lt;br /&gt;
== Compiling Marble ==&lt;br /&gt;
;[[/LinuxCompiling|Compiling on Linux]]&lt;br /&gt;
;[[/WindowsCompiling|Compiling on Windows]]&lt;br /&gt;
;[[/MaemoEnvironment|Compiling on Maemo]]&lt;br /&gt;
;[[/MeeGoEnvironment|Compiling on MeeGo]]&lt;br /&gt;
;[[/MacCompiling|Compiling on Mac OS]]&lt;br /&gt;
;[[/QtCreator|Setting up QtCreator for Marble Development]]&lt;br /&gt;
&lt;br /&gt;
== Packaging Marble ==&lt;br /&gt;
&lt;br /&gt;
;[[/NewMarbleMoldules|New Marble Modules]] (future packaging advice)&lt;br /&gt;
&lt;br /&gt;
Here is some advice about how packaging is supposed to happen on the various platforms that are supported.&lt;br /&gt;
&lt;br /&gt;
;[[/LinuxPackaging|Packaging for Linux]]&lt;br /&gt;
;[[/WindowsPackaging|Packaging for Windows]]&lt;br /&gt;
;[[/MaemoPackaging|Packaging for Maemo]]&lt;br /&gt;
;[[/MeeGoPackaging|Packaging for MeeGo]]&lt;br /&gt;
;[[/MacPackaging|Packaging for Mac]]&lt;br /&gt;
&lt;br /&gt;
== Tools for Marble ==&lt;br /&gt;
&lt;br /&gt;
Here are some tools and checks that are performed on marble code:&lt;br /&gt;
;[https://bugs.kde.org/buglist.cgi?query_format=advanced&amp;amp;short_desc_type=allwordssubstr&amp;amp;short_desc=&amp;amp;product=marble&amp;amp;bug_status=UNCONFIRMED&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;cmdtype=doit&amp;amp;order=Importance Marble Open Bugs]&lt;br /&gt;
;[http://reviewboard.kde.org/groups/marble/ Review Board]&lt;br /&gt;
;[http://api.kde.org/4.x-api/kdeedu-apidocs/marble/html/index.html API Docs (KDE Trunk)]&lt;br /&gt;
;[http://www.englishbreakfastnetwork.org/apidocs/apidox-kde-4.x/kdeedu-marble.html APIDOX reports]&lt;br /&gt;
;[http://www.englishbreakfastnetwork.org/krazy/reports/kde-4.x/kdeedu/marble/index.html Krazy reports]&lt;br /&gt;
&lt;br /&gt;
== Programming Coordination ==&lt;br /&gt;
&lt;br /&gt;
Here are a few links to various issues we are working on:&lt;br /&gt;
;[[/Gsoc2010| Gsoc Students projects 2010]]&lt;br /&gt;
;[[/GsocGit| Use of git(orious) for GSOC]]&lt;br /&gt;
;[[/TODO|TODO list]]&lt;br /&gt;
;[[/MaemoTODO|Maemo specific TODO list]]&lt;br /&gt;
&lt;br /&gt;
;[[/GSoC2011| GSoC Students' projects 2011]]&lt;br /&gt;
;[http://community.kde.org/SoCiS/2011/Ideas#Marble_Virtual_Globe ESA SoCIS 2011 ideas]&lt;br /&gt;
&lt;br /&gt;
=== Translation ===&lt;br /&gt;
;[[/MapTranslation|Map Translation]]&lt;br /&gt;
;[[/UiTranslation|UI Translation]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== User Interface ===&lt;br /&gt;
;[[/Mockups|Mockups]]&lt;br /&gt;
;[[/IconStatus|Icon Status]]&lt;br /&gt;
&lt;br /&gt;
=== Texture Mapping ===&lt;br /&gt;
;[[/TextureNG|Texture Mapping]]&lt;br /&gt;
&lt;br /&gt;
=== GeoData Library / KML ===&lt;br /&gt;
The base classes to manipulate geographic data&lt;br /&gt;
;[[/GeoData|GeoData Presentation]]&lt;br /&gt;
;[[/GeoData/GeoDataUse|Use cases for GeoData classes]]&lt;br /&gt;
;[http://websvn.kde.org/*checkout*/trunk/KDE/kdeedu/marble/src/lib/geodata/data/README.html GeoData API Description]&lt;br /&gt;
;[[/GeoData/GeoDataParsing|Parsing GeoData]]&lt;br /&gt;
;[[/GeoData/GeoDataWriter|Writing GeoData]]&lt;br /&gt;
;[[/GeoData/PointerVsImplicitShare|Pointer vs. Implicit Share]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;[[/KMLStatus|KML Status]]&lt;br /&gt;
;[[/GPXStatus|GPX Status]]&lt;br /&gt;
&lt;br /&gt;
Using GeoData:&lt;br /&gt;
;[[/FileManagement|File Management]]&lt;br /&gt;
;[[/Placemark|Placemarks Management]]&lt;br /&gt;
;[[/ModelView|Review of Model-View use in marble]]&lt;br /&gt;
&lt;br /&gt;
=== Geo Graphics View === &lt;br /&gt;
;[[/GeoGraphicsViewOverview|Overview of the GeoGraphicsView]]&lt;br /&gt;
;[[/GraphicsViewGeoParser| Interaction between GeoData and GeoGraphicsView]]&lt;br /&gt;
&lt;br /&gt;
=== GeoPainter / DGML ===&lt;br /&gt;
;[[/GeoPainter|GeoPainter]]&lt;br /&gt;
;[[/Dgml|DGML]]&lt;br /&gt;
&lt;br /&gt;
=== Plugin Interfaces ===&lt;br /&gt;
;[[/Plugins|Plugin interfaces]]&lt;br /&gt;
&lt;br /&gt;
=== Marble Runner ===&lt;br /&gt;
;[[/CoordinateRunner|Coordinate Runner]]&lt;br /&gt;
;[[/OsmNameFinderRunner|OSM Runner]]&lt;br /&gt;
;[[/RunnerHOWTO|Runner HOWTO]]&lt;br /&gt;
&lt;br /&gt;
=== Online Services ===&lt;br /&gt;
;[[/OnlineServices|Creating new Online Services]]&lt;br /&gt;
;[[/ListOfPossibleOnlineServices|List of possible Online Services]]&lt;br /&gt;
&lt;br /&gt;
=== Projections ===&lt;br /&gt;
;[[/WinkelIii|Winkel III]]&lt;br /&gt;
;[[/RobinsonProjection|Robinson projection]]&lt;br /&gt;
[http://www.radicalcartography.net/?projectionref A little overview of map projections]&lt;br /&gt;
&lt;br /&gt;
=== Tile Download ===&lt;br /&gt;
;[[/TileDownload|Tile Download]]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
;[[/CustomMaps|How to customize maps]]&lt;br /&gt;
;[[/MarblesSecrets|Marble's Secrets]]&lt;br /&gt;
;[[/ProxyConnection|How to use the Proxy]]&lt;br /&gt;
&lt;br /&gt;
=== GeoClue / GPS ===&lt;br /&gt;
;[[/GeoClue|GeoClue support in Marble]]&lt;br /&gt;
&lt;br /&gt;
=== XDG Base Directory Specification ===&lt;br /&gt;
;[[/xdg|XDG Base Directory Specification]]&lt;br /&gt;
&lt;br /&gt;
== Mapping Coordination ==&lt;br /&gt;
Possible maps we could use:&lt;br /&gt;
* [http://www.unearthedoutdoors.net/global_data/true_marble/download TrueMarble Global 250m images]&lt;br /&gt;
* [http://onearth.jpl.nasa.gov/ OnEarth NASA satellite images]&lt;br /&gt;
* [http://worldwindcentral.com/wiki/Add-on:ZoomIt! ZoomIt! (in parts proprietary)]&lt;br /&gt;
* [http://sos.noaa.gov/datasets/ NOAA Science on a Sphere]&lt;br /&gt;
* [http://efele.net/maps/tz/world/ Olsen Time Zone map in Shapefile format].  Public Domain.  Scripted to generate from current tz file.&lt;br /&gt;
&lt;br /&gt;
=== Natural Earth Vector Map ===&lt;br /&gt;
;[[/NaturalEarth|A proposal to use the Natural Earth vector map]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
;[[/HistoricalMaps|How to create Historical Maps]]&lt;br /&gt;
;[[/CustomMaps|How to create Custom Maps]]&lt;br /&gt;
&lt;br /&gt;
;[[/PalaeoMaps|Global Palaeogeography]]&lt;br /&gt;
&lt;br /&gt;
== Routing ==&lt;br /&gt;
;[[/OnlineRoutingImplementation|Implementation of Online-Routing]]&lt;br /&gt;
;[[/MaemoOfflineRouting|Installation of Marble and Gosmore on Maemo]]&lt;br /&gt;
;[[/RoutingRoadmap|Routing Roadmap]]&lt;br /&gt;
;[[/RoutingInstructions|Routing Instructions]]&lt;br /&gt;
&lt;br /&gt;
== valgrind  ==&lt;br /&gt;
if you want to fix memory leaks, you can run valgrind with:&lt;br /&gt;
&lt;br /&gt;
valgrind --leak-check=full --track-origins=yes --num-callers=30 marble 2&amp;gt;&amp;amp;1 | tee MARBLE_MEMCHECK&lt;br /&gt;
&lt;br /&gt;
== Meetings ==&lt;br /&gt;
Summaries and logs of scheduled Marble meetings can be found on the following pages:&lt;br /&gt;
;[[/MarbleMeeting20081029|Wednesday Nov. 10th, 2008]]&lt;br /&gt;
&lt;br /&gt;
;[[/MarbleMeeting20101107|Marble Weekend Sprint, Nov. 5-7]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-08-30T19:16:23Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Working with existing remote branches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the remote branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
For kdelibs, kdepimlibs, kde-runtime, kate, konsole and kde-workspace, the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
In other projects the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track 4.6 origin/4.6&lt;br /&gt;
 git checkout 4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin 4.6:4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.  You can even add ''any'' remote repository you want to your local clone to cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, ''always'' use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common Options:&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last n commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^n&lt;br /&gt;
&lt;br /&gt;
HEAD^ is the terminology for saying &amp;quot;commit prior to head&amp;quot;. HEAD~ works too. HEAD^^ would indicate 2 commits back, and so forth.&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see a list of commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see the details and diff for a commit&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-08-30T19:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Cherry Picking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the local branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
For kdelibs, kdepimlibs, kde-runtime, kate, konsole and kde-workspace, the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
In other projects the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track 4.6 origin/4.6&lt;br /&gt;
 git checkout 4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin 4.6:4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.  You can even add ''any'' remote repository you want to your local clone to cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, ''always'' use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Common Options:&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last n commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^n&lt;br /&gt;
&lt;br /&gt;
HEAD^ is the terminology for saying &amp;quot;commit prior to head&amp;quot;. HEAD~ works too. HEAD^^ would indicate 2 commits back, and so forth.&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see a list of commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see the details and diff for a commit&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-08-30T19:11:44Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Interactive Rebasing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the local branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
For kdelibs, kdepimlibs, kde-runtime, kate, konsole and kde-workspace, the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
In other projects the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track 4.6 origin/4.6&lt;br /&gt;
 git checkout 4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin 4.6:4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note you can add ''any'' remote repository to your local clone if cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
;Common Options&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last n commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^n&lt;br /&gt;
&lt;br /&gt;
HEAD^ is the terminology for saying &amp;quot;commit prior to head&amp;quot;. HEAD~ works too. HEAD^^ would indicate 2 commits back, and so forth.&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see a list of commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see the details and diff for a commit&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-08-30T19:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Viewing What You've Changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the local branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
For kdelibs, kdepimlibs, kde-runtime, kate, konsole and kde-workspace, the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
In other projects the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track 4.6 origin/4.6&lt;br /&gt;
 git checkout 4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin 4.6:4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note you can add ''any'' remote repository to your local clone if cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
;Common Options&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last x commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^x&lt;br /&gt;
&lt;br /&gt;
HEAD^ is the terminology for saying &amp;quot;commit prior to head&amp;quot;. HEAD~ works too. HEAD^^ would indicate 2 commits back, and so forth.&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see a list of commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see the details and diff for a commit&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/KDE_Support</id>
		<title>Getting Started/Build/KDE Support</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/KDE_Support"/>
				<updated>2011-08-11T22:49:58Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Qt Zeitgeist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|This page is yet to be reviewed for changes required by the migration to Git.  Information and commands on this page may no longer be valid and should be used with care. Please see the [[Development/Git|KDE Git hub page]] for more details. }}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started/Build/KDE_Support}}&lt;br /&gt;
&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
name=Building KDE4 From Source/KDE Support|&lt;br /&gt;
pre=[[../Qt|Qt]]|&lt;br /&gt;
next=[[../KDE_Development_Platform|KDE Development Platform]]|&lt;br /&gt;
|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The KDE Support module contains a number of KDE developed and supported packages that the main KDE Modules depend upon.  Your distribution packages may be sufficient for these requirements when building a KDE stable branch, but Unstable may sometimes require the latest versions to be built from source.&lt;br /&gt;
&lt;br /&gt;
Most KDE Support packages have now migrated to Git as separate modules and must be built individually, although some are still left in Subversion and can be built as a single unit.  The modules are listed below in a rough dependency order.&lt;br /&gt;
&lt;br /&gt;
=== Required Steps ===&lt;br /&gt;
&lt;br /&gt;
You need to have completed the following steps:&lt;br /&gt;
* Set up your [[../Environment|Build Environment]]&lt;br /&gt;
* Selected your [[../Recipes|Build Recipes]]&lt;br /&gt;
* Installed the [[../Requirements|System Requirements]]&lt;br /&gt;
* Installed or Built [[../Qt|Qt and related requirements]]&lt;br /&gt;
* Understand the [[../Requirements#Definitions|Requirements Table format]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
The following table summarizes all the Projects contained in KDE Support and the versions required for building KDE Software.  The optional/mandatory coloring is based on the requirements of the KDE Development Platform, the requirements for building other KDE Modules or Applications may vary.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/automoc Automoc]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/attica Attica]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/polkit-qt-1 Polkit Qt]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [https://projects.kde.org/projects/kdesupport/strigi Strigi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/soprano Soprano]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/akonadi Akonadi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/cagibi Cagibi]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [https://projects.kde.org/projects/kdesupport/phonon Phonon]&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/prison Prison]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt based barcode library&lt;br /&gt;
|-&lt;br /&gt;
| Oxygen Icons&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| QImageBlitz&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| TagLib&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| Yes&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| cpp2xml&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| No&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Template ==&lt;br /&gt;
&lt;br /&gt;
Project is a &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/project http://projects.kde.org/projects/kdesupport/project]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:project.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/project.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/project Project]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http:// Project]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automoc ==&lt;br /&gt;
&lt;br /&gt;
Automoc is a tool to automate Qt moc file creation.  Automoc '''MUST''' be built first as other KDE Support Modules depend on it.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/automoc http://projects.kde.org/projects/kdesupport/automoc]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.9.88&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| All KDE Modules and Projects using moc&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:automoc.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/automoc.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/automoc Automoc]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666;&amp;quot; |&lt;br /&gt;
| No&lt;br /&gt;
| A tool to automate Qt moc file creation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Attica ==&lt;br /&gt;
&lt;br /&gt;
Attica is a library for accessing the Open Collaboration Services. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/attica http://projects.kde.org/projects/kdesupport/attica]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.2.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:attica.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/attica.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/attica Attica]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for accessing the Open Collaboration Services.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polkit Qt==&lt;br /&gt;
&lt;br /&gt;
Polkit Qt is a library for accessing the PolicyKit authorization framework. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/polkit-qt-1 http://projects.kde.org/projects/kdesupport/polkit-qt-1]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.99&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:polkit-qt-1.git&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/polkit-qt-1.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/polkit-qt-1 PolKit Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for accessing the PolicyKit authorization framework.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Polkit Qt Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.freedesktop.org/wiki/Software/PolicyKit PolicyKit]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 0.98&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 0.98&lt;br /&gt;
| Yes&lt;br /&gt;
| The PolicyKit authorization framework.  PolicyKit 0.98 is recommended, but Polkit Qt will build with any version.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Strigi ==&lt;br /&gt;
&lt;br /&gt;
Strigi is a library for indexing files.  Note that Strigi has now been split into a number of separate Git sub-projects, but these can still be cloned and built as a single entity using the Strigi parent project.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/strigi http://projects.kde.org/projects/kdesupport/strigi]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Stable Version'''&lt;br /&gt;
| 0.7.2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Required By'''&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Easy Repository'''&lt;br /&gt;
| git clone kde:strigi &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#EFEFEF;&amp;quot; | '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/strigi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{ warning|As of 2011-03-21: After cloning the Strigi parent project, you will have to run the ''change_to_development_git.sh'' script to pull in all sub projects.}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/strigi Strigi]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66;&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for indexing files. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Project Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; style=&amp;quot;background-color:#EFEFEF;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://qt.nokia.com/ Qt]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.3.0&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; | &amp;gt;= 4.3.0&lt;br /&gt;
| Yes&lt;br /&gt;
| The Qt development framework.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.zlib.net/ libz]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for zip file compression&lt;br /&gt;
|-&lt;br /&gt;
| [http://bzip.org/ libbz2]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for bzip2 file compression.&lt;br /&gt;
|-&lt;br /&gt;
| [http://xmlsoft.org/ libxml2]&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#FF6666&amp;quot; |&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for parsing XML&lt;br /&gt;
|-&lt;br /&gt;
| [http://clucene.sourceforge.net/ Clucene]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &amp;gt;=0.9.16a&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &amp;gt;=0.9.16a&lt;br /&gt;
| Yes&lt;br /&gt;
| A high-performance indexing and searching API.  Version 0.9.17 does '''not''' work.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.exiv2.org/ Exiv2]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A library to manage image metadata.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.ffmpeg.org/ FFMPEG]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading audio and video files.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.freedesktop.org/wiki/Software/dbus DBus]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A message bus system.&lt;br /&gt;
|-&lt;br /&gt;
| [http://oss.sgi.com/projects/fam/ FAM]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A tool for file system monitoring.&lt;br /&gt;
|-&lt;br /&gt;
| [http://logging.apache.org/log4cxx/index.html Log4cxx]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A logging framework for C++&lt;br /&gt;
|-&lt;br /&gt;
| [http://sourceforge.net/projects/cppunit/ CppUnit]&lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#66FF66&amp;quot; | &lt;br /&gt;
| Yes&lt;br /&gt;
| A C++ Unit Testing framework&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Soprano ==&lt;br /&gt;
&lt;br /&gt;
Soprano is a library for storing RDF data for the Nepomuk semantic desktop. &lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/soprano Soprano project page] for details.&lt;br /&gt;
&lt;br /&gt;
Soprano must be built '''BEFORE''' Akonadi.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:soprano.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/soprano.git&lt;br /&gt;
&lt;br /&gt;
== Akonadi ==&lt;br /&gt;
&lt;br /&gt;
Akonadi is a library for caching PIM data. &lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/akonadi Akonadi project page] for details.&lt;br /&gt;
&lt;br /&gt;
Akonadi must be built '''AFTER''' Soprano.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:akonadi.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/akonadi.git&lt;br /&gt;
&lt;br /&gt;
== Cagibi ==&lt;br /&gt;
&lt;br /&gt;
Cagibi is a cache/proxy daemon for SSDP, the discovery part of UPnP.&lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/cagibi Cagibi project page] for details.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:cagibi.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/cagibi.git&lt;br /&gt;
&lt;br /&gt;
== Qt Zeitgeist ==&lt;br /&gt;
&lt;br /&gt;
Qt Zeitgeist is a QT wrapper for the Zeitgeist logging program.&lt;br /&gt;
&lt;br /&gt;
Please see the [http://projects.kde.org/projects/kdesupport/libqtzeitgeist Qt Zeitgeist project page] for details.&lt;br /&gt;
&lt;br /&gt;
 Easy:  git clone kde:libqtzeitgeist.git&lt;br /&gt;
 Full:  git clone git://anongit.kde.org/libqtzeitgeist.git&lt;br /&gt;
&lt;br /&gt;
== Phonon ==&lt;br /&gt;
&lt;br /&gt;
Phonon is a sound system abstraction layer.  This is usually packaged with Qt,  but the Phonon version from Qt is not recent enough for KDE sound to work so you will need to build the required version yourself.&lt;br /&gt;
&lt;br /&gt;
Please see the [https://projects.kde.org/projects/kdesupport/phonon Phonon project page] for details.&lt;br /&gt;
&lt;br /&gt;
You need to install this Phonon in the same location as Phonon from Qt i.e. in $QTDIR and '''NOT''' in $KDEDIR.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you have set up the recommended KDE scripts, environment variables, and git configuration.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 git clone kde:phonon.git&lt;br /&gt;
 cd phonon&lt;br /&gt;
 cb&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$QTDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
       \ -DKDE4_BUILD_TESTS=TRUE&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
Note that make install may require root access.&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you are not using the recommended scripts and have properly set up your own environment.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 git clone git://anongit.kde.org/phonon.git&lt;br /&gt;
 cd &amp;lt;your build root directory, or the module source dir&amp;gt;&lt;br /&gt;
 mkdir &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cd &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$QTDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
       \ -DKDE4_BUILD_TESTS=TRUE&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
=== Backend ===&lt;br /&gt;
&lt;br /&gt;
Building the main Phonon module is sufficient for building KDE.  If you also want to play sound then you need to build a backend.  Choose a suitable backend from those available below:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-gstreamer.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-xine.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-directshow.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-mmf.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-quicktime.git&lt;br /&gt;
 git clone git://anongit.kde.org/phonon-waveout.git&lt;br /&gt;
&lt;br /&gt;
Note that DirectShow is for Windows only.&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
If you get an error like&lt;br /&gt;
&lt;br /&gt;
 designer: symbol lookup error: /path/to/kde/lib/kde4/plugins/phonon_backend/phonon_xine.so: &lt;br /&gt;
           undefined symbol: _ZN6Phonon12PulseSupport11getInstanceEv&lt;br /&gt;
&lt;br /&gt;
while running Qt Designer you need to:&lt;br /&gt;
&lt;br /&gt;
 rm $QTDIR/lib/libphonon.so.4&lt;br /&gt;
&lt;br /&gt;
== Prison ==&lt;br /&gt;
&lt;br /&gt;
Prison is a barcode library to enable optional barcode support in KDE Software.  It was introduced in the KDE 4.7 Release Cycle.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;25%&amp;quot; | '''Project Page'''&lt;br /&gt;
| width=&amp;quot;75%&amp;quot; | [http://projects.kde.org/projects/kdesupport/prison http://projects.kde.org/projects/kdesupport/prison]&lt;br /&gt;
|-&lt;br /&gt;
| '''Stable Version'''&lt;br /&gt;
| Unreleased&lt;br /&gt;
|-&lt;br /&gt;
| '''Required By'''&lt;br /&gt;
| No KDE Modules as yet&lt;br /&gt;
|-&lt;br /&gt;
| '''Easy Repository'''&lt;br /&gt;
| git clone kde:prison.git&lt;br /&gt;
|-&lt;br /&gt;
| '''Full Repository'''&lt;br /&gt;
| git clone git://anongit.kde.org/prison.git&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''KDE Software Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://projects.kde.org/projects/kdesupport/prison Prison]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#6ECFFF;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A Qt based barcode library&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ '''Prison Build Requirements'''&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | Requirement&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Stable Requires&lt;br /&gt;
! width=&amp;quot;15%&amp;quot; | Unstable Requires&lt;br /&gt;
! width=&amp;quot;10%&amp;quot; | Devel Pkgs?&lt;br /&gt;
! width=&amp;quot;40%&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| [http://fukuchi.org/works/qrencode/index.en.html QRencode]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#FF6E6E;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading and writing QR Code barcodes&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.libdmtx.org/ Dmtx]&lt;br /&gt;
| &lt;br /&gt;
| style=&amp;quot;background-color:#FF6E6E;&amp;quot; | Any&lt;br /&gt;
| Yes&lt;br /&gt;
| A library for reading and writing Data Matrix 2D barcodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== kdesupport svn module ==&lt;br /&gt;
&lt;br /&gt;
A number of kdesupport packages are still in svn:&lt;br /&gt;
&lt;br /&gt;
* oxygen-icons&lt;br /&gt;
* qimageblitz - for building kde-workspace&lt;br /&gt;
* taglib&lt;br /&gt;
* taglib-extras&lt;br /&gt;
* cpp2xml&lt;br /&gt;
* twine - for building kdebindings&lt;br /&gt;
* emerge - for building kde on windows&lt;br /&gt;
&lt;br /&gt;
These packages can be checked out and built together with a single recipe.&lt;br /&gt;
&lt;br /&gt;
Note that QCA lives in kdesupport svn but is not built by default.  It is recommended that you use your system QCA packages and only checkout the kdesupport svn version if you are going to develop QCA.&lt;br /&gt;
&lt;br /&gt;
=== Easy Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you have set up the recommended KDE scripts, environment variables, and git configuration.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd kdesupport&lt;br /&gt;
 kdebuild&lt;br /&gt;
&lt;br /&gt;
=== Full Recipe ===&lt;br /&gt;
&lt;br /&gt;
This recipe assumes you are not using the recommended scripts and have properly set up your own environment.&lt;br /&gt;
&lt;br /&gt;
 cd &amp;lt;your source root directory&amp;gt;&lt;br /&gt;
 svn checkout svn://anonsvn.kde.org/home/kde/trunk/kdesupport/&lt;br /&gt;
 cd &amp;lt;your build root directory, or the module source dir&amp;gt;&lt;br /&gt;
 mkdir &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cd &amp;lt;your module build dir&amp;gt;&lt;br /&gt;
 cmake &amp;lt;path to your module source dir&amp;gt;&lt;br /&gt;
       \ -DCMAKE_INSTALL_PREFIX=$KDEDIR &lt;br /&gt;
       \ -DCMAKE_BUILD_TYPE=debugfull&lt;br /&gt;
       \ -DKDE4_BUILD_TESTS=TRUE&lt;br /&gt;
 make &lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you get a message related to &lt;br /&gt;
   target libQtTest.so not found&lt;br /&gt;
you may need to recompile qt-kde. This time you should take out&lt;br /&gt;
   -nomake demos -nomake examples&lt;br /&gt;
from the configure command, so that Qt generates library QtTest.&lt;br /&gt;
&lt;br /&gt;
If you get&lt;br /&gt;
      CMake Error: Qt qmake not found!&lt;br /&gt;
Then:&lt;br /&gt;
      1) uncomment Qt section in .bashrc script (QTDIR, QT_PLUGINS_DIR,      &lt;br /&gt;
            PKG_CONFIG_PATH variable settings).&lt;br /&gt;
      2) source ~/.bashrc&lt;br /&gt;
      3) cd &amp;amp;&amp;amp; cd qt-kde&lt;br /&gt;
      4) make confclean&lt;br /&gt;
      5) repeat steps for installing Qt (from ./configure line).&lt;br /&gt;
      6) retry building kdesupport&lt;br /&gt;
&lt;br /&gt;
= Next Step =&lt;br /&gt;
&lt;br /&gt;
Once all the KDE Support requirements have been installed it is time to install the [[../KDE_Development_Platform|KDE Development Platform]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T17:26:40Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Remote Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
Your project may require changes to be reviewed before pushing to the central code repository.  All projects on git.kde.org automatically have a [[Development/Review_Board|Review Board]] group created for them which you can use for this purpose.  It is recommended that you use the [[Development/Review_Board#Using_post-review_to_post_changes_for_review|post-review script]] to automatically generate and upload the diff of your changes.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.  This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to master on the central repository.  You could resolve this by regularly pushing incomplete features to master, but this will lead to master becoming more unstable.  The proper solution is to create a Remote Feature Branch on the central repository where you can push your interim work for others to see and also push changes to.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
TODO Steps:&lt;br /&gt;
* Create the remote branch tracking master&lt;br /&gt;
  git push origin master:refs/heads/&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
  git fetch origin&lt;br /&gt;
* Create your local branch tracking the remote branch&lt;br /&gt;
  git branch --track &amp;lt;local-branch&amp;gt; origin/&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
  git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
* Do local dev and commits, rebase, push&lt;br /&gt;
* When to use Merges, when to Rebase?&lt;br /&gt;
* Once local commits are pushed you cannot rewrite them!&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T09:49:11Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Remote Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
Your project may require changes to be reviewed before pushing to the central code repository.  All projects on git.kde.org automatically have a [[Development/Review_Board|Review Board]] group created for them which you can use for this purpose.  It is recommended that you use the [[Development/Review_Board#Using_post-review_to_post_changes_for_review|post-review script]] to automatically generate and upload the diff of your changes.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.  This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to master on the central repository.  You could resolve this by regularly pushing incomplete features to master, but this will lead to master becoming more unstable.  The proper solution is to create a Remote Feature Branch on the central repository where you can push your interim work for others to see and also push changes to.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
TODO Steps:&lt;br /&gt;
* Create the remote branch tracking master&lt;br /&gt;
* Create your local branch tracking the remote branch&lt;br /&gt;
* Do local dev and commits, rebase, push&lt;br /&gt;
* When to use Merges, when to Rebase?&lt;br /&gt;
* Once local commits are pushed you cannot rewrite them!&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T09:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
Your project may require changes to be reviewed before pushing to the central code repository.  All projects on git.kde.org automatically have a [[Development/Review_Board|Review Board]] group created for them which you can use for this purpose.  It is recommended that you use the [[Development/Review_Board#Using_post-review_to_post_changes_for_review|post-review script]] to automatically generate and upload the diff of your changes.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.  This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to master on the central repository.  You could resolve this by regularly pushing incomplete features to master, but this will lead to master becoming more unstable.  The proper solution is to create a Remote Feature Branch on the central repository where you can push your interim work for others to see and also push changes.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T09:40:12Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Remote Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
Your project may require changes to be reviewed before pushing to the central code repository.  All projects on git.kde.org automatically have a [[Development/Review_Board|Review Board]] group created for them which you can use for this purpose.  It is recommended that you use the [[Development/Review_Board#Using_post-review_to_post_changes_for_review|post-review script]] to automatically generate and upload the diff of your changes.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.  This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to master on the central repository.  You could resolve this by regularly pushing incomplete features to master, but this will lead to master becoming more unstable.  The proper solution is to create a Remote Feature Branch on the central repository where you can push your interim work for others to see and also push changes.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-13T09:34:56Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code after doing the rebase, before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow#Local_Bug_Fixing|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to create a local kdelibs 4.6 stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your kdelibs example this would be:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then push them to the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T09:29:01Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Making Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
Your project may require changes to be reviewed before pushing to the central code repository.  All projects on git.kde.org automatically have a [[Development/Review_Board|Review Board]] group created for them which you can use for this purpose.  It is recommended that you use the [[Development/Review_Board#Using_post-review_to_post_changes_for_review|post-review script]] to automatically generate and upload the diff of your changes.&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to the central repository.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-13T09:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code after doing the rebase, before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to create a local kdelibs 4.6 stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your kdelibs example this would be:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then push them to the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-13T09:15:12Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code after doing the rebase, before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to create a kdelibs 4.6 stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-13T09:11:02Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Pushing Your Changes To The Central Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code after doing the rebase, before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-13T08:10:58Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Remote Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
The main disadvantage of local feature branch development is no-one else can see your code changes or help you until the finished feature is pushed to the central repository.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T21:51:21Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T21:50:59Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Remote Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
TODO: Finish this.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T21:42:53Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T21:42:29Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
One alternative is to have two separate clones using two separate build environments, but this wastes disk space and causes problems with keeping the separate clones in sync.&lt;br /&gt;
&lt;br /&gt;
A better alternative is to use the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for the stable and unstable branches using the same repository clone. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T21:02:05Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
In the [[Development/Git/Simple_Workflow#Local_Bug_Fixing|Simple Workflow bug fixing]] section we describe a simple way to perform bug fixes for both stable and unstable branches in the same repository clone.&lt;br /&gt;
&lt;br /&gt;
The basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T20:37:44Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Making Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
=== Deleting Local Branches ===&lt;br /&gt;
&lt;br /&gt;
Once you have finished with a local feature branch and pushed all your commits to the central repository you can delete the local branch if you no longer require it.&lt;br /&gt;
&lt;br /&gt;
First, you have to change to a different branch:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
&lt;br /&gt;
Then you can delete the feature branch:&lt;br /&gt;
&lt;br /&gt;
 git -d &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T19:57:56Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T19:56:56Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Making Changes ===&lt;br /&gt;
&lt;br /&gt;
You can now make [[Development/Git/Simple_Workflow#Making_Local_Changes_and_Commits|local changes and commits]], and [[Development/Git/Simple_Workflow#Pushing_Your_Changes_To_The_Central_Repository|push them to the central repository]] exactly as described in the [[Development/Git/Simple_Workflow|Simple Workflow]].&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T18:30:19Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
=== Create a Local Work Branch ===&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
This will initially appear as follows, with the * indicating your current working branch:&lt;br /&gt;
&lt;br /&gt;
 * master&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
This will initially look something like:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    remotes/origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
    remotes/origin/KDE/4.5&lt;br /&gt;
    remotes/origin/KDE/4.6&lt;br /&gt;
    remotes/origin/kdecore/klocale-win&lt;br /&gt;
    remotes/origin/kdeui/kdatetimeedit&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
 *  master&lt;br /&gt;
    my-new-branch&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now running &amp;lt;tt&amp;gt;git branch&amp;lt;/tt&amp;gt; will show:&lt;br /&gt;
&lt;br /&gt;
    master&lt;br /&gt;
 *  my-new-branch&lt;br /&gt;
&lt;br /&gt;
This sequence will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' a remote branch and is recommended for most work branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the central repository master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T17:38:32Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Feature Branch Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as unstaged and staged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T17:34:53Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Feature Branch Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as staged and unstaged changes, committing, rebasing and pushing.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T17:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Set-up */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as staged and unstaged changes.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning your Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-12T16:37:27Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Simple Feature Branch Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is the recommended KDE Git Workflow for smaller projects where  new features are developed in local and/or remote feature branches before being reviewed and merged back into the master branch.&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be used after initial use of the [[Development/Git/Simple_Workflow|Simple Workflow]].  It is assumed you have read and mastered the basic concepts as outlined in that Workflow, such as staged and unstaged changes.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow, in particular the Integration Branch Workflow, and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
See the [[Development/Git/Simple_Workflow#Set-up|Simple Workflow Set-up]] section for instructions on configuring Git and Cloning you Repository&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change to the new branch to work on it:&lt;br /&gt;
&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to develop a new feature called 'bar' based on the master branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, kdelibs includes the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs.&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T16:37:24Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Simple Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example to clone kdelibs:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kdelibs&lt;br /&gt;
 cd kdelibs&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T15:01:35Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Simple Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches, merging or any remote features, all feature development work will be in the local master branch (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]], in particular the [[Development/Git#Git_for_SVN_Users|Git for Subversion Users]] section.  More details on the various commands can be found on the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can push your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:53:26Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Changes and Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not push your changes to the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   src/kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       src/kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can [[Development/Git/Recipes#Interactive_Rebasing|also be modified]] before you finally do push the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference in a file between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to push all your local commits to the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature for the master unstable branch (aka trunk in subversion).  You will first make local code changes and commit them in your local repository before pushing them to the central code repository.&lt;br /&gt;
&lt;br /&gt;
=== Making Local Change Commits ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not merge your changes into the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset a staged file to be unstaged but without losing your changes:&lt;br /&gt;
&lt;br /&gt;
  git reset HEAD &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged file to the currently committed version and irretrievably throw away your changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can also be modified before you finally do merge the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staged state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Pushing Your Changes To The Central Repository ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to merge all your local commits into the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will update the underlying master code and apply your commits on the top of the latest version of the central repository, this is known as a rebase.  Normally the rebase should apply cleanly, but sometimes there will be a conflict which you will need to resolve before you can complete applying your commits.  There will be instructions given by git on how to complete the commit if required [TODO: get a copy of the output text].&lt;br /&gt;
&lt;br /&gt;
Note that you cannot rebase if you have uncommitted changes.  If you need to rebase but have changes that you don't want to commit, then you will need to [[Development/Git/Recipes#Stashing_Changes|stash the changes]].&lt;br /&gt;
&lt;br /&gt;
Depending on how much the underlying master code has changed you may want to rebuild and test the code before doing a final rebase.  It is recommended to do regular rebase's between commits to keep the possibility of conflicts to a minimum.&lt;br /&gt;
&lt;br /&gt;
Once your local commits have been cleanly reapplied you can push your changes to the central repository:&lt;br /&gt;
&lt;br /&gt;
  git push origin master:master&lt;br /&gt;
&lt;br /&gt;
Git will report if the push was successful or explain why it failed.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:11:51Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Basic Actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This section documents the basic workflow for developing a new feature in the master unstable branch (aka trunk in subversion).&lt;br /&gt;
&lt;br /&gt;
=== Making and Committing Changes ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not merge your changes into the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged or staged file to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset all unstaged or staged files to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can also be modified before you finally do merge the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to merge all your local commits into the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Feature Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making and Committing Changes ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not merge your changes into the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged or staged file to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset all unstaged or staged files to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can also be modified before you finally do merge the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to merge all your local commits into the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T14:10:24Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Basic Actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making and Committing Changes ===&lt;br /&gt;
&lt;br /&gt;
Changing and building code itself is no different from when using subversion, but how changed files are managed and committed is very different, as are the names and commands used.  There are two key differences:&lt;br /&gt;
* Locally modified files can have different states that determine whether they get committed or not.&lt;br /&gt;
* Committing code is only local, it does not merge your changes into the central repository which requires an extra step.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged or staged file to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset all unstaged or staged files to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.  This local commit history can also be modified before you finally do merge the changes.&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
When you are ready to merge all your local commits into the central repository, you first need to update to the latest version of the master code in the central repository:&lt;br /&gt;
&lt;br /&gt;
  git pull --rebase&lt;br /&gt;
&lt;br /&gt;
This will&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T13:42:13Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Committing Your Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
Files in a git repository can be in various states:&lt;br /&gt;
* Untracked: Files in your local repository directory that Git is not tracking changes to and are not in the central repository.&lt;br /&gt;
* Tracked: Files that git tracks changes to.&lt;br /&gt;
* Unstaged: Tracked files that have had modifications to them but have not yet been staged or committed.&lt;br /&gt;
* Staged: Tracked files that have had modifications made to them and have been marked to be included in the next commit&lt;br /&gt;
* Committed: Files that git is tracking and that have been included in a local commit that may or may not be included in the central repository.&lt;br /&gt;
&lt;br /&gt;
Note that different versions of a file can be in the Untracked and Tracked states at the same time.&lt;br /&gt;
&lt;br /&gt;
This difference between staged and unstaged changes allows you to choose what changes you want in each commit.&lt;br /&gt;
&lt;br /&gt;
To see what the current status of your local repository is:&lt;br /&gt;
&lt;br /&gt;
  git status&lt;br /&gt;
&lt;br /&gt;
This will show you the status as follows;&lt;br /&gt;
&lt;br /&gt;
  # On branch master&lt;br /&gt;
  # Your branch is ahead of 'origin/master' by 1 commit.&lt;br /&gt;
  #&lt;br /&gt;
  # Changes to be committed:&lt;br /&gt;
  #   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kstagedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Changed but not updated:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
  #   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
  #&lt;br /&gt;
  #       modified:   kchangedfile.h&lt;br /&gt;
  #&lt;br /&gt;
  # Untracked files:&lt;br /&gt;
  #   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
  #&lt;br /&gt;
  #       kuntrackedfile.txt&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset an unstaged or staged file to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git checkout &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To reset all unstaged or staged file to the currently committed version and irretrievably throw away you current changes:&lt;br /&gt;
&lt;br /&gt;
  git&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging state into a new commit:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-12T13:13:38Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Clone your repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the [https://projects.kde.org/projects projects.kde.org] Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T16:59:34Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Seeing What You Changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see a list of what files have been changed but not yet committed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T16:49:26Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Basic Actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see what files have been changed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T16:18:10Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Basic Actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see what files have been changed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T15:25:56Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Committing Your Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see what files have been changed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can automatically add all tracked files that have been changed into staging and commit all the staged files in one command:&lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T14:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Committing Your Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see what files have been changed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
The git commit command differs from the svn commit command in only creating a commit in your local clone of the repository, it does not merge the changes into the central repository.  This allows you to queue up a series of small changes before merging them into the central repository.&lt;br /&gt;
&lt;br /&gt;
To add a changed file to the staging area, or to add a new file to be tracked by the repository:&lt;br /&gt;
&lt;br /&gt;
  git add &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a file from the repository and add the deletion to the staging area:&lt;br /&gt;
&lt;br /&gt;
  git rm &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The git commit command adds all files in the staging area:&lt;br /&gt;
&lt;br /&gt;
  git commit&lt;br /&gt;
&lt;br /&gt;
If you have only changed tracked files then you can use the quick form of the &lt;br /&gt;
&lt;br /&gt;
  git commit -a&lt;br /&gt;
&lt;br /&gt;
This will automatically add all tracked files that have been changed into staging and then commit all the staged files.&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T14:29:24Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Seeing What You Changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
To see what files have been changed:&lt;br /&gt;
&lt;br /&gt;
 git status&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been made but not yet staged:&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see what code changes have been staged but not committed:&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see all the commits made:&lt;br /&gt;
&lt;br /&gt;
 git log&lt;br /&gt;
&lt;br /&gt;
To see what changes were made in a commit:&lt;br /&gt;
&lt;br /&gt;
 git show &amp;lt;sha5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Git diff, log and show commands have many options for changing what is shown.  In particular diff can show the difference between any two commits.&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T14:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any detail.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable which may cause a lot of rebuilding.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
First, find out the name of the stable branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch -r&lt;br /&gt;
&lt;br /&gt;
This will list all the branches on the central repository, for example kdelibs includes the following branches:&lt;br /&gt;
&lt;br /&gt;
  origin/HEAD -&amp;gt; origin/master&lt;br /&gt;
  origin/KDE/4.5&lt;br /&gt;
  origin/KDE/4.6&lt;br /&gt;
  origin/kdecore/klocale-win&lt;br /&gt;
  origin/kdeui/kdatetimeedit&lt;br /&gt;
  origin/master&lt;br /&gt;
&lt;br /&gt;
Here origin/KDE/4.6 is the 4.6 release of kdelibs which we will use for this example.&lt;br /&gt;
&lt;br /&gt;
Next, create a local branch pointing to the stable release branch you want to bug fix:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
If you have previously created the stable branch and want to do a new bug fix, then simply check it out again and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Now make your required changes to the code, build and test.  Once done commit the code changes to your local repository, remembering to include the BUG: and FIXED-IN: keywords in the commit message:&lt;br /&gt;
&lt;br /&gt;
 git commit -a&lt;br /&gt;
&lt;br /&gt;
Make a note of the sha5 of the commit as you will need it later to copy the commit to the unstable master branch.&lt;br /&gt;
&lt;br /&gt;
Now you can merge your changes into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6    //TODO or use git merge???&lt;br /&gt;
&lt;br /&gt;
The next step is to apply the bug fix to the unstable master branch.  First check the master branch back out and update it:&lt;br /&gt;
&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
Next, Git makes it easy to apply the existing bug fix from the stable branch by using the cherry-pick command:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will allow you to edit the commit message as required before the change is committed.  If the patch does not apply cleanly a message will appear and the changes will not be committed.  You will then have to edit the changes and finish the commit manually.&lt;br /&gt;
&lt;br /&gt;
Once cleanly applied and committed you can build and test the change, then merge them into the central code repository:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master    //TODO or use git merge???&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T13:40:52Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any depth.  If possible it is recommended you wait until you are familiar with using the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable.  A more efficient method is detailed in the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track stable4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout stable4.6&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 &amp;lt;make note of sha5 of commit&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin stable4.6:KDE/4.6&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T13:36:39Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Clone your repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
 cd &amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
 cd kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any depth.  If possible it is recommended you wait until you are familiar with using the [[Development/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable.  A more efficient method is detailed in the [[Development/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track stable4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout stable4.6&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 &amp;lt;make note of sha5 of commit&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin stable4.6:KDE/4.6&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T13:35:03Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move on to the [[Development/Git/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
In particular this workflow will not use git branches or any remote features, all feature work will be in the local master (the Git name for trunk).&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org code repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow all the instructions on the [[Development/Git/Configuration|KDE Git Configuration]] page, the instructions given below assume you are using the standard configuration.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your central code repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow or intermittent internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Making changes ===&lt;br /&gt;
&lt;br /&gt;
Changing code is no different from when using subversion.&lt;br /&gt;
&lt;br /&gt;
=== Seeing What You Changed ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Committing Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Merging Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
If your bug fix is only for unstable master then no special actions are required, just follow the same steps as the feature development workflow above.&lt;br /&gt;
&lt;br /&gt;
If your bug fix is for a stable branch then this cannot be done without using git branches.  The steps required will be given below but not explained in any depth.  If possible it is recommended you wait until you are familiar with using the [[Development/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
The steps detailed below are very inefficient as they use the same build tree and environment for unstable and stable.  A more efficient method is detailed in the [[Development/Feature_Branch_Workflow|Feature Branch Workflow]].&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track stable4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout stable4.6&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 &amp;lt;make note of sha5 of commit&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin stable4.6:KDE/4.6&lt;br /&gt;
 git checkout master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin master:master&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Feature_Branch_Workflow</id>
		<title>Development/Git/Feature Branch Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Feature_Branch_Workflow"/>
				<updated>2011-06-11T13:05:31Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: Created page with 'THIS IS A DRAFT, DO NOT USE!  = Simple Feature Branch Workflow =  This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;THIS IS A DRAFT, DO NOT USE!&lt;br /&gt;
&lt;br /&gt;
= Simple Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T13:05:00Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move onto the Simple Feature Branch Workflow.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-11T13:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
= Simple Workflow =&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first week or two of using Git with KDE while you become familiar with the basic Git commands.  Once comfortable with the basic commands you should then move onto the Simple Feature Branch Workflow.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
More detailed information can be found on the main [[Development/Git|KDE Git page]].&lt;br /&gt;
&lt;br /&gt;
= Simple Feature Branch Workflow =&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Review_Board</id>
		<title>Development/Review Board</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Review_Board"/>
				<updated>2011-06-10T18:32:22Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Using post-review to post changes for review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDE Review Board =&lt;br /&gt;
&lt;br /&gt;
KDE currently uses the [http://www.reviewboard.org/ Review Board] software for performing reviews on code changes.&lt;br /&gt;
&lt;br /&gt;
There are separate versions of Review Board for use with Git and Subversion:&lt;br /&gt;
* [http://git.reviewboard.kde.org KDE Git Review Board]&lt;br /&gt;
* [http://svn.reviewboard.kde.org KDE Subversion Review Board]&lt;br /&gt;
&lt;br /&gt;
Note that http://reviewboard.kde.org/ redirects to the Git version.&lt;br /&gt;
&lt;br /&gt;
== Using Review Board and post-review with Git ==&lt;br /&gt;
&lt;br /&gt;
Every Git Project repository has its own entry on the KDE Git Review Board.&lt;br /&gt;
&lt;br /&gt;
=== Creating your changeset ===&lt;br /&gt;
&lt;br /&gt;
To create your changeset, you probably want to work in a separate branch - or even in your clone. This is actually suggested and the proper way to do changesets in Git. You can create any number of commits, amend them, and do whatever you want to do - it won't affect the next steps, as you will submit the whole branch for review.&lt;br /&gt;
&lt;br /&gt;
Before proceeding it is good practice to rebase your branch onto the branch you want to target for the merge. So, supposing you want to target &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, make sure it is up-to-date with the remote and then run, and want to publish a review for a local branch:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
If you want to post a review for merging a non local branch, you might want to run the following:&lt;br /&gt;
&lt;br /&gt;
 git merge master&lt;br /&gt;
&lt;br /&gt;
=== Using post-review to post changes for review ===&lt;br /&gt;
&lt;br /&gt;
Once you are done with the above, it is time to post the changes to ReviewBoard. The easiest and most comfortable way to do that is &amp;lt;tt&amp;gt;[http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ post-review]&amp;lt;/tt&amp;gt;, a handy command line tool which takes care of creating review requests for you. This is normally in a package called RBTools (openSuse has a 1-click package in the [http://software.opensuse.org/search?q=rbtools devel:tools repository])&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
The following has to be done only once to make your local clone fit for use with &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First of all, you have to tell it about the ReviewBoard server. If your project does not ship with a &amp;lt;tt&amp;gt;.reviewboardrc&amp;lt;/tt&amp;gt; file (encourage the project manager to add one!), the first thing you have to run is:&lt;br /&gt;
&lt;br /&gt;
 git config reviewboard.url https://git.reviewboard.kde.org&lt;br /&gt;
&lt;br /&gt;
ReviewBoard currently only knows the project repositories by their git:// URLs, making it necessary to have a remote using the git:// URL in your clone. If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is already using the git:// URL, you are all set. If not you need to add another remote now. &lt;br /&gt;
&lt;br /&gt;
Let's suppose you are looking to have some changes to [https://projects.kde.org/projects/extragear/multimedia/amarok Amarok] reviewed, and the URL of your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is &amp;lt;tt&amp;gt;git@git.kde.org:amarok&amp;lt;/tt&amp;gt;. To add another remote using the git:// URL you might run:&lt;br /&gt;
&lt;br /&gt;
 git remote add anonupstream git://anongit.kde.org/amarok&lt;br /&gt;
 git fetch anonupstream&lt;br /&gt;
&lt;br /&gt;
If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote was already using the git:// url, substitute &amp;lt;tt&amp;gt;anonupstream&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; throughout the rest of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==== Creating the review request ====&lt;br /&gt;
&lt;br /&gt;
You are now ready to create the review request. The &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; command should look something like this:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master&lt;br /&gt;
&lt;br /&gt;
This command tells &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; that your branch is based upon &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, and it is set to track the remote branch &amp;lt;tt&amp;gt;anonupstream/master&amp;lt;/tt&amp;gt;. You can also give &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; some more arguments to avoid using the web interface later - have a look at the [http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ user manual] for more on that.&lt;br /&gt;
&lt;br /&gt;
After the command has been run a web address will be shown in the terminal, pointing at your review request.&lt;br /&gt;
&lt;br /&gt;
==== Updating a review request ====&lt;br /&gt;
&lt;br /&gt;
If you need to update an existing review request you can invoke &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; with an additional &amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt; argument, which should be the numeric id of the review request you want to update. Supposing you want to update review request 54, you would run:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master -r 54&lt;br /&gt;
&lt;br /&gt;
==== Creating a ReviewBoard-compatible diff ====&lt;br /&gt;
&lt;br /&gt;
In some rare cases you simply want to generate a diff and submit it to ReviewBoard later. You can do that by running:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master -n &amp;gt; your-patch.patch&lt;br /&gt;
&lt;br /&gt;
=== Closing a review request ===&lt;br /&gt;
&lt;br /&gt;
To close a review request, you can either use the ReviewBoard web interface or more conveniently, right in a commit. This is done by using the REVIEW keyword followed by the review ID you want to close. For example, to close review 54, you would put&lt;br /&gt;
&lt;br /&gt;
 REVIEW: 54&lt;br /&gt;
&lt;br /&gt;
in your commit. A message will also be posted to ReviewBoard indicating the commit SHA1 that closed the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Review Board With Subversion ==&lt;br /&gt;
&lt;br /&gt;
Not all KDE Subversion projects use Review Board so first you need to check if the project you've created the patch for is actually using reviewboard. For this, go to the [http://svn.reviewboard.kde.org/groups/ groups section] and see if the project's group is listed there. If it is listed there, you should use the reviewboard, otherwise send the patch by other means.&lt;br /&gt;
&lt;br /&gt;
For sending a patch, you first need to register. Then simply click ''[http://svn.reviewboard.kde.org/r/new/ New Review Request]'' and fill out the form. The most important parts of the form are:&lt;br /&gt;
&lt;br /&gt;
* '''The actual patch'''. You need to upload the patch you've created earlier here&lt;br /&gt;
* '''The SVN base path'''. This is needed for the inline patch display to work. This can be a bit tricky, if you are unfamiliar with KDE's SVN layout, check [http://websvn.kde.org WebSVN]. For example, if you're ''svn diff'ing'' from &amp;lt;tt&amp;gt;/path/to/your/copy/of/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;, the base path should be &amp;lt;tt&amp;gt;/trunk/KDE/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;. If you still don't know the correct base path, ask a developer on IRC. You can also edit the review request later.&lt;br /&gt;
* '''A summary of the patch'''. This should be short, it will show up as subject of the notification emails.&lt;br /&gt;
* '''A description of the patch'''. This can be longer.&lt;br /&gt;
* '''The group(s)'''. Make sure you enter the correct group '''ID''' here, as seen earlier on the [http://reviewboard.kde.org/groups/ groups page].&lt;br /&gt;
&lt;br /&gt;
After you completed the form, a notification mail will be sent to the developers and they will answer you.&lt;br /&gt;
&lt;br /&gt;
/!\ You need to use svn diff in english, if your system is not english, please do LC_ALL=C svn diff&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Review_Board</id>
		<title>Development/Review Board</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Review_Board"/>
				<updated>2011-06-10T18:31:58Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Review Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDE Review Board =&lt;br /&gt;
&lt;br /&gt;
KDE currently uses the [http://www.reviewboard.org/ Review Board] software for performing reviews on code changes.&lt;br /&gt;
&lt;br /&gt;
There are separate versions of Review Board for use with Git and Subversion:&lt;br /&gt;
* [http://git.reviewboard.kde.org KDE Git Review Board]&lt;br /&gt;
* [http://svn.reviewboard.kde.org KDE Subversion Review Board]&lt;br /&gt;
&lt;br /&gt;
Note that http://reviewboard.kde.org/ redirects to the Git version.&lt;br /&gt;
&lt;br /&gt;
== Using Review Board and post-review with Git ==&lt;br /&gt;
&lt;br /&gt;
Every Git Project repository has its own entry on the KDE Git Review Board.&lt;br /&gt;
&lt;br /&gt;
=== Creating your changeset ===&lt;br /&gt;
&lt;br /&gt;
To create your changeset, you probably want to work in a separate branch - or even in your clone. This is actually suggested and the proper way to do changesets in Git. You can create any number of commits, amend them, and do whatever you want to do - it won't affect the next steps, as you will submit the whole branch for review.&lt;br /&gt;
&lt;br /&gt;
Before proceeding it is good practice to rebase your branch onto the branch you want to target for the merge. So, supposing you want to target &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, make sure it is up-to-date with the remote and then run, and want to publish a review for a local branch:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
If you want to post a review for merging a non local branch, you might want to run the following:&lt;br /&gt;
&lt;br /&gt;
 git merge master&lt;br /&gt;
&lt;br /&gt;
=== Using post-review to post changes for review ===&lt;br /&gt;
&lt;br /&gt;
Once you are done with the above, it is time to post the changes to ReviewBoard. The easiest and most comfortable way to do that is &amp;lt;tt&amp;gt;[http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ post-review]&amp;lt;/tt&amp;gt;, a handy command line tool which takes care of creating review requests for you. This is normally in a package called RBTools (openSuse has a 1-click package in the [[http://software.opensuse.org/search?q=rbtools devel:tools repository]])&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
The following has to be done only once to make your local clone fit for use with &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First of all, you have to tell it about the ReviewBoard server. If your project does not ship with a &amp;lt;tt&amp;gt;.reviewboardrc&amp;lt;/tt&amp;gt; file (encourage the project manager to add one!), the first thing you have to run is:&lt;br /&gt;
&lt;br /&gt;
 git config reviewboard.url https://git.reviewboard.kde.org&lt;br /&gt;
&lt;br /&gt;
ReviewBoard currently only knows the project repositories by their git:// URLs, making it necessary to have a remote using the git:// URL in your clone. If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is already using the git:// URL, you are all set. If not you need to add another remote now. &lt;br /&gt;
&lt;br /&gt;
Let's suppose you are looking to have some changes to [https://projects.kde.org/projects/extragear/multimedia/amarok Amarok] reviewed, and the URL of your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is &amp;lt;tt&amp;gt;git@git.kde.org:amarok&amp;lt;/tt&amp;gt;. To add another remote using the git:// URL you might run:&lt;br /&gt;
&lt;br /&gt;
 git remote add anonupstream git://anongit.kde.org/amarok&lt;br /&gt;
 git fetch anonupstream&lt;br /&gt;
&lt;br /&gt;
If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote was already using the git:// url, substitute &amp;lt;tt&amp;gt;anonupstream&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; throughout the rest of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==== Creating the review request ====&lt;br /&gt;
&lt;br /&gt;
You are now ready to create the review request. The &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; command should look something like this:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master&lt;br /&gt;
&lt;br /&gt;
This command tells &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; that your branch is based upon &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, and it is set to track the remote branch &amp;lt;tt&amp;gt;anonupstream/master&amp;lt;/tt&amp;gt;. You can also give &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; some more arguments to avoid using the web interface later - have a look at the [http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ user manual] for more on that.&lt;br /&gt;
&lt;br /&gt;
After the command has been run a web address will be shown in the terminal, pointing at your review request.&lt;br /&gt;
&lt;br /&gt;
==== Updating a review request ====&lt;br /&gt;
&lt;br /&gt;
If you need to update an existing review request you can invoke &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; with an additional &amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt; argument, which should be the numeric id of the review request you want to update. Supposing you want to update review request 54, you would run:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master -r 54&lt;br /&gt;
&lt;br /&gt;
==== Creating a ReviewBoard-compatible diff ====&lt;br /&gt;
&lt;br /&gt;
In some rare cases you simply want to generate a diff and submit it to ReviewBoard later. You can do that by running:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master -n &amp;gt; your-patch.patch&lt;br /&gt;
&lt;br /&gt;
=== Closing a review request ===&lt;br /&gt;
&lt;br /&gt;
To close a review request, you can either use the ReviewBoard web interface or more conveniently, right in a commit. This is done by using the REVIEW keyword followed by the review ID you want to close. For example, to close review 54, you would put&lt;br /&gt;
&lt;br /&gt;
 REVIEW: 54&lt;br /&gt;
&lt;br /&gt;
in your commit. A message will also be posted to ReviewBoard indicating the commit SHA1 that closed the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Review Board With Subversion ==&lt;br /&gt;
&lt;br /&gt;
Not all KDE Subversion projects use Review Board so first you need to check if the project you've created the patch for is actually using reviewboard. For this, go to the [http://svn.reviewboard.kde.org/groups/ groups section] and see if the project's group is listed there. If it is listed there, you should use the reviewboard, otherwise send the patch by other means.&lt;br /&gt;
&lt;br /&gt;
For sending a patch, you first need to register. Then simply click ''[http://svn.reviewboard.kde.org/r/new/ New Review Request]'' and fill out the form. The most important parts of the form are:&lt;br /&gt;
&lt;br /&gt;
* '''The actual patch'''. You need to upload the patch you've created earlier here&lt;br /&gt;
* '''The SVN base path'''. This is needed for the inline patch display to work. This can be a bit tricky, if you are unfamiliar with KDE's SVN layout, check [http://websvn.kde.org WebSVN]. For example, if you're ''svn diff'ing'' from &amp;lt;tt&amp;gt;/path/to/your/copy/of/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;, the base path should be &amp;lt;tt&amp;gt;/trunk/KDE/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;. If you still don't know the correct base path, ask a developer on IRC. You can also edit the review request later.&lt;br /&gt;
* '''A summary of the patch'''. This should be short, it will show up as subject of the notification emails.&lt;br /&gt;
* '''A description of the patch'''. This can be longer.&lt;br /&gt;
* '''The group(s)'''. Make sure you enter the correct group '''ID''' here, as seen earlier on the [http://reviewboard.kde.org/groups/ groups page].&lt;br /&gt;
&lt;br /&gt;
After you completed the form, a notification mail will be sent to the developers and they will answer you.&lt;br /&gt;
&lt;br /&gt;
/!\ You need to use svn diff in english, if your system is not english, please do LC_ALL=C svn diff&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Review_Board</id>
		<title>Development/Review Board</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Review_Board"/>
				<updated>2011-06-10T18:28:23Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Using post-review to post changes for review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= KDE Review Board =&lt;br /&gt;
&lt;br /&gt;
KDE currently uses the [http://www.reviewboard.org/ Review Board] software for performing reviews on code changes.&lt;br /&gt;
&lt;br /&gt;
There are separate versions of Review Board for use with Git and Subversion:&lt;br /&gt;
* [http://git.reviewboard.kde.org KDE Git Review Board]&lt;br /&gt;
* [http://svn.reviewboard.kde.org KDE Subversion Review Board]&lt;br /&gt;
&lt;br /&gt;
Note that currently http://reviewboard.kde.org/ defaults to the Subversion version but this is scheduled to change so it is recommended to always use the git or svn prefix to be sure.&lt;br /&gt;
&lt;br /&gt;
== Using ReviewBoard and post-review with Git ==&lt;br /&gt;
&lt;br /&gt;
Every Git Project repository has its own entry on the KDE Git Review Board.&lt;br /&gt;
&lt;br /&gt;
=== Creating your changeset ===&lt;br /&gt;
&lt;br /&gt;
To create your changeset, you probably want to work in a separate branch - or even in your clone. This is actually suggested and the proper way to do changesets in Git. You can create any number of commits, amend them, and do whatever you want to do - it won't affect the next steps, as you will submit the whole branch for review.&lt;br /&gt;
&lt;br /&gt;
Before proceeding it is good practice to rebase your branch onto the branch you want to target for the merge. So, supposing you want to target &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, make sure it is up-to-date with the remote and then run, and want to publish a review for a local branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase master&lt;br /&gt;
&lt;br /&gt;
If you want to post a review for merging a non local branch, you might want to run the following:&lt;br /&gt;
&lt;br /&gt;
 git merge master&lt;br /&gt;
&lt;br /&gt;
=== Using post-review to post changes for review ===&lt;br /&gt;
&lt;br /&gt;
Once you are done with the above, it is time to post the changes to ReviewBoard. The easiest and most comfortable way to do that is &amp;lt;tt&amp;gt;[http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ post-review]&amp;lt;/tt&amp;gt;, a handy command line tool which takes care of creating review requests for you. This is normally in a package called RBTools (openSuse has a 1-click package in the [[http://software.opensuse.org/search?q=rbtools devel:tools repository]])&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
The following has to be done only once to make your local clone fit for use with &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
First of all, you have to tell it about the ReviewBoard server. If your project does not ship with a &amp;lt;tt&amp;gt;.reviewboardrc&amp;lt;/tt&amp;gt; file (encourage the project manager to add one!), the first thing you have to run is:&lt;br /&gt;
&lt;br /&gt;
 git config reviewboard.url https://git.reviewboard.kde.org&lt;br /&gt;
&lt;br /&gt;
ReviewBoard currently only knows the project repositories by their git:// URLs, making it necessary to have a remote using the git:// URL in your clone. If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is already using the git:// URL, you are all set. If not you need to add another remote now. &lt;br /&gt;
&lt;br /&gt;
Let's suppose you are looking to have some changes to [https://projects.kde.org/projects/extragear/multimedia/amarok Amarok] reviewed, and the URL of your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote is &amp;lt;tt&amp;gt;git@git.kde.org:amarok&amp;lt;/tt&amp;gt;. To add another remote using the git:// URL you might run:&lt;br /&gt;
&lt;br /&gt;
 git remote add anonupstream git://anongit.kde.org/amarok&lt;br /&gt;
 git fetch anonupstream&lt;br /&gt;
&lt;br /&gt;
If your &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; remote was already using the git:// url, substitute &amp;lt;tt&amp;gt;anonupstream&amp;lt;/tt&amp;gt; with &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; throughout the rest of this tutorial.&lt;br /&gt;
&lt;br /&gt;
==== Creating the review request ====&lt;br /&gt;
&lt;br /&gt;
You are now ready to create the review request. The &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; command should look something like this:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master&lt;br /&gt;
&lt;br /&gt;
This command tells &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; that your branch is based upon &amp;lt;tt&amp;gt;master&amp;lt;/tt&amp;gt;, and it is set to track the remote branch &amp;lt;tt&amp;gt;anonupstream/master&amp;lt;/tt&amp;gt;. You can also give &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; some more arguments to avoid using the web interface later - have a look at the [http://www.reviewboard.org/docs/manual/dev/users/tools/post-review/ user manual] for more on that.&lt;br /&gt;
&lt;br /&gt;
After the command has been run a web address will be shown in the terminal, pointing at your review request.&lt;br /&gt;
&lt;br /&gt;
==== Updating a review request ====&lt;br /&gt;
&lt;br /&gt;
If you need to update an existing review request you can invoke &amp;lt;tt&amp;gt;post-review&amp;lt;/tt&amp;gt; with an additional &amp;lt;tt&amp;gt;-r&amp;lt;/tt&amp;gt; argument, which should be the numeric id of the review request you want to update. Supposing you want to update review request 54, you would run:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master --tracking-branch=anonupstream/master -r 54&lt;br /&gt;
&lt;br /&gt;
==== Creating a ReviewBoard-compatible diff ====&lt;br /&gt;
&lt;br /&gt;
In some rare cases you simply want to generate a diff and submit it to ReviewBoard later. You can do that by running:&lt;br /&gt;
&lt;br /&gt;
 post-review --parent=master -n &amp;gt; your-patch.patch&lt;br /&gt;
&lt;br /&gt;
=== Closing a review request ===&lt;br /&gt;
&lt;br /&gt;
To close a review request, you can either use the ReviewBoard web interface or more conveniently, right in a commit. This is done by using the REVIEW keyword followed by the review ID you want to close. For example, to close review 54, you would put&lt;br /&gt;
&lt;br /&gt;
 REVIEW: 54&lt;br /&gt;
&lt;br /&gt;
in your commit. A message will also be posted to ReviewBoard indicating the commit SHA1 that closed the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using Review Board With Subversion ==&lt;br /&gt;
&lt;br /&gt;
Not all KDE Subversion projects use Review Board so first you need to check if the project you've created the patch for is actually using reviewboard. For this, go to the [http://svn.reviewboard.kde.org/groups/ groups section] and see if the project's group is listed there. If it is listed there, you should use the reviewboard, otherwise send the patch by other means.&lt;br /&gt;
&lt;br /&gt;
For sending a patch, you first need to register. Then simply click ''[http://svn.reviewboard.kde.org/r/new/ New Review Request]'' and fill out the form. The most important parts of the form are:&lt;br /&gt;
&lt;br /&gt;
* '''The actual patch'''. You need to upload the patch you've created earlier here&lt;br /&gt;
* '''The SVN base path'''. This is needed for the inline patch display to work. This can be a bit tricky, if you are unfamiliar with KDE's SVN layout, check [http://websvn.kde.org WebSVN]. For example, if you're ''svn diff'ing'' from &amp;lt;tt&amp;gt;/path/to/your/copy/of/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;, the base path should be &amp;lt;tt&amp;gt;/trunk/KDE/kdelibs/cmake/modules&amp;lt;/tt&amp;gt;. If you still don't know the correct base path, ask a developer on IRC. You can also edit the review request later.&lt;br /&gt;
* '''A summary of the patch'''. This should be short, it will show up as subject of the notification emails.&lt;br /&gt;
* '''A description of the patch'''. This can be longer.&lt;br /&gt;
* '''The group(s)'''. Make sure you enter the correct group '''ID''' here, as seen earlier on the [http://reviewboard.kde.org/groups/ groups page].&lt;br /&gt;
&lt;br /&gt;
After you completed the form, a notification mail will be sent to the developers and they will answer you.&lt;br /&gt;
&lt;br /&gt;
/!\ You need to use svn diff in english, if your system is not english, please do LC_ALL=C svn diff&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-06T19:17:56Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
== Simple Workflow ==&lt;br /&gt;
&lt;br /&gt;
This workflow is designed to be as close as possible to the KDE SVN Workflow.  It is only recommended to be used for the first few weeks of using Git with KDE while you learn how Git works.  Once comfortable with the basic commands you should then move onto the Simple Feature Branch Workflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple Feature Branch Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Simple KDE Git Workflow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DANGER WILL ROBINSON!!!  THIS IS AN INCOMPLETE DRAFT!!!&lt;br /&gt;
&lt;br /&gt;
== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:53:22Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Clone your repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to push the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:50:29Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to add the bug fix to both the stable and unstable branch in the central repository.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fix-2.0&lt;br /&gt;
 &amp;lt;make changes, build, test&amp;gt;&lt;br /&gt;
 git commit -a&lt;br /&gt;
 git push origin bug-fix-2.0:release/2.0&lt;br /&gt;
 git branch --track bug-fix-master origin/master&lt;br /&gt;
 git checkout bug-fix-master&lt;br /&gt;
 git cherry-pick -x -e &amp;lt;sha5 of stable commit&amp;gt;&lt;br /&gt;
 &amp;lt;build, test&amp;gt;&lt;br /&gt;
 git push origin bug-fix-master:master&lt;br /&gt;
&lt;br /&gt;
=== Advanced Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
the basic workflow works fine except switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem, but in most cases this constant rebuilding will be a waste of time.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:36:10Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Clone your repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment#Source_Path]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to add the bug fix to the stable branch as well.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fixes&lt;br /&gt;
&lt;br /&gt;
However, switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem in this case you would just use the feature workflow.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T13:16:36Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
In Git, stable branches are just regular branches that have special meaning to a project and a possibly a special naming scheme to distinguish them.  For example, the KFoo app may have the following branches on the central repository:&lt;br /&gt;
&lt;br /&gt;
 origin/master&lt;br /&gt;
 origin/feature/hot-new-stuff&lt;br /&gt;
 origin/feature/cool-newer-stuff&lt;br /&gt;
 origin/release/1.0&lt;br /&gt;
 origin/release/1.1&lt;br /&gt;
 origin/release/2.0&lt;br /&gt;
&lt;br /&gt;
Making bug fixes to stable branches is thus fundamentally the same as working on a feature branch, but with the added step of needing to add the bug fix to the stable branch as well.&lt;br /&gt;
&lt;br /&gt;
Two workflow's are described here, a basic workflow for small apps or where bug-fixes are infrequent, and an advanced workflow for larger apps or more frequent bug-fixes.&lt;br /&gt;
&lt;br /&gt;
=== Basic Bug Fix Workflow ===&lt;br /&gt;
&lt;br /&gt;
To make bug fixes on the 2.0 release you could simply checkout a local copy of the origin/release/2.0 branch and make you bug fixes there:&lt;br /&gt;
&lt;br /&gt;
 git branch --track bug-fix-2.0 origin/release/2.0&lt;br /&gt;
 git checkout bug-fixes&lt;br /&gt;
&lt;br /&gt;
However, switching between unstable and stable branches inside a single Git repository can lead to large rebuilds if the unstable branch has diverged too much from the stable branch.  On a small app this overhead may be small enough to not be a problem in this case you would just use the feature workflow.&lt;br /&gt;
&lt;br /&gt;
This workflow uses the [[http://techbase.kde.org/Development/Git/Configuration#Multiple_Work_Branches|git-new-workdir script]] to create separate work directories and builds for stable and unstable branches. This depends on you setting different up KDE Environments for the separate builds.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T12:40:11Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Local Bug Fixing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in both the stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small fixes or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T12:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Create a Work Branch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
By default when you first create a repository clone there is only a single local branch called 'master'.  It is not good practice to do development in master, it is better kept clean for reference.  Instead all work should be performed in a new local branch, even bug fixes.&lt;br /&gt;
&lt;br /&gt;
To see what local branches you have:&lt;br /&gt;
&lt;br /&gt;
 git branch&lt;br /&gt;
&lt;br /&gt;
To see all local and remote branches:&lt;br /&gt;
&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
To create a new local branch:&lt;br /&gt;
&lt;br /&gt;
 git branch &amp;lt;new-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;new-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will create a new branch based on whatever local branch you were already in, i.e. that includes all the history of the original branch, which can be useful in building a hierarchy of dependent changes.&lt;br /&gt;
&lt;br /&gt;
You may prefer to base your new branch on a remote branch such as the master branch of the central repository so you can integrate any new development.  This is called 'tracking' and is recommended for most branches:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git branch --track new-bar-feature origin/master&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small fixes or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T12:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set up Git and your code repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]] page.&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to copy your repository from git.kde.org into your local KDE source directory.  In Git this process is called cloning.&lt;br /&gt;
&lt;br /&gt;
To clone your project repository:&lt;br /&gt;
&lt;br /&gt;
 cd your/source/dir&lt;br /&gt;
 git clone kde:&amp;lt;project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In our KFoo example:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:kfoo&lt;br /&gt;
&lt;br /&gt;
See the [[Getting_Started/Build/Environment|KDE Build Environment]] page for advice on structuring your source directory.&lt;br /&gt;
&lt;br /&gt;
If you have a slow internet connection then you may prefer to [[Getting_Started/Sources/Snapshots|download a snapshot tarball]] to bootstrap your clone.  You can copy the required command from the projects.kde.org Repository page for your project, but it will be of the form:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small fixes or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources/Snapshots</id>
		<title>Getting Started/Sources/Snapshots</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources/Snapshots"/>
				<updated>2011-06-05T12:18:32Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Getting Started/Sources/Snapshots}}&lt;br /&gt;
{{TutorialBrowser|&lt;br /&gt;
&lt;br /&gt;
series=Getting Started|&lt;br /&gt;
&lt;br /&gt;
name=Getting the Source using Snapshots|&lt;br /&gt;
&lt;br /&gt;
next=[[../../Build|Building KDE]]|&lt;br /&gt;
&lt;br /&gt;
reading=[[../../Sources/Anonymous_SVN|Anonymous SVN Quickstart Guide]]&amp;lt;br&amp;gt;[[Development/Tutorials/CMake |Introduction to CMake]]|&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If you are trying to checkout or clone a KDE source module, then there is a way to make the normally slow process of the initial checkout happen a lot quicker, thanks to automatically generated snapshots of the KDE source repository, which are stored in convenient archived form in the KDE FTP system.  This page describes how to perform a checkout or clone using a module snapshot.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that these snapshots are '''real''' Subversion checkouts or Git Clones, containing all of the required Subversion or Git metadata.  This procedure can in fact be the quickest way to checkout a module, thanks to the abundance of FTP mirrors.&lt;br /&gt;
&lt;br /&gt;
{{note|For Subversion this procedure only works if the module you want has nightly snapshots generated (most do), and if you want the '''trunk''' version of the module.  For Git snapshots are always generated and contain all unstable and stable branches.}}&lt;br /&gt;
&lt;br /&gt;
== Git ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to obtain a Git snapshot is to use http://projects.kde.org/projects to find the project you want, then navigate to the Repository tab for that Project.  Towards the top of the page is a small bar with buttons for 'Git', 'HTTP', 'SSH' and 'Tarball'.  Click on the Tarball button, then copy the command displayed in the box.  It will look something like:&lt;br /&gt;
&lt;br /&gt;
 wget -c http://anongit.kde.org/&amp;lt;project&amp;gt;/&amp;lt;project&amp;gt;-latest.tar.gz&lt;br /&gt;
&lt;br /&gt;
Either run this command from your command line or use the URL in your favourite download tool.  Once the download is complete unpack the archive, cd into the repository directory and run the following command to bring the snapshot up-to-date:&lt;br /&gt;
&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
&lt;br /&gt;
== Subversion ==&lt;br /&gt;
&lt;br /&gt;
=== Get the snapshot ===&lt;br /&gt;
&lt;br /&gt;
First go to [http://download.kde.org/ The KDE Mirror Redirector] and choose the best FTP server for your location.  Usually this will be a server in your country/state.  Click on the link for the FTP server and navigate to the {{path|snapshots}} directory.  In this directory will be a large list of KDE modules which are archived.&lt;br /&gt;
&lt;br /&gt;
You want to download the module with the name in the following format: '''kdemodule-svn.tar.bz2'''.  Go ahead and save this archive to your hard disk somewhere.  You'll need to be able to reach this location from the command line later.&lt;br /&gt;
&lt;br /&gt;
{{note|It is important to get the module with the '''-svn''' in the file name.  There are other types of snapshots also in the same directory for each module.  But only modules with '''-svn''' contain the necessary information to allow for completing a checkout.}}&lt;br /&gt;
&lt;br /&gt;
=== The Recipe ===&lt;br /&gt;
&lt;br /&gt;
Now for the checkout, go ahead and open a terminal shell and perform the following steps:&lt;br /&gt;
&lt;br /&gt;
 cs # [[Getting_Started/Increased_Productivity_in_KDE4_with_Scripts/.bashrc|cs is not a typo]]&lt;br /&gt;
 tar xvjf /path/to/kdemodule-svn.tar.bz2&lt;br /&gt;
 cd kdemodule&lt;br /&gt;
 svn revert -R . # This step restores the missing files.&lt;br /&gt;
 svn up          # This step updates the source to the latest code, and is optional.&lt;br /&gt;
&lt;br /&gt;
=== Extra Tidbits ===&lt;br /&gt;
&lt;br /&gt;
That's it!  You've got a valid KDE module checkout now.  Some things to keep in mind:&lt;br /&gt;
&lt;br /&gt;
* Each module snapshot contains a special README.svn-nightly file containing information on how to use the snapshot.  You've already performed the svn revert and update steps.&lt;br /&gt;
* The modules are already setup to update from the KDE anonymous Subversion repository (svn://anonsvn.kde.org/).  If this is not correct for you (i.e. you're a developer), then you can use the svn switch command to fix the checkout as described in the README.svn-nightly file.&lt;br /&gt;
** Switch to the module source directory (cs &amp;lt;moduleName&amp;gt;)&lt;br /&gt;
** If you use Subversion over SSH, run '''svn switch --relocate svn://anonsvn.kde.org svn+ssh://&amp;lt;user&amp;gt;@svn.kde.org'''&lt;br /&gt;
** If you use Subversion over HTTPS, run '''svn switch --relocate svn://anonsvn.kde.org &amp;lt;nowiki&amp;gt;https://&amp;lt;user&amp;gt;@svn.kde.org&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
** (The way this works is that &amp;lt;tt&amp;gt;svn switch --relocate&amp;lt;/tt&amp;gt; rewrites the Subversion metadata in the module, replacing the first substring (svn://anonsvn.kde.org) in the repository URL with the second substring (svn+ssh: or https:).  This is done locally without any contact to the repository required.&lt;br /&gt;
* If you want to keep the module up to date in the future, just run svn up as you would for any other Subversion checkout.  You do not have to continue downloading snapshots just to update the module, and to do so would be inefficient and slow.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Simple_Workflow</id>
		<title>Development/Git/Simple Workflow</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Simple_Workflow"/>
				<updated>2011-06-05T11:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: Created page with '== Simple KDE Git Workflow ==  This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to th...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Simple KDE Git Workflow ==&lt;br /&gt;
&lt;br /&gt;
This Git Workflow is designed to be followed by a new Git user who needs a simple workflow for bug fixes and new features in a manner similar to the old SVN workflow.&lt;br /&gt;
&lt;br /&gt;
Note that each module may choose to adopt a more complex workflow and you should check with your modules maintainers if this is the case.&lt;br /&gt;
&lt;br /&gt;
The worked examples given will be for an imaginary app called KFoo in a git.kde.org repository called 'kfoo'.&lt;br /&gt;
&lt;br /&gt;
== Set-up ==&lt;br /&gt;
&lt;br /&gt;
This section documents how to set you Git and you repository for development.&lt;br /&gt;
&lt;br /&gt;
=== Configure Git ===&lt;br /&gt;
&lt;br /&gt;
Follow the [[Development/Git/Configuration|KDE Git Configuration]].&lt;br /&gt;
&lt;br /&gt;
=== Clone your repository ===&lt;br /&gt;
&lt;br /&gt;
You need to clone your repository&lt;br /&gt;
&lt;br /&gt;
== Basic Actions ==&lt;br /&gt;
&lt;br /&gt;
This section documents basic actions that are performed within your workflow.&lt;br /&gt;
&lt;br /&gt;
See also the [[Development/Git/Recipes|KDE Git Recipes]] page.&lt;br /&gt;
&lt;br /&gt;
=== Create a Work Branch ===&lt;br /&gt;
&lt;br /&gt;
=== Commit Your Changes ===&lt;br /&gt;
&lt;br /&gt;
=== Push Your Changes ===&lt;br /&gt;
&lt;br /&gt;
== Local Bug Fixing ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally fixing bugs in stable and unstable branches and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small fixes or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Local Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for locally working on new features in unstable branch and pushing them to the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is only recommended for small features or where you are the only developer on a project.&lt;br /&gt;
&lt;br /&gt;
== Remote Feature Development ==&lt;br /&gt;
&lt;br /&gt;
This example workflow is for working on new features in a feature branch hosted on the central repository.&lt;br /&gt;
&lt;br /&gt;
This workflow is recommended for larger features or where there are many developers on a project.&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Git/Recipes</id>
		<title>Development/Git/Recipes</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Git/Recipes"/>
				<updated>2011-06-05T09:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Git Recipes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Git Recipes ==&lt;br /&gt;
&lt;br /&gt;
Brief recipes for common use cases.&lt;br /&gt;
&lt;br /&gt;
=== Cloning a Repository ===&lt;br /&gt;
&lt;br /&gt;
To clone a local copy of a KDE Git repository, find the repository on http://projects.kde.org/projects, choose the project, choose the Repository tab and copy the git clone command displayed:&lt;br /&gt;
&lt;br /&gt;
 git clone git://anongit.kde.org/&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note this clone will be read-only and you will not be able to push from it.&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you have the standard [[Development/Git/Configuration|KDE Git configuration]] and know the name of the repository simply do:&lt;br /&gt;
&lt;br /&gt;
 git clone kde:&amp;lt;repository-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will automatically set the repository up to have push access.&lt;br /&gt;
&lt;br /&gt;
=== Working with existing remote branches ===&lt;br /&gt;
&lt;br /&gt;
Remote branches are branches created on the main KDE repository.  These may be a stable branch that you need to do bugfixes on, i.e. the 4.6 release, or a feature branch based on master.&lt;br /&gt;
&lt;br /&gt;
To see what local and remote branches exist:&lt;br /&gt;
 git branch -a&lt;br /&gt;
&lt;br /&gt;
Create a local branch that tracks a remote branch:&lt;br /&gt;
 git branch --track &amp;lt;local-branch&amp;gt; &amp;lt;remote-branch&amp;gt;&lt;br /&gt;
 git checkout &amp;lt;local-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When you want to add your commits to the local branch, first update your local to the current remote state, then push your commits:&lt;br /&gt;
 git pull --rebase&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Working with stable branches ===&lt;br /&gt;
&lt;br /&gt;
For kdelibs, kdepimlibs, kde-runtime, kate, konsole and kde-workspace, the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/KDE/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track KDE/4.6 origin/KDE/4.6&lt;br /&gt;
 git checkout KDE/4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin KDE/4.6:KDE/4.6&lt;br /&gt;
&lt;br /&gt;
In other projects the remote stable branches are named as follows:&lt;br /&gt;
&lt;br /&gt;
 origin/4.6&lt;br /&gt;
&lt;br /&gt;
For these modules, to set up a local stable branch to track the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track 4.6 origin/4.6&lt;br /&gt;
 git checkout 4.6&lt;br /&gt;
&lt;br /&gt;
To then push changes to the remote stable branch:&lt;br /&gt;
&lt;br /&gt;
 git push origin 4.6:4.6&lt;br /&gt;
&lt;br /&gt;
=== Creating / Deleting Remote Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new remote branch simply push your current branch to it:&lt;br /&gt;
&lt;br /&gt;
 git push origin &amp;lt;local-branch&amp;gt;:&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To delete a remote branch is a little obscure:&lt;br /&gt;
&lt;br /&gt;
 git push origin :&amp;lt;remote-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tracking Branches ===&lt;br /&gt;
&lt;br /&gt;
To create a new branch that tracks an existing local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --track &amp;lt;new-branch&amp;gt; &amp;lt;existing-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To change the branch the current branch is tracking to a different local or remote branch:&lt;br /&gt;
&lt;br /&gt;
 git branch --set-upstream &amp;lt;existing-branch&amp;gt; &amp;lt;new-upstream-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cherry Picking ===&lt;br /&gt;
&lt;br /&gt;
Cherry picking is a way to copy a single commit from any local or remote branch to your current local branch.&lt;br /&gt;
&lt;br /&gt;
When cherry picking between stable and unstable branches, use the following form:&lt;br /&gt;
&lt;br /&gt;
 git cherry-pick -e -x &amp;lt;original-commit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note you can add ''any'' remote repository to your local clone if cherry-pick from.&lt;br /&gt;
&lt;br /&gt;
;Common Options&lt;br /&gt;
&lt;br /&gt;
'''-e''' will allow you to edit the commit message to add any extra details and to change the BUG/CCBUG/FIXED-IN messages.&lt;br /&gt;
&lt;br /&gt;
'''-x''' will automatically add the original commit number to the end of the commit message to enable better tracing and to simplify merging.  Only do this if the original commit was already published in a public repository, e.g. your are forward porting or back porting the patch.&lt;br /&gt;
&lt;br /&gt;
'''-n''' will cherry-pick the changes but not commit them to the new branch.  This is very useful if you need to do further work on a commit.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Rebasing ===&lt;br /&gt;
&lt;br /&gt;
If you have many commits in a branch that you want to clean up before pushing to the central repository, then you can use interactive rebasing to merge, split, delete, re-order or edit them.&lt;br /&gt;
&lt;br /&gt;
To work with all commits to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i &amp;lt;parent-branch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;parent-branch&amp;gt; is the branch you want to rebase onto.  This is usually the branch that you based the original local branch off or are remotely tracking, but can be any branch you want.&lt;br /&gt;
&lt;br /&gt;
To work with just the last x commits you made to a branch:&lt;br /&gt;
&lt;br /&gt;
 git rebase -i HEAD^x&lt;br /&gt;
&lt;br /&gt;
See http://book.git-scm.com/4_interactive_rebasing.html for full details.&lt;br /&gt;
&lt;br /&gt;
=== Viewing What You've Changed ===&lt;br /&gt;
&lt;br /&gt;
To see the difference between your tracked but unstaged changes and the current branch (including your not-yet-pushed commits)&lt;br /&gt;
&lt;br /&gt;
 git diff&lt;br /&gt;
 git diff &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the difference between your staged changes and the current branch (including your not-yet-pushed commits):&lt;br /&gt;
&lt;br /&gt;
 git diff --staged&lt;br /&gt;
 git diff --staged &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stashing Changes ===&lt;br /&gt;
&lt;br /&gt;
If you have changes you don't wish to commit but don't want to lose either while you do something else, you can temporarily 'stash' the changes away.  This could be some frequently used debug code,or just some work in progress you need to move to another branch without committing.  If the code is just WIP for the current branch we recommend using an interim commit instead.&lt;br /&gt;
&lt;br /&gt;
The stash is a temporary store that holds a stack of uncommitted changes at a repository level.  Commands given below work by default with the stash at the top of the stack, or you can optionally provide the stack reference.&lt;br /&gt;
&lt;br /&gt;
To store your current changes at the top of the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;lt;optional comment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 git stash &amp;quot;My debug code&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To see all your stashed items in the stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash list&lt;br /&gt;
&lt;br /&gt;
This will show something like:&lt;br /&gt;
&lt;br /&gt;
 stash@{0}: WIP on master: 6ebd0e2... My debug code&lt;br /&gt;
 stash@{1}: WIP on master: 9cc0589... My stashed changes&lt;br /&gt;
&lt;br /&gt;
To see the details of an individual stash:&lt;br /&gt;
&lt;br /&gt;
 git stash show &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see the stash at the top of the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash show&lt;br /&gt;
&lt;br /&gt;
To see the second item from top:&lt;br /&gt;
&lt;br /&gt;
 git stash show stash@{1}&lt;br /&gt;
&lt;br /&gt;
To restore a stash while keeping a copy in the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash apply &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To restore a stash and remove it from the stack:&lt;br /&gt;
&lt;br /&gt;
 git stash pop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remove a single stash from the stack without applying it:&lt;br /&gt;
&lt;br /&gt;
 git stash drop &amp;lt;optional stash ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To clear out your entire stash stack:&lt;br /&gt;
&lt;br /&gt;
 git stash clear&lt;br /&gt;
&lt;br /&gt;
For more details see:&lt;br /&gt;
&lt;br /&gt;
 http://www.kernel.org/pub/software/scm/git/docs/git-stash.html&lt;br /&gt;
 http://book.git-scm.com/4_stashing.html&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T10:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Software Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Base Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-workspace KDE Workspace (kde-workspace)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
The KDE Applications group is currently split between Git and SVN:&lt;br /&gt;
&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeaccessibility/ KDE Accessibility (kdeaccessibility)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeadmin/ KDE Admin (kdeadmin)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeartwork/ KDE Artwork (kdeartwork)]&lt;br /&gt;
* KDE Bindings (kdebindings)&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdebindings/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdebindings&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeexamples KDE Examples (kdeexamples)]&lt;br /&gt;
* KDE Education (kdeedu)&lt;br /&gt;
** http://edu.kde.org/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdeedu&lt;br /&gt;
* KDE Games (kdegames)&lt;br /&gt;
** http://games.kde.org/&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdegames/&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdegraphics KDE Graphics (kdegraphics)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdemultimedia/ KDE Multimedia (kdemultimedia) ]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdenetwork/ KDE Network (kdenetwork)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeplasma-addons Plasma Addons (kdeplasma-addons)]&lt;br /&gt;
* KDE PIM / Kontact&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim KDE PIM(kdepim)]&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim-runtime KDE PIM Runtime (kdepim-runtime)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdesdk/ KDE SDK (kdesdk)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdetoys/ KDE Toys (kdetoys)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeutils/ KDE Utilities (kdeutils)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdewebdev/ KDE Web Development (kdewebdev)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
The KDE Extragear group is currently split between Git and SVN:&lt;br /&gt;
&lt;br /&gt;
* http://websvn.kde.org/trunk/extragear/&lt;br /&gt;
* https://projects.kde.org/projects/extragear&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
The KDE Extragear group is currently split between Git and SVN:&lt;br /&gt;
&lt;br /&gt;
* http://websvn.kde.org/trunk/playground/&lt;br /&gt;
* https://projects.kde.org/projects/playground&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
The KDE Review group is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kdereview KDE Review (kdereview)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* [http://websvn.kde.org/trunk/l10n-kde4/ KDE Translations (i18n)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
KDE Websites (websites/www)&lt;br /&gt;
&lt;br /&gt;
* http://websvn.kde.org/trunk/www/&lt;br /&gt;
* https://projects.kde.org/projects/websites&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
* http://websvn.kde.org/trunk/koffice/&lt;br /&gt;
* https://projects.kde.org/projects/koffice&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/calligra '''Calligra''' (calligra)]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T10:08:51Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Software Compilation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Base Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-workspace KDE Workspace (kde-workspace)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
The KDE Applications group is currently split between Git and SVN:&lt;br /&gt;
&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeaccessibility/ KDE Accessibility (kdeaccessibility)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeadmin/ KDE Admin (kdeadmin)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeartwork/ KDE Artwork (kdeartwork)]&lt;br /&gt;
* KDE Bindings (kdebindings)&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdebindings/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdebindings&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeexamples KDE Examples (kdeexamples)]&lt;br /&gt;
* KDE Education (kdeedu)&lt;br /&gt;
** http://edu.kde.org/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdeedu&lt;br /&gt;
* KDE Games (kdegames)&lt;br /&gt;
** http://games.kde.org/&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdegames/&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdegraphics KDE Graphics (kdegraphics)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdemultimedia/ KDE Multimedia (kdemultimedia) ]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdenetwork/ KDE Network (kdenetwork)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeplasma-addons Plasma Addons (kdeplasma-addons)]&lt;br /&gt;
* KDE PIM / Kontact&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim KDE PIM(kdepim)]&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim-runtime KDE PIM Runtime (kdepim-runtime)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdesdk/ KDE SDK (kdesdk)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdetoys/ KDE Toys (kdetoys)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeutils/ KDE Utilities (kdeutils)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdewebdev/ KDE Web Development (kdewebdev)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T10:06:58Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Base Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-workspace KDE Workspace (kde-workspace)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeaccessibility/ KDE Accessibility (kdeaccessibility)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeadmin/ KDE Admin (kdeadmin)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeartwork/ KDE Artwork (kdeartwork)]&lt;br /&gt;
* KDE Bindings (kdebindings)&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdebindings/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdebindings&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeexamples KDE Examples (kdeexamples)]&lt;br /&gt;
* KDE Education (kdeedu)&lt;br /&gt;
** http://edu.kde.org/&lt;br /&gt;
** https://projects.kde.org/projects/kde/kdeedu&lt;br /&gt;
* KDE Games (kdegames)&lt;br /&gt;
** http://games.kde.org/&lt;br /&gt;
** http://websvn.kde.org/trunk/KDE/kdegames/&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdegraphics KDE Graphics (kdegraphics)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdemultimedia/ KDE Multimedia (kdemultimedia) ]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdenetwork/ KDE Network (kdenetwork)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdeplasma-addons Plasma Addons (kdeplasma-addons)]&lt;br /&gt;
* KDE PIM / Kontact&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim KDE PIM(kdepim)]&lt;br /&gt;
** [https://projects.kde.org/projects/kde/kdepim-runtime KDE PIM Runtime (kdepim-runtime)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdesdk/ KDE SDK (kdesdk)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdetoys/ KDE Toys (kdetoys)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdeutils/ KDE Utilities (kdeutils)]&lt;br /&gt;
* [http://websvn.kde.org/trunk/KDE/kdewebdev/ KDE Web Development (kdewebdev)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T09:55:48Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Base Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Base Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-workspace KDE Workspace (kde-workspace)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Accessibility (kdeaccessibility) svn&lt;br /&gt;
* KDE Admin (kdeadmin) svn&lt;br /&gt;
* KDE Artwork (kdeartwork) svn&lt;br /&gt;
* KDE Bindings (kdebindings) git/svn&lt;br /&gt;
* KDE Examples (kdeexamples) git&lt;br /&gt;
* KDE Education (kdeedu) git&lt;br /&gt;
* KDE Games (kdegames) svn&lt;br /&gt;
* KDE Graphics (kdegraphics) git&lt;br /&gt;
* KDE Network (kdenetwork) svn&lt;br /&gt;
* KDE Multimedia (kdemultimedia) svn&lt;br /&gt;
* Plasma Addons (kdeplasma-addons) git&lt;br /&gt;
* KDE PIM Runtime (kdepim-runtime) Git&lt;br /&gt;
* '''Kontact''' and Kontact Touch as part of KDE PIM (kdepim) Git&lt;br /&gt;
* KDE SDK (kdesdk) svn&lt;br /&gt;
* KDE Toys (kdetoys) svn&lt;br /&gt;
* KDE Utilities (kdeutils) svn&lt;br /&gt;
* KDE Web Development (kdewebdev) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T09:55:05Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Workspace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Base Applications ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-workspace KDE Workspace (kde-workspace)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Accessibility (kdeaccessibility) svn&lt;br /&gt;
* KDE Admin (kdeadmin) svn&lt;br /&gt;
* KDE Artwork (kdeartwork) svn&lt;br /&gt;
* KDE Bindings (kdebindings) git/svn&lt;br /&gt;
* KDE Examples (kdeexamples) git&lt;br /&gt;
* KDE Education (kdeedu) git&lt;br /&gt;
* KDE Games (kdegames) svn&lt;br /&gt;
* KDE Graphics (kdegraphics) git&lt;br /&gt;
* KDE Network (kdenetwork) svn&lt;br /&gt;
* KDE Multimedia (kdemultimedia) svn&lt;br /&gt;
* Plasma Addons (kdeplasma-addons) git&lt;br /&gt;
* KDE PIM Runtime (kdepim-runtime) Git&lt;br /&gt;
* '''Kontact''' and Kontact Touch as part of KDE PIM (kdepim) Git&lt;br /&gt;
* KDE SDK (kdesdk) svn&lt;br /&gt;
* KDE Toys (kdetoys) svn&lt;br /&gt;
* KDE Utilities (kdeutils) svn&lt;br /&gt;
* KDE Web Development (kdewebdev) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T09:54:34Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Development Platform */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
=== KDE Base Applications ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Base Applications''' group is defined as those basic applications that are required by the Workspace and other Applications, such as file management, terminal emulation and text editing.&lt;br /&gt;
&lt;br /&gt;
The KDE Base Applications are available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-baseapps KDE Base Applications (kde-baseapps)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/konsole Konsole terminal emulator (konsole)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kate Kate text editor (kate)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* KDE Workspace (kde-workspace) Git&lt;br /&gt;
* KDE Base Applications (kde-baseapps) Git&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Accessibility (kdeaccessibility) svn&lt;br /&gt;
* KDE Admin (kdeadmin) svn&lt;br /&gt;
* KDE Artwork (kdeartwork) svn&lt;br /&gt;
* KDE Bindings (kdebindings) git/svn&lt;br /&gt;
* KDE Examples (kdeexamples) git&lt;br /&gt;
* KDE Education (kdeedu) git&lt;br /&gt;
* KDE Games (kdegames) svn&lt;br /&gt;
* KDE Graphics (kdegraphics) git&lt;br /&gt;
* KDE Network (kdenetwork) svn&lt;br /&gt;
* KDE Multimedia (kdemultimedia) svn&lt;br /&gt;
* Plasma Addons (kdeplasma-addons) git&lt;br /&gt;
* KDE PIM Runtime (kdepim-runtime) Git&lt;br /&gt;
* '''Kontact''' and Kontact Touch as part of KDE PIM (kdepim) Git&lt;br /&gt;
* KDE SDK (kdesdk) svn&lt;br /&gt;
* KDE Toys (kdetoys) svn&lt;br /&gt;
* KDE Utilities (kdeutils) svn&lt;br /&gt;
* KDE Web Development (kdewebdev) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T09:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* KDE Software Modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
The '''Qt KDE''' module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
The Qt KDE module is available from Git:&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
The KDE Support group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kdesupport&lt;br /&gt;
* http://websvn.kde.org/trunk/kdesupport/&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
The KDE SC group is currently split between Git and SVN:&lt;br /&gt;
* https://projects.kde.org/projects/kde&lt;br /&gt;
* http://websvn.kde.org/trunk/KDE/&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
The KDE Development Platform is available from Git:&lt;br /&gt;
&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdelibs KDE Libraries (kdelibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdepimlibs KDE PIM Libraries (kdepimlibs)]&lt;br /&gt;
* [https://projects.kde.org/projects/kde/kdebase/kde-runtime KDE Runtime (kde-runtime)]&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* KDE Workspace (kde-workspace) Git&lt;br /&gt;
* KDE Base Applications (kde-baseapps) Git&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Accessibility (kdeaccessibility) svn&lt;br /&gt;
* KDE Admin (kdeadmin) svn&lt;br /&gt;
* KDE Artwork (kdeartwork) svn&lt;br /&gt;
* KDE Bindings (kdebindings) git/svn&lt;br /&gt;
* KDE Examples (kdeexamples) git&lt;br /&gt;
* KDE Education (kdeedu) git&lt;br /&gt;
* KDE Games (kdegames) svn&lt;br /&gt;
* KDE Graphics (kdegraphics) git&lt;br /&gt;
* KDE Network (kdenetwork) svn&lt;br /&gt;
* KDE Multimedia (kdemultimedia) svn&lt;br /&gt;
* Plasma Addons (kdeplasma-addons) git&lt;br /&gt;
* KDE PIM Runtime (kdepim-runtime) Git&lt;br /&gt;
* '''Kontact''' and Kontact Touch as part of KDE PIM (kdepim) Git&lt;br /&gt;
* KDE SDK (kdesdk) svn&lt;br /&gt;
* KDE Toys (kdetoys) svn&lt;br /&gt;
* KDE Utilities (kdeutils) svn&lt;br /&gt;
* KDE Web Development (kdewebdev) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Sources</id>
		<title>Getting Started/Sources</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Sources"/>
				<updated>2011-06-04T09:35:28Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Qt KDE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Source Repositories and Revision Control ==&lt;br /&gt;
&lt;br /&gt;
KDE uses a central online repository to store our Source Code and to track changes made to the code.  Currently, KDE is in the middle of migrating our main repository from [[/Subversion|Subversion (svn)]] to [[Development/Git|Git]], so some software modules currently live in Git while others are still only available from Subversion.  This means you will need to become familiar with both systems.&lt;br /&gt;
&lt;br /&gt;
== Obtaining The Source Code ==&lt;br /&gt;
&lt;br /&gt;
There are three main ways of doing this:&lt;br /&gt;
&lt;br /&gt;
* Directly access the KDE Source Repository using either Git or Subversion to copy the source code as it currently is with a full history of all changes.  In Git this is know as Cloning the repository, in Subversion it is Checking-Out the code.  This is most commonly done if you want to actively develop the code. The git repositories are available at [https://projects.kde.org/projects projects.kde.org].&lt;br /&gt;
* Download a tarball snapshot of the Source Repository to bootstrap a Git clone or Subversion checkout.  This is a good option if you have a slow or unreliable internet connection.  See the [[/Snapshots|Source Snapshots]] page for more details.&lt;br /&gt;
* Download a tarball snapshot of just the code as at a given time or release.  This is most commonly done if you do not want to develop the code itself but just want to use it for a stable system installation, testing a release, or developing applications outside of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
Note that Checkout has a different meaning in Git than it does in Subversion.&lt;br /&gt;
&lt;br /&gt;
== KDE Software Modules ==&lt;br /&gt;
&lt;br /&gt;
Within the KDE Source Repository the code is organized in Projects and Modules.  There are also a number of high-level groupings of the Modules.&lt;br /&gt;
&lt;br /&gt;
=== Qt KDE ===&lt;br /&gt;
&lt;br /&gt;
This module is a clone of the latest Qt release with patches made by KDE to fix specific issues before they are available in a Qt release.&lt;br /&gt;
&lt;br /&gt;
* https://projects.kde.org/projects/qt-kde&lt;br /&gt;
&lt;br /&gt;
=== KDE Support ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Support''' group is a set of tools and libraries that have been developed by KDE and that various KDE modules depend upon but are not themselves dependent on the KDE Development Platform.  These libraries can thus be used by non-KDE applications without having to rely on KDE as well.&lt;br /&gt;
&lt;br /&gt;
=== KDE Software Compilation ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Software Compilation''' (aka KDE SC) is an informal term covering all the KDE Software which is released together on the regular KDE Release Cycle.&lt;br /&gt;
&lt;br /&gt;
==== KDE Development Platform ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Development Platform''' group is defined as those KDE Modules that are required to run a KDE Application, i.e. the core libraries and runtime dependencies.&lt;br /&gt;
&lt;br /&gt;
* KDE Libraries (kdelibs) Git&lt;br /&gt;
* KDE PIM Libraries (kdepimlibs) Git&lt;br /&gt;
* KDE Runtime (kde-runtime) Git&lt;br /&gt;
&lt;br /&gt;
==== KDE Workspace ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Workspace''' group (aka '''Plasma''') is defined as those KDE Modules that are needed to run a workspace, such as the Desktop or Netbook.  This group is not needed to run a KDE Application under another workspace such as Gnome or Windows.&lt;br /&gt;
&lt;br /&gt;
* KDE Workspace (kde-workspace) Git&lt;br /&gt;
* KDE Base (kde-baseapps) Git&lt;br /&gt;
&lt;br /&gt;
==== KDE Applications ====&lt;br /&gt;
&lt;br /&gt;
The '''KDE Applications''' group is defined as those KDE modules built on the KDE Development Platform that are hosted by the KDE infrastructure and are released as part of the regular KDE Release Cycle, i.e. they are part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Accessibility (kdeaccessibility) svn&lt;br /&gt;
* KDE Admin (kdeadmin) svn&lt;br /&gt;
* KDE Artwork (kdeartwork) svn&lt;br /&gt;
* KDE Bindings (kdebindings) git/svn&lt;br /&gt;
* KDE Examples (kdeexamples) git&lt;br /&gt;
* KDE Education (kdeedu) git&lt;br /&gt;
* KDE Games (kdegames) svn&lt;br /&gt;
* KDE Graphics (kdegraphics) git&lt;br /&gt;
* KDE Network (kdenetwork) svn&lt;br /&gt;
* KDE Multimedia (kdemultimedia) svn&lt;br /&gt;
* Plasma Addons (kdeplasma-addons) git&lt;br /&gt;
* KDE PIM Runtime (kdepim-runtime) Git&lt;br /&gt;
* '''Kontact''' and Kontact Touch as part of KDE PIM (kdepim) Git&lt;br /&gt;
* KDE SDK (kdesdk) svn&lt;br /&gt;
* KDE Toys (kdetoys) svn&lt;br /&gt;
* KDE Utilities (kdeutils) svn&lt;br /&gt;
* KDE Web Development (kdewebdev) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Extragear ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Extragear''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure and have a stable release but are not part of a KDE Module and are not released as part of the regular KDE Release Cycle, i.e. they are not part of the KDE SC.&lt;br /&gt;
&lt;br /&gt;
* KDE Extragear (extragear) Git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Playground ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Playground''' group is defined as those applications built on the KDE Development Platform that are hosted by the KDE infrastructure but have not yet had a stable release and may never be released.&lt;br /&gt;
&lt;br /&gt;
* KDE Playground (playground) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Review ===&lt;br /&gt;
&lt;br /&gt;
The '''KDE Review''' group is defined as those applications that are being reviewed for inclusion in a KDE Module or KDE Extragear, usually moving over from KDE Playground.&lt;br /&gt;
&lt;br /&gt;
=== KDE Translations ===&lt;br /&gt;
&lt;br /&gt;
* KDE Translations (i18n) svn&lt;br /&gt;
&lt;br /&gt;
=== KDE Websites ===&lt;br /&gt;
&lt;br /&gt;
* KDE Websites (websites/www) git/svn&lt;br /&gt;
&lt;br /&gt;
=== KOffice ===&lt;br /&gt;
&lt;br /&gt;
* KOffice (koffice) git, stable in svn&lt;br /&gt;
&lt;br /&gt;
=== Calligra ===&lt;br /&gt;
&lt;br /&gt;
* '''Calligra''' (calligra) git&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started"/>
				<updated>2011-06-04T09:28:55Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started}} &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are many different ways to become involved in the KDE Community, ranging all the way from a simply using our software through to being a core platform developer.&lt;br /&gt;
&lt;br /&gt;
You can find more general information on getting involved in KDE at the following links:&lt;br /&gt;
* [http://kde.org/community/getinvolved/ Getting Involved in KDE]&lt;br /&gt;
* [[Contribute|Contribute to KDE]]&lt;br /&gt;
&lt;br /&gt;
This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community.  It will explain to you how KDE Software is structured and built, and how you can participate by building KDE for yourself.&lt;br /&gt;
&lt;br /&gt;
{{note|'''Quickstart:''' If you are impatient to get started without understanding what you are doing then you can skip straight to using a [[/Build#Scripted_Builds|Build Script]], but it is strongly recommended you read this documentation first.}}&lt;br /&gt;
&lt;br /&gt;
== Using KDE Software ==&lt;br /&gt;
If you just want to use stable KDE software for your everyday computing needs, then you do not need to build KDE Software for yourself.  You should instead use the software installer provided by your Linux distribution to install KDE package.&lt;br /&gt;
&lt;br /&gt;
The best place to learn how to do this is through your distributions normal support channels, although you may find some useful information on the following pages:&lt;br /&gt;
* [http://www.kde.org/download/distributions.php Distributions shipping KDE]&lt;br /&gt;
* [[/Build/Distributions|Install KDE Software on Linux and BSD Distributions]]&lt;br /&gt;
* [[Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]&lt;br /&gt;
* Mac OS X does not currently have an installer available for KDE Software, but you can simplify building it by using [http://mac.kde.org/?id=build MacPorts or Fink]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
If you are looking for help in using the KDE Workspace or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase]. &lt;br /&gt;
&lt;br /&gt;
If you have any questions or problems with building or developing KDE Software please feel free to [[Development/Getting_Help|ask for help]].  However, be patient while waiting for a response, and try to work through the problem yourself, we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.&lt;br /&gt;
&lt;br /&gt;
== Building and Running KDE Software From Source ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software.  In particular if you are only wanting to build and develop a single application you may not need to build the entire KDE Development Platform to do so.  You can read more about this on the [[Getting_Started/Build/Methods|Build Methods page]].&lt;br /&gt;
&lt;br /&gt;
The following sections explain the steps you need to understand and give the instructions you need to follow to successfully build KDE Software from source:&lt;br /&gt;
&lt;br /&gt;
* [[/Sources|How the KDE Source Code is structured]]&lt;br /&gt;
* [[/Build|How to Build and Install the software]]&lt;br /&gt;
* [[/Run|How to Run the software]]&lt;br /&gt;
&lt;br /&gt;
== Development Model ==&lt;br /&gt;
TODO: General introduction to the dev model, release cycles, etc.&lt;br /&gt;
&lt;br /&gt;
* [[Schedules/Release_Schedules_Guide|The KDE Release Schedule]]&lt;br /&gt;
* [[Development/Software_Engineering_Framework|The KDE Software Engineering Framwork]]&lt;br /&gt;
* [[Policies|KDE Development Policies and Procedures to follow]]&lt;br /&gt;
* [[Policies/Application_Lifecycle|The development lifecycle for a new application]]&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
There are a number of [[Development/Tools|Development Tools]] that are either required or helpful when building KDE Software.  For these you will usually want to use the stable packages provided by your distribution.&lt;br /&gt;
&lt;br /&gt;
You may want to use a graphical IDE for your development work:&lt;br /&gt;
* [http://www.kdevelop.org/ KDevelop 4]&lt;br /&gt;
* [[Development/Tools/Eclipse|Eclipse]]&lt;br /&gt;
* [[/Using_an_IDE_with_KDE4|Using an IDE with KDE4]]&lt;br /&gt;
&lt;br /&gt;
== Contributing To KDE ==&lt;br /&gt;
Once you have a copy of KDE built you can then start contributing back to KDE.  The pages below will help you find out how you can help make KDE even better.&lt;br /&gt;
&lt;br /&gt;
[[Image:Action_tool.svg|right|32px]]&lt;br /&gt;
* [[Contribute|Contribute]]&lt;br /&gt;
* [[Contribute/Send_Patches|Send Patches]]&lt;br /&gt;
* [[Contribute/Bugsquad|Bugsquad]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build_KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started"/>
				<updated>2011-06-04T09:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started}} &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are many different ways to become involved in the KDE Community, ranging all the way from a simply using our software through to being a core platform developer.&lt;br /&gt;
&lt;br /&gt;
You can find more general information on getting involved in KDE at the following links:&lt;br /&gt;
* [http://kde.org/community/getinvolved/ Getting Involved in KDE]&lt;br /&gt;
* [[Contribute|Contribute to KDE]]&lt;br /&gt;
&lt;br /&gt;
This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community.  It will explain to you how KDE Software is structured and built, and how you can participate by building KDE for yourself.&lt;br /&gt;
&lt;br /&gt;
{{note|'''Quickstart:''' If you're impatient to get started without understanding what you are doing then we recommend you use one of the available [[/Build#Scripted_Builds|Build Scripts]].}}&lt;br /&gt;
&lt;br /&gt;
== Using KDE Software ==&lt;br /&gt;
If you just want to use stable KDE software for your everyday computing needs, then you do not need to build KDE Software for yourself.  You should instead use the software installer provided by your Linux distribution to install KDE package.&lt;br /&gt;
&lt;br /&gt;
The best place to learn how to do this is through your distributions normal support channels, although you may find some useful information on the following pages:&lt;br /&gt;
* [http://www.kde.org/download/distributions.php Distributions shipping KDE]&lt;br /&gt;
* [[/Build/Distributions|Install KDE Software on Linux and BSD Distributions]]&lt;br /&gt;
* [[Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]&lt;br /&gt;
* Mac OS X does not currently have an installer available for KDE Software, but you can simplify building it by using [http://mac.kde.org/?id=build MacPorts or Fink]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
If you are looking for help in using the KDE Workspace or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase]. &lt;br /&gt;
&lt;br /&gt;
If you have any questions or problems with building or developing KDE Software please feel free to [[Development/Getting_Help|ask for help]].  However, be patient while waiting for a response, and try to work through the problem yourself, we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.&lt;br /&gt;
&lt;br /&gt;
== Building and Running KDE Software From Source ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software.  In particular if you are only wanting to build and develop a single application you may not need to build the entire KDE Development Platform to do so.  You can read more about this on the [[Getting_Started/Build/Methods|Build Methods page]].&lt;br /&gt;
&lt;br /&gt;
The following sections explain the steps you need to understand and give the instructions you need to follow to successfully build KDE Software from source:&lt;br /&gt;
&lt;br /&gt;
* [[/Sources|How the KDE Source Code is structured]]&lt;br /&gt;
* [[/Build|How to Build and Install the software]]&lt;br /&gt;
* [[/Run|How to Run the software]]&lt;br /&gt;
&lt;br /&gt;
== Development Model ==&lt;br /&gt;
TODO: General introduction to the dev model, release cycles, etc.&lt;br /&gt;
&lt;br /&gt;
* [[Schedules/Release_Schedules_Guide|The KDE Release Schedule]]&lt;br /&gt;
* [[Development/Software_Engineering_Framework|The KDE Software Engineering Framwork]]&lt;br /&gt;
* [[Policies|KDE Development Policies and Procedures to follow]]&lt;br /&gt;
* [[Policies/Application_Lifecycle|The development lifecycle for a new application]]&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
There are a number of [[Development/Tools|Development Tools]] that are either required or helpful when building KDE Software.  For these you will usually want to use the stable packages provided by your distribution.&lt;br /&gt;
&lt;br /&gt;
You may want to use a graphical IDE for your development work:&lt;br /&gt;
* [http://www.kdevelop.org/ KDevelop 4]&lt;br /&gt;
* [[Development/Tools/Eclipse|Eclipse]]&lt;br /&gt;
* [[/Using_an_IDE_with_KDE4|Using an IDE with KDE4]]&lt;br /&gt;
&lt;br /&gt;
== Contributing To KDE ==&lt;br /&gt;
Once you have a copy of KDE built you can then start contributing back to KDE.  The pages below will help you find out how you can help make KDE even better.&lt;br /&gt;
&lt;br /&gt;
[[Image:Action_tool.svg|right|32px]]&lt;br /&gt;
* [[Contribute|Contribute]]&lt;br /&gt;
* [[Contribute/Send_Patches|Send Patches]]&lt;br /&gt;
* [[Contribute/Bugsquad|Bugsquad]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build_KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build/Methods</id>
		<title>Getting Started/Build/Methods</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build/Methods"/>
				<updated>2011-06-04T09:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Deciding How To Build KDE Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting Started/Build/Methods}}&lt;br /&gt;
&lt;br /&gt;
== Deciding How To Build KDE Software ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software once it is built.&lt;br /&gt;
&lt;br /&gt;
You may want to:&lt;br /&gt;
* Develop a standalone application using the KDE Development Platform&lt;br /&gt;
* Develop one of the KDE Applications&lt;br /&gt;
* Develop the KDE Workspace or the KDE Platform&lt;br /&gt;
* Test the latest KDE Software or an earlier stable version&lt;br /&gt;
&lt;br /&gt;
In particular, for application development you may only need to use the KDE Development Platform stable packages from your distribution rather than building it all yourself.&lt;br /&gt;
&lt;br /&gt;
The tables below provide some guidance in making this decision.&lt;br /&gt;
&lt;br /&gt;
TODO: Complete these options.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;'''Usage'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot;&amp;gt;'''Method'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Developing an application outside of the KDE development infrastructure using the stable KDE Development Platform.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #FFEFD3&amp;quot;&amp;gt;'''Packaged Stable Release'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot; rowspan=2&amp;gt;Developing an application outside of the KDE development infrastructure using features from the unstable KDE Development Platform.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #FFFEE4&amp;quot;&amp;gt;'''Snapshot Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #9FD6D2&amp;quot;&amp;gt;'''Unstable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Developing an application in the KDE SC using the stable KDE Development Platform.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #D0ECEA&amp;quot;&amp;gt;'''Stable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Developing an application in the KDE SC using features in the unstable KDE Development Platform.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #9FD6D2&amp;quot;&amp;gt;'''Unstable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Developing the unstable KDE Development Platform.&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #9FD6D2&amp;quot;&amp;gt;'''Unstable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot;&amp;gt;'''Method'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;'''Description'''&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #FFEFD3&amp;quot;&amp;gt;'''Stable Release Packages'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Install a stable release of the KDE Development Platform from packages using your distributions standard software installer.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #FFEFD3&amp;quot;&amp;gt;'''Unstable Packages'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Install an unstable version of the KDE Development Platform using your distributions standard software installer.  Some distributions provide unstable packages for Nightly Snapshots, Weekly Snapshots, or unstable development releases.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #FFFEE4&amp;quot;&amp;gt;'''Snapshot Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Build a snapshot of the source code as at a given time or release from a tarball download.  These may be stable or unstable releases or nightly snapshots&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #D0ECEA&amp;quot;&amp;gt;'''Stable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Build a version of the source code for an official release directly from the source repository.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;25%&amp;quot; style=&amp;quot;background: #9FD6D2&amp;quot;&amp;gt;'''Unstable Source Build'''&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;75%&amp;quot;&amp;gt;Build the current unstable development code directly from the source repository.&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Build KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started"/>
				<updated>2011-06-04T09:05:54Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Building and Running KDE Software From Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started}} &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are many different ways to become involved in the KDE Community, ranging all the way from a simply using our software through to being a core platform developer.&lt;br /&gt;
&lt;br /&gt;
You can find more general information on getting involved in KDE at the following links:&lt;br /&gt;
* [http://kde.org/community/getinvolved/ Getting Involved in KDE]&lt;br /&gt;
* [[Contribute|Contribute to KDE]]&lt;br /&gt;
&lt;br /&gt;
This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community.  It will explain to you how KDE Software is structured and built, and how you can participate by building KDE for yourself.&lt;br /&gt;
&lt;br /&gt;
{{note|'''Quickstart:''' If you're impatient to get started without understanding the background then we recommend you use one of the available [[/Build#Scripted_Builds|Build Scripts]].}}&lt;br /&gt;
&lt;br /&gt;
== Using KDE Software ==&lt;br /&gt;
If you just want to use stable KDE software for your everyday computing needs, then you do not need to build KDE Software for yourself.  You should instead use the software installer provided by your Linux distribution to install KDE package.&lt;br /&gt;
&lt;br /&gt;
The best place to learn how to do this is through your distributions normal support channels, although you may find some useful information on the following pages:&lt;br /&gt;
* [http://www.kde.org/download/distributions.php Distributions shipping KDE]&lt;br /&gt;
* [[/Build/Distributions|Install KDE Software on Linux and BSD Distributions]]&lt;br /&gt;
* [[Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]&lt;br /&gt;
* Mac OS X does not currently have an installer available for KDE Software, but you can simplify building it by using [http://mac.kde.org/?id=build MacPorts or Fink]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
If you are looking for help in using the KDE Workspace or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase]. &lt;br /&gt;
&lt;br /&gt;
If you have any questions or problems with building or developing KDE Software please feel free to [[Development/Getting_Help|ask for help]].  However, be patient while waiting for a response, and try to work through the problem yourself, we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.&lt;br /&gt;
&lt;br /&gt;
== Building and Running KDE Software From Source ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software.  In particular if you are only wanting to build and develop a single application you may not need to build the entire KDE Development Platform to do so.  You can read more about this on the [[Getting_Started/Build/Methods|Build Methods page]].&lt;br /&gt;
&lt;br /&gt;
The following sections explain the steps you need to understand and give the instructions you need to follow to successfully build KDE Software from source:&lt;br /&gt;
&lt;br /&gt;
* [[/Sources|How the KDE Source Code is structured]]&lt;br /&gt;
* [[/Build|How to Build and Install the software]]&lt;br /&gt;
* [[/Run|How to Run the software]]&lt;br /&gt;
&lt;br /&gt;
== Development Model ==&lt;br /&gt;
TODO: General introduction to the dev model, release cycles, etc.&lt;br /&gt;
&lt;br /&gt;
* [[Schedules/Release_Schedules_Guide|The KDE Release Schedule]]&lt;br /&gt;
* [[Development/Software_Engineering_Framework|The KDE Software Engineering Framwork]]&lt;br /&gt;
* [[Policies|KDE Development Policies and Procedures to follow]]&lt;br /&gt;
* [[Policies/Application_Lifecycle|The development lifecycle for a new application]]&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
There are a number of [[Development/Tools|Development Tools]] that are either required or helpful when building KDE Software.  For these you will usually want to use the stable packages provided by your distribution.&lt;br /&gt;
&lt;br /&gt;
You may want to use a graphical IDE for your development work:&lt;br /&gt;
* [http://www.kdevelop.org/ KDevelop 4]&lt;br /&gt;
* [[Development/Tools/Eclipse|Eclipse]]&lt;br /&gt;
* [[/Using_an_IDE_with_KDE4|Using an IDE with KDE4]]&lt;br /&gt;
&lt;br /&gt;
== Contributing To KDE ==&lt;br /&gt;
Once you have a copy of KDE built you can then start contributing back to KDE.  The pages below will help you find out how you can help make KDE even better.&lt;br /&gt;
&lt;br /&gt;
[[Image:Action_tool.svg|right|32px]]&lt;br /&gt;
* [[Contribute|Contribute]]&lt;br /&gt;
* [[Contribute/Send_Patches|Send Patches]]&lt;br /&gt;
* [[Contribute/Bugsquad|Bugsquad]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build_KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started"/>
				<updated>2011-06-04T09:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Building and Running KDE Software From Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started}} &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are many different ways to become involved in the KDE Community, ranging all the way from a simply using our software through to being a core platform developer.&lt;br /&gt;
&lt;br /&gt;
You can find more general information on getting involved in KDE at the following links:&lt;br /&gt;
* [http://kde.org/community/getinvolved/ Getting Involved in KDE]&lt;br /&gt;
* [[Contribute|Contribute to KDE]]&lt;br /&gt;
&lt;br /&gt;
This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community.  It will explain to you how KDE Software is structured and built, and how you can participate by building KDE for yourself.&lt;br /&gt;
&lt;br /&gt;
{{note|'''Quickstart:''' If you're impatient to get started without understanding the background then we recommend you use one of the available [[/Build#Scripted_Builds|Build Scripts]].}}&lt;br /&gt;
&lt;br /&gt;
== Using KDE Software ==&lt;br /&gt;
If you just want to use stable KDE software for your everyday computing needs, then you do not need to build KDE Software for yourself.  You should instead use the software installer provided by your Linux distribution to install KDE package.&lt;br /&gt;
&lt;br /&gt;
The best place to learn how to do this is through your distributions normal support channels, although you may find some useful information on the following pages:&lt;br /&gt;
* [http://www.kde.org/download/distributions.php Distributions shipping KDE]&lt;br /&gt;
* [[/Build/Distributions|Install KDE Software on Linux and BSD Distributions]]&lt;br /&gt;
* [[Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]&lt;br /&gt;
* Mac OS X does not currently have an installer available for KDE Software, but you can simplify building it by using [http://mac.kde.org/?id=build MacPorts or Fink]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
If you are looking for help in using the KDE Workspace or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase]. &lt;br /&gt;
&lt;br /&gt;
If you have any questions or problems with building or developing KDE Software please feel free to [[Development/Getting_Help|ask for help]].  However, be patient while waiting for a response, and try to work through the problem yourself, we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.&lt;br /&gt;
&lt;br /&gt;
== Building and Running KDE Software From Source ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software.  In particular if you are only wanting to build and develop a single application you may not need to build the entire KDE Development Platform to do so.  You can read more about this on the [[Getting_Started/Build/Methods|Build Methods page]].&lt;br /&gt;
&lt;br /&gt;
The following sections explain the steps you need to understand and give the instructions you need to follow to successfully build KDE Software from source:&lt;br /&gt;
&lt;br /&gt;
* [[/Sources|Obtain the Source Code for the software]]&lt;br /&gt;
* [[/Build|Build and Install the software]]&lt;br /&gt;
* [[/Run|Run the software]]&lt;br /&gt;
&lt;br /&gt;
== Development Model ==&lt;br /&gt;
TODO: General introduction to the dev model, release cycles, etc.&lt;br /&gt;
&lt;br /&gt;
* [[Schedules/Release_Schedules_Guide|The KDE Release Schedule]]&lt;br /&gt;
* [[Development/Software_Engineering_Framework|The KDE Software Engineering Framwork]]&lt;br /&gt;
* [[Policies|KDE Development Policies and Procedures to follow]]&lt;br /&gt;
* [[Policies/Application_Lifecycle|The development lifecycle for a new application]]&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
There are a number of [[Development/Tools|Development Tools]] that are either required or helpful when building KDE Software.  For these you will usually want to use the stable packages provided by your distribution.&lt;br /&gt;
&lt;br /&gt;
You may want to use a graphical IDE for your development work:&lt;br /&gt;
* [http://www.kdevelop.org/ KDevelop 4]&lt;br /&gt;
* [[Development/Tools/Eclipse|Eclipse]]&lt;br /&gt;
* [[/Using_an_IDE_with_KDE4|Using an IDE with KDE4]]&lt;br /&gt;
&lt;br /&gt;
== Contributing To KDE ==&lt;br /&gt;
Once you have a copy of KDE built you can then start contributing back to KDE.  The pages below will help you find out how you can help make KDE even better.&lt;br /&gt;
&lt;br /&gt;
[[Image:Action_tool.svg|right|32px]]&lt;br /&gt;
* [[Contribute|Contribute]]&lt;br /&gt;
* [[Contribute/Send_Patches|Send Patches]]&lt;br /&gt;
* [[Contribute/Bugsquad|Bugsquad]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build_KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started/Build</id>
		<title>Getting Started/Build</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started/Build"/>
				<updated>2011-06-04T08:58:22Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Build and Install */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting Started/Build}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This page provides an overview of the KDE build process.  Once you complete the steps described here you will have a complete KDE development system customized to your needs.&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
This section will briefly explain the concepts and steps involved in building software so you are not being asked to blindly follow some recipes you do not understand.&lt;br /&gt;
&lt;br /&gt;
It is assumed you are at least familiar with the basics of using the command line.&lt;br /&gt;
&lt;br /&gt;
Once you have read the summary you can see a [[/Example|worked example here]].&lt;br /&gt;
&lt;br /&gt;
=== Source ===&lt;br /&gt;
&lt;br /&gt;
The ''Source'' step is obtaining a local copy of the source code that you want to build.  For a detailed explanation of where to obtain the source code and how KDE stores and organizes our source code please read the [[Getting_Started/Sources|KDE Sources section]].&lt;br /&gt;
&lt;br /&gt;
The two main options here are to either download a snapshot tarball of the code, or to directly access the source code repository.  For developing on the unstable branch of the KDE SC it is recommended you directly access the required repositories.&lt;br /&gt;
&lt;br /&gt;
=== Configure ===&lt;br /&gt;
&lt;br /&gt;
The ''Configure'' step is setting up how the source code is to be built and installed.&lt;br /&gt;
&lt;br /&gt;
=== Build ===&lt;br /&gt;
&lt;br /&gt;
The ''Build'' step is compiling the source code and linking it to other libraries to create the new executables and libraries.&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
The ''Install'' step is copy the new executables and libraries somewhere that they can be found and run from.&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
&lt;br /&gt;
The ''Update'' step is updating an existing build to use the latest version of the source code and then re-building and re-installing it.&lt;br /&gt;
&lt;br /&gt;
== Scripted Builds ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to build the KDE SC from scratch is to use one of the build scripts that are available.  This approach is highly recommended for those new to building KDE SC as it takes care of the Source, Configure, Build, Install and Update steps for you.  The builds remain compatible with the manual methods of building KDE SC so you can change later if you want.&lt;br /&gt;
&lt;br /&gt;
* The [[/kdesrc-build|kdesrc-bld]] script by Michael Pyne&lt;br /&gt;
* The [http://michael-jansen.biz/build-tool build-tool] script by Michael Jansen&lt;br /&gt;
&lt;br /&gt;
== Platform Specific Information ==&lt;br /&gt;
&lt;br /&gt;
The build process described in these pages is kept as simple and generic as possible, but it is generally assumed you are building KDE4 on Linux.  Extra information about building KDE Software on specific distributions or platforms, or under certain conditions can be found at the following links:&lt;br /&gt;
&lt;br /&gt;
* [[/Distributions|Linux, BSD and other *nix based distributions]]&lt;br /&gt;
* [[/Windows|Microsoft Windows]]&lt;br /&gt;
* [[/Mac_OS_X|Apple Mac OS X]]&lt;br /&gt;
* [[/KDE4/on_virtual_machines|On a Virtual Machine]].&lt;br /&gt;
* [[/Historic|Building historic versions of KDE Software (KDE3 and KDE2)]]&lt;br /&gt;
&lt;br /&gt;
== Stable versus Unstable ==&lt;br /&gt;
&lt;br /&gt;
A stable build is a released and supported version of KDE Software, such as KDE SC 4.6.  This software is guaranteed to remain unchanged other than bug-fixes.  You will want a Stable build if you want to use the KDE Software for normal use or to develop bug fixes.&lt;br /&gt;
&lt;br /&gt;
An unstable build is the latest development version of KDE Software and is not guaranteed to build or run properly at any given time.  You will want an Unstable build if you want to develop new features for KDE Software.&lt;br /&gt;
&lt;br /&gt;
In Git, the Unstable branch is called Master while in Subversion it is called Trunk.&lt;br /&gt;
&lt;br /&gt;
== Build and Install ==&lt;br /&gt;
&lt;br /&gt;
You need to complete each of the following steps to build and/or install a working KDE development system. Manually building KDE Software requires that you first set up the build environment and install the required development tools and libraries.&lt;br /&gt;
&lt;br /&gt;
* Choose the appropriate [[/Methods|Build Method]] for your requirements&lt;br /&gt;
* Set up your [[/Environment|Build Environment]]&lt;br /&gt;
* Choose the appropriate [[/Recipes|Build Recipes]] for your requirements and environment&lt;br /&gt;
* Install the [[/Requirements|Build Requirements]]&lt;br /&gt;
* Install or build [[/Qt|Qt]]&lt;br /&gt;
* Install or build [[/KDE_Support|KDE Support]]&lt;br /&gt;
* Install or build [[/KDE_Development_Platform|KDE Development Platform]]&lt;br /&gt;
* Install or build [[/KDE_Workspace|KDE Workspace]]&lt;br /&gt;
&lt;br /&gt;
These steps are yet to be completed:&lt;br /&gt;
* [[/KDE_Applications|Build KDE Applications]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting The Build ==&lt;br /&gt;
&lt;br /&gt;
Compile and Linking errors are frequent sources of discouragement. Make careful note of the first occurrence of an error in your build process. It could be as simple as a bad environment variable, an unexpected version of a library or missing prerequisite.  Please read the instructions carefully.&lt;br /&gt;
&lt;br /&gt;
Please review your logs and do searches for fixes. If you cannot find a solution, try the [[/Troubleshooting|Troubleshooting]] page.  If you still cannot resolve the problem then please [[Development/Getting_Help|ask for help]] on IRC or a Mailing List.&lt;br /&gt;
&lt;br /&gt;
[[Category:Build KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Getting_Started</id>
		<title>Getting Started</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Getting_Started"/>
				<updated>2011-06-04T08:55:43Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Building and Running KDE Software From Source */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{warning|These pages are currently being completely re-written to reflect the new KDE infrastructure and may not be in a consistent state.  Information and commands on some page may no longer be valid and should be used with care.}}&lt;br /&gt;
&lt;br /&gt;
{{Template:I18n/Language Navigation Bar|Getting_Started}} &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
There are many different ways to become involved in the KDE Community, ranging all the way from a simply using our software through to being a core platform developer.&lt;br /&gt;
&lt;br /&gt;
You can find more general information on getting involved in KDE at the following links:&lt;br /&gt;
* [http://kde.org/community/getinvolved/ Getting Involved in KDE]&lt;br /&gt;
* [[Contribute|Contribute to KDE]]&lt;br /&gt;
&lt;br /&gt;
This section of KDE TechBase is designed to help get you started in participating in the technical side of the KDE community.  It will explain to you how KDE Software is structured and built, and how you can participate by building KDE for yourself.&lt;br /&gt;
&lt;br /&gt;
{{note|'''Quickstart:''' If you're impatient to get started without understanding the background then we recommend you use one of the available [[/Build#Scripted_Builds|Build Scripts]].}}&lt;br /&gt;
&lt;br /&gt;
== Using KDE Software ==&lt;br /&gt;
If you just want to use stable KDE software for your everyday computing needs, then you do not need to build KDE Software for yourself.  You should instead use the software installer provided by your Linux distribution to install KDE package.&lt;br /&gt;
&lt;br /&gt;
The best place to learn how to do this is through your distributions normal support channels, although you may find some useful information on the following pages:&lt;br /&gt;
* [http://www.kde.org/download/distributions.php Distributions shipping KDE]&lt;br /&gt;
* [[/Build/Distributions|Install KDE Software on Linux and BSD Distributions]]&lt;br /&gt;
* [[Projects/KDE_on_Windows/Installation|Install KDE Software on Windows]]&lt;br /&gt;
* Mac OS X does not currently have an installer available for KDE Software, but you can simplify building it by using [http://mac.kde.org/?id=build MacPorts or Fink]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
If you are looking for help in using the KDE Workspace or KDE Applications then please visit the [http://userbase.kde.org/ KDE UserBase]. &lt;br /&gt;
&lt;br /&gt;
If you have any questions or problems with building or developing KDE Software please feel free to [[Development/Getting_Help|ask for help]].  However, be patient while waiting for a response, and try to work through the problem yourself, we aren't going to do it ''all'' for you.  Working your way through and understanding why something doesn't work is a good way to learn how to do things the right way.&lt;br /&gt;
&lt;br /&gt;
== Building and Running KDE Software From Source ==&lt;br /&gt;
&lt;br /&gt;
There are several possible ways to build and install KDE software and the method you choose depends on what you want to do with the software once it is built.  In particular if you are only wanting to build and develop a single application you may not need to build the entire KDE Development Platform to do so.  You can read more about this on the [[Getting_Started/Build/Methods|Build Methods page]].&lt;br /&gt;
&lt;br /&gt;
The following sections explain the steps you need to understand and give the instructions you need to follow to successfully build KDE Software from source:&lt;br /&gt;
&lt;br /&gt;
* [[/Sources|Obtain the Source Code for the software]]&lt;br /&gt;
* [[/Build|Build and Install the software]]&lt;br /&gt;
* [[/Run|Run the software]]&lt;br /&gt;
&lt;br /&gt;
== Development Model ==&lt;br /&gt;
TODO: General introduction to the dev model, release cycles, etc.&lt;br /&gt;
&lt;br /&gt;
* [[Schedules/Release_Schedules_Guide|The KDE Release Schedule]]&lt;br /&gt;
* [[Development/Software_Engineering_Framework|The KDE Software Engineering Framwork]]&lt;br /&gt;
* [[Policies|KDE Development Policies and Procedures to follow]]&lt;br /&gt;
* [[Policies/Application_Lifecycle|The development lifecycle for a new application]]&lt;br /&gt;
&lt;br /&gt;
== Development Tools ==&lt;br /&gt;
There are a number of [[Development/Tools|Development Tools]] that are either required or helpful when building KDE Software.  For these you will usually want to use the stable packages provided by your distribution.&lt;br /&gt;
&lt;br /&gt;
You may want to use a graphical IDE for your development work:&lt;br /&gt;
* [http://www.kdevelop.org/ KDevelop 4]&lt;br /&gt;
* [[Development/Tools/Eclipse|Eclipse]]&lt;br /&gt;
* [[/Using_an_IDE_with_KDE4|Using an IDE with KDE4]]&lt;br /&gt;
&lt;br /&gt;
== Contributing To KDE ==&lt;br /&gt;
Once you have a copy of KDE built you can then start contributing back to KDE.  The pages below will help you find out how you can help make KDE even better.&lt;br /&gt;
&lt;br /&gt;
[[Image:Action_tool.svg|right|32px]]&lt;br /&gt;
* [[Contribute|Contribute]]&lt;br /&gt;
* [[Contribute/Send_Patches|Send Patches]]&lt;br /&gt;
* [[Contribute/Bugsquad|Bugsquad]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Build_KDE]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute</id>
		<title>Contribute</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute"/>
				<updated>2011-05-30T14:16:18Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Reporting Bugs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Contribute}}&lt;br /&gt;
This page intends to give an overview of the different aspects of KDE development in particular for programming related issues. '''The KDE project welcomes anyone willing to help'''.&lt;br /&gt;
&lt;br /&gt;
{{note|There are a lot of ways to get involved in KDE development, which can be summed up in several categories:&lt;br /&gt;
:''Documentation, Translation, Development, Usability, Accessibility, Artwork, Promotion&lt;br /&gt;
'''Not a coder? See KDE's pages on [http://kde.org/community/getinvolved/ how to get involved] to see other ways you can help. Also see: [[Contribute/Bugsquad|Bugsquad]]!'''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== News and Mail Sources ==&lt;br /&gt;
The general direction of the KDE project is determined by those who do the work - there is no single high level plan for what KDE will look like in the future.&lt;br /&gt;
&lt;br /&gt;
If you want to find out what is currently happening, then there are a number of sources you might like to consider:&lt;br /&gt;
; [http://www.kde.org/mailinglists/ Mailing Lists]&lt;br /&gt;
: Probably the best way to find out what's going on in KDE development. Archives are available [http://lists.kde.org here]&lt;br /&gt;
&lt;br /&gt;
; [http://commitfilter.kde.org/ CommitFilter]&lt;br /&gt;
: Receive notification of commits to the KDE source code repositories in areas that interest you.&lt;br /&gt;
&lt;br /&gt;
; [http://commit-digest.org/ KDE Commit-Digest]&lt;br /&gt;
: Weekly summary of commits to projects in the KDE source code repositories.&lt;br /&gt;
&lt;br /&gt;
; [http://dot.kde.org/ The Dot]&lt;br /&gt;
: The KDE news site.&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to contribute to KDE is to [http://userbase.kde.org/Asking_Questions#Reporting_KDE_Bugs report any bugs] you find in KDE using the [https://bugs.kde.org/ KDE Bug Tracking System] (also known as Bugzilla).&lt;br /&gt;
&lt;br /&gt;
If the application you are using crashes then the Dr Konqi utility will appear and guide you through the process of reporting the crash.  Learn more by reading  [[Development/Tutorials/Debugging/How_to_create_useful_crash_reports|how to create useful crash reports]].&lt;br /&gt;
&lt;br /&gt;
== Getting Started with Coding ==&lt;br /&gt;
Getting started at coding for KDE is a matter of finding something to fix, and fixing it. You may want to consult the module overview to help find what you are looking for; once you have fixed something, you will want to send in a patch. If you do that a few times, you may want to apply for an SVN account so you can fix things directly.&lt;br /&gt;
* [[Contribute/List of KDE Modules|Module overview]]&lt;br /&gt;
* [[Contribute/Send Patches|Sending patches]]&lt;br /&gt;
* [[Contribute/Get a SVN Account|Applying for a KDE SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account|First steps with your new SVN account]]&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
KDE is mostly written in C++. If you are not familiar with C++, you should do at least some work on it. There are a number of good books on C++ - an excellent source is [http://mindview.net/Books/TICPP/ThinkingInCPP2e.html Bruce Eckel's &amp;quot;Thinking in C++&amp;quot;], which is available both as a free download and as a printed document. It isn't essential to understand everything before you start in KDE, but you do need to understand basic syntax and operations.&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
To become proficient with KDE coding, you should understand the Qt toolkit. If you are not familiar with Qt, you should work through the tutorials included with [http://doc.qt.nokia.com/latest Qt Reference Documentation].&lt;br /&gt;
&lt;br /&gt;
If you need a gentler introduction to Qt, or would just like an alternative view, then you may wish to look at the [http://qt4.digitalfanatics.org/tiqt/ The Independent Qt Tutorial] (Currently offline due to book contract).&lt;br /&gt;
&lt;br /&gt;
If you prefer to learn Qt by reading a traditional book, take a look at the  [http://qt.nokia.com/developer/books/ Books about Qt page]. More suggestions on becoming familiar with Qt4 are available [http://doc.qt.nokia.com/latest/how-to-learn-qt.html How to Learn Qt page]. &lt;br /&gt;
&lt;br /&gt;
=== KDE ===&lt;br /&gt;
A range of information on KDE techniques is available in the [[Development/Tutorials|tutorial section]]. Note that some of these tutorials still target KDE3, though they should be at least partly applicable.&lt;br /&gt;
&lt;br /&gt;
You will also find useful information on KDE coding in the [[Development/FAQs|FAQs]] section. This information may also be somewhat dated for KDE4, however much of it is broadly applicable, even outside KDE.&lt;br /&gt;
&lt;br /&gt;
You can also read [[Development/Further Information#Books|KDE coding books]].&lt;br /&gt;
&lt;br /&gt;
Last, but by no means least, KDE comes with extensive class (Application Programmer Interface) documentation. This is available in the&lt;br /&gt;
[[Development/Tutorials/API Documentation|KDE API Reference Manuals]] section, which also contains a number of useful links on how to write or update the class documentation. You can also generate these on your own machine, or refer to a more up-to-date online version at [http://api.kde.org/ API Reference].&lt;br /&gt;
&lt;br /&gt;
A more detailed description of the steps above is available in our [http://quality.kde.org/develop/howto/howtohack.php Programming Guide].&lt;br /&gt;
&lt;br /&gt;
== Getting Involved in Bug Hunting and Application Quality ==&lt;br /&gt;
&lt;br /&gt;
There is a large number of applications within KDE, and not all of them have a maintainer dedicated to managing bugs and generally helping out with all the issues associated with turning some working code into a polished application.&lt;br /&gt;
&lt;br /&gt;
If you are interested in helping out with KDE, but don't know where to start, becoming a member of the KDE Quality Team might appeal to you - see the [http://quality.kde.org Quality Team website] for more information. Note that you do not need any programming skills to become involved. In particular developers regularly publish so-called [http://community.kde.org/KDE/Junior_Jobs Junior Jobs] to encourage new contributions.&lt;br /&gt;
&lt;br /&gt;
Of course, you can become involved in bug hunting without being part of the KDE Quality Team - just create yourself an account on the KDE [http://bugs.kde.org bug tracking system], and start searching / sorting through the bugs. Again, you don't have to have programming skills - it helps the programmers enormously just to have a procedure that allows a bug to be consistently reproduced.&lt;br /&gt;
&lt;br /&gt;
The [[Contribute/Bugsquad|Bugsquad]] tries to keep track of bugs in KDE software and make sure that valid bugs are noticed by developers. You do not need any programming knowledge to be in the Bugsquad; in fact it is a great way to return something to the KDE community if you cannot program.&lt;br /&gt;
&lt;br /&gt;
==Getting Answers to Your Questions==&lt;br /&gt;
If your question concerns KDE development, your options are pretty much the same general user ones, with some modifications:&lt;br /&gt;
::* '''Read the Developer FAQ'''. Many common developer questions have been answered in the [[Development/FAQs|KDE Developer FAQ]]&lt;br /&gt;
::* '''Search/browse KDE websites'''. A lot of questions can also be answered from the KDE websites, and the documentation included on it. You can search all the KDE websites on the homepage. In addition, you can browse the [http://techbase.kde.org KDE TechBase website]. And if possible, help edit it for clarity, and use the talk page if something is unclear.&lt;br /&gt;
::* '''Search mailing lists'''. A lot of questions have already been answered on the KDE mailing lists, particular the lists kde-devel, kde2-porting, kde-core-devel, kde-games-devel, kfm-devel and koffice-devel. You can search these lists either at [http://lists.kde.org/ lists.kde.org]. You should always search for your answer before asking questions on the mailing lists. When you ask a question on a mailing list you are emailing thousands of people -- please do this only if the answer is not available through a simple search.&lt;br /&gt;
::* '''Search engines'''. Do not forget about your favorite search engine. One of the best search engines is Google. With Google you can also [http://groups.google.com/ search] the great bulk of Usenet news sites, which is also particularly helpful, especially for general programming and gcc-related questions.&lt;br /&gt;
::* '''Read the source code'''.  http://websvn.kde.org and https://projects.kde.org/ are available to help browse code. Read some commit logs and diffs for the code you might want to work with, It adds perspective.&lt;br /&gt;
::* '''Ask on KDE mailing lists'''. If you still do not have an answer, try asking your question on one of the KDE mailing lists listed above.&lt;br /&gt;
::::* For questions relating to core development or third-party KDE development, unless you are particularly interested in [http://konqueror.kde.org/ Konqueror], [http://www.koffice.org/ KOffice], games or Java development, your main choice is [mailto:kde-devel@kde.org kde-devel] [mailto:kde-devel-request@kde.org?subject=subscribe (subscribe)].&lt;br /&gt;
::::* For questions relating to Konqueror development, your main choice is [mailto:kfm-devel@kde.org kfm-devel] [mailto:kfm-devel@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to KOffice development, your main choice is [mailto:koffice-devel@kde.org koffice-devel] [mailto:koffice-devel-request@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to games development, your main choice is [mailto:kde-games-devel@kde.org kde-games-devel] [mailto:kde-games-devel-request@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to [http://qt.nokia.com/ Qt development], please use the fine [http://lists.trolltech.com/qt-interest/ Qt mailing list].&lt;br /&gt;
A full list of KDE mailing lists is available [http://www.kde.org/mailinglists/ here] and [http://mail.kde.org/mailman/listinfo here].&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Contribute</id>
		<title>Contribute</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Contribute"/>
				<updated>2011-05-30T14:09:23Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* News and Mail Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Contribute}}&lt;br /&gt;
This page intends to give an overview of the different aspects of KDE development in particular for programming related issues. '''The KDE project welcomes anyone willing to help'''.&lt;br /&gt;
&lt;br /&gt;
{{note|There are a lot of ways to get involved in KDE development, which can be summed up in several categories:&lt;br /&gt;
:''Documentation, Translation, Development, Usability, Accessibility, Artwork, Promotion&lt;br /&gt;
'''Not a coder? See KDE's pages on [http://kde.org/community/getinvolved/ how to get involved] to see other ways you can help. Also see: [[Contribute/Bugsquad|Bugsquad]]!'''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== News and Mail Sources ==&lt;br /&gt;
The general direction of the KDE project is determined by those who do the work - there is no single high level plan for what KDE will look like in the future.&lt;br /&gt;
&lt;br /&gt;
If you want to find out what is currently happening, then there are a number of sources you might like to consider:&lt;br /&gt;
; [http://www.kde.org/mailinglists/ Mailing Lists]&lt;br /&gt;
: Probably the best way to find out what's going on in KDE development. Archives are available [http://lists.kde.org here]&lt;br /&gt;
&lt;br /&gt;
; [http://commitfilter.kde.org/ CommitFilter]&lt;br /&gt;
: Receive notification of commits to the KDE source code repositories in areas that interest you.&lt;br /&gt;
&lt;br /&gt;
; [http://commit-digest.org/ KDE Commit-Digest]&lt;br /&gt;
: Weekly summary of commits to projects in the KDE source code repositories.&lt;br /&gt;
&lt;br /&gt;
; [http://dot.kde.org/ The Dot]&lt;br /&gt;
: The KDE news site.&lt;br /&gt;
&lt;br /&gt;
== Reporting Bugs ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to contribute to KDE is to report any bugs you find in KDE using the [https://bugs.kde.org/ KDE Bug Tracking System] (also known as Bugzilla).&lt;br /&gt;
&lt;br /&gt;
If the application you are using crashes then the Dr Konqi utility will appear and guide you through the process of reporting the crash.  Learn more by reading  [[Development/Tutorials/Debugging/How_to_create_useful_crash_reports|how to create useful crash reports]].&lt;br /&gt;
&lt;br /&gt;
== Getting Started with Coding ==&lt;br /&gt;
Getting started at coding for KDE is a matter of finding something to fix, and fixing it. You may want to consult the module overview to help find what you are looking for; once you have fixed something, you will want to send in a patch. If you do that a few times, you may want to apply for an SVN account so you can fix things directly.&lt;br /&gt;
* [[Contribute/List of KDE Modules|Module overview]]&lt;br /&gt;
* [[Contribute/Send Patches|Sending patches]]&lt;br /&gt;
* [[Contribute/Get a SVN Account|Applying for a KDE SVN Account]]&lt;br /&gt;
* [[Contribute/First Steps with your KDE SVN Account|First steps with your new SVN account]]&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
KDE is mostly written in C++. If you are not familiar with C++, you should do at least some work on it. There are a number of good books on C++ - an excellent source is [http://mindview.net/Books/TICPP/ThinkingInCPP2e.html Bruce Eckel's &amp;quot;Thinking in C++&amp;quot;], which is available both as a free download and as a printed document. It isn't essential to understand everything before you start in KDE, but you do need to understand basic syntax and operations.&lt;br /&gt;
&lt;br /&gt;
=== Qt ===&lt;br /&gt;
To become proficient with KDE coding, you should understand the Qt toolkit. If you are not familiar with Qt, you should work through the tutorials included with [http://doc.qt.nokia.com/latest Qt Reference Documentation].&lt;br /&gt;
&lt;br /&gt;
If you need a gentler introduction to Qt, or would just like an alternative view, then you may wish to look at the [http://qt4.digitalfanatics.org/tiqt/ The Independent Qt Tutorial] (Currently offline due to book contract).&lt;br /&gt;
&lt;br /&gt;
If you prefer to learn Qt by reading a traditional book, take a look at the  [http://qt.nokia.com/developer/books/ Books about Qt page]. More suggestions on becoming familiar with Qt4 are available [http://doc.qt.nokia.com/latest/how-to-learn-qt.html How to Learn Qt page]. &lt;br /&gt;
&lt;br /&gt;
=== KDE ===&lt;br /&gt;
A range of information on KDE techniques is available in the [[Development/Tutorials|tutorial section]]. Note that some of these tutorials still target KDE3, though they should be at least partly applicable.&lt;br /&gt;
&lt;br /&gt;
You will also find useful information on KDE coding in the [[Development/FAQs|FAQs]] section. This information may also be somewhat dated for KDE4, however much of it is broadly applicable, even outside KDE.&lt;br /&gt;
&lt;br /&gt;
You can also read [[Development/Further Information#Books|KDE coding books]].&lt;br /&gt;
&lt;br /&gt;
Last, but by no means least, KDE comes with extensive class (Application Programmer Interface) documentation. This is available in the&lt;br /&gt;
[[Development/Tutorials/API Documentation|KDE API Reference Manuals]] section, which also contains a number of useful links on how to write or update the class documentation. You can also generate these on your own machine, or refer to a more up-to-date online version at [http://api.kde.org/ API Reference].&lt;br /&gt;
&lt;br /&gt;
A more detailed description of the steps above is available in our [http://quality.kde.org/develop/howto/howtohack.php Programming Guide].&lt;br /&gt;
&lt;br /&gt;
== Getting Involved in Bug Hunting and Application Quality ==&lt;br /&gt;
&lt;br /&gt;
There is a large number of applications within KDE, and not all of them have a maintainer dedicated to managing bugs and generally helping out with all the issues associated with turning some working code into a polished application.&lt;br /&gt;
&lt;br /&gt;
If you are interested in helping out with KDE, but don't know where to start, becoming a member of the KDE Quality Team might appeal to you - see the [http://quality.kde.org Quality Team website] for more information. Note that you do not need any programming skills to become involved. In particular developers regularly publish so-called [http://community.kde.org/KDE/Junior_Jobs Junior Jobs] to encourage new contributions.&lt;br /&gt;
&lt;br /&gt;
Of course, you can become involved in bug hunting without being part of the KDE Quality Team - just create yourself an account on the KDE [http://bugs.kde.org bug tracking system], and start searching / sorting through the bugs. Again, you don't have to have programming skills - it helps the programmers enormously just to have a procedure that allows a bug to be consistently reproduced.&lt;br /&gt;
&lt;br /&gt;
The [[Contribute/Bugsquad|Bugsquad]] tries to keep track of bugs in KDE software and make sure that valid bugs are noticed by developers. You do not need any programming knowledge to be in the Bugsquad; in fact it is a great way to return something to the KDE community if you cannot program.&lt;br /&gt;
&lt;br /&gt;
==Getting Answers to Your Questions==&lt;br /&gt;
If your question concerns KDE development, your options are pretty much the same general user ones, with some modifications:&lt;br /&gt;
::* '''Read the Developer FAQ'''. Many common developer questions have been answered in the [[Development/FAQs|KDE Developer FAQ]]&lt;br /&gt;
::* '''Search/browse KDE websites'''. A lot of questions can also be answered from the KDE websites, and the documentation included on it. You can search all the KDE websites on the homepage. In addition, you can browse the [http://techbase.kde.org KDE TechBase website]. And if possible, help edit it for clarity, and use the talk page if something is unclear.&lt;br /&gt;
::* '''Search mailing lists'''. A lot of questions have already been answered on the KDE mailing lists, particular the lists kde-devel, kde2-porting, kde-core-devel, kde-games-devel, kfm-devel and koffice-devel. You can search these lists either at [http://lists.kde.org/ lists.kde.org]. You should always search for your answer before asking questions on the mailing lists. When you ask a question on a mailing list you are emailing thousands of people -- please do this only if the answer is not available through a simple search.&lt;br /&gt;
::* '''Search engines'''. Do not forget about your favorite search engine. One of the best search engines is Google. With Google you can also [http://groups.google.com/ search] the great bulk of Usenet news sites, which is also particularly helpful, especially for general programming and gcc-related questions.&lt;br /&gt;
::* '''Read the source code'''.  http://websvn.kde.org and https://projects.kde.org/ are available to help browse code. Read some commit logs and diffs for the code you might want to work with, It adds perspective.&lt;br /&gt;
::* '''Ask on KDE mailing lists'''. If you still do not have an answer, try asking your question on one of the KDE mailing lists listed above.&lt;br /&gt;
::::* For questions relating to core development or third-party KDE development, unless you are particularly interested in [http://konqueror.kde.org/ Konqueror], [http://www.koffice.org/ KOffice], games or Java development, your main choice is [mailto:kde-devel@kde.org kde-devel] [mailto:kde-devel-request@kde.org?subject=subscribe (subscribe)].&lt;br /&gt;
::::* For questions relating to Konqueror development, your main choice is [mailto:kfm-devel@kde.org kfm-devel] [mailto:kfm-devel@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to KOffice development, your main choice is [mailto:koffice-devel@kde.org koffice-devel] [mailto:koffice-devel-request@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to games development, your main choice is [mailto:kde-games-devel@kde.org kde-games-devel] [mailto:kde-games-devel-request@kde.org?subject=subscribe (subscribe)]&lt;br /&gt;
::::* For questions relating to [http://qt.nokia.com/ Qt development], please use the fine [http://lists.trolltech.com/qt-interest/ Qt mailing list].&lt;br /&gt;
A full list of KDE mailing lists is available [http://www.kde.org/mailinglists/ here] and [http://mail.kde.org/mailman/listinfo here].&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials/Printing_Print_Dialog</id>
		<title>Development/Tutorials/Printing Print Dialog</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials/Printing_Print_Dialog"/>
				<updated>2011-05-27T12:39:02Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: Created page with '== The mission ==  To display the Print Dialog and print a document.  KDE uses the Qt Printing infrastructure, but adds extra standard features to the Print Dialog, as well as al...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The mission ==&lt;br /&gt;
&lt;br /&gt;
To display the Print Dialog and print a document.&lt;br /&gt;
&lt;br /&gt;
KDE uses the Qt Printing infrastructure, but adds extra standard features to the Print Dialog, as well as allowing applications to add their own extensions.&lt;br /&gt;
&lt;br /&gt;
== The code ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code cppqt n&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui/QPainter&amp;gt;&lt;br /&gt;
#include &amp;lt;QtGui/QPrinter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KdePrintDialog&amp;gt;&lt;br /&gt;
#include &amp;lt;KPrintPreview&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;KApplication&amp;gt;&lt;br /&gt;
#include &amp;lt;KAboutData&amp;gt;&lt;br /&gt;
#include &amp;lt;KCmdLineArgs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
This prints Hello World on your printer&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    KAboutData aboutData( &amp;quot;test&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;1.0&amp;quot;, &amp;quot;test&amp;quot;,&lt;br /&gt;
                          KAboutData::License_GPL, &amp;quot;(c) 2006&amp;quot; );&lt;br /&gt;
    KCmdLineArgs::init( argc, argv, &amp;amp;aboutData );&lt;br /&gt;
    KApplication app;&lt;br /&gt;
&lt;br /&gt;
    KAction* m_printPreview = KStandardAction::printPreview(app, SLOT(slotFilePrintPreview()), actionCollection());&lt;br /&gt;
&lt;br /&gt;
    KHelloWorldPrintDialogWidget optionsWidget;&lt;br /&gt;
&lt;br /&gt;
    QPrinter printer;&lt;br /&gt;
    printer.setFullPage(true);&lt;br /&gt;
    QPrintDialog *printDialog = KdePrint::createPrintDialog(&amp;amp;printer, QList&amp;lt;QWidget*&amp;gt;() &amp;lt;&amp;lt; &amp;amp;yourOptionsWidget, this);&lt;br /&gt;
    printDialog.setWindowTitle(i18n(&amp;quot;Print Hello World&amp;quot;));&lt;br /&gt;
    if (printDialog.exec()) {&lt;br /&gt;
        QPainter painter;&lt;br /&gt;
        painter.begin(&amp;amp;printer);&lt;br /&gt;
        painter.drawText(100,100,&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
        if (optionsWidget.printMoreText()) {&lt;br /&gt;
        }&lt;br /&gt;
        painter.end(); &lt;br /&gt;
        // this makes the print job start&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class KHelloWorldPrintDialogWidget : public QWidget&lt;br /&gt;
{&lt;br /&gt;
    bool printMoreText();&lt;br /&gt;
    void setPrintMoreText(bool state);&lt;br /&gt;
&lt;br /&gt;
    setWindowTitle(i18n(&amp;quot;Your Options Tab Title&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void KHelloWorld::slotFilePrintPreview() {&lt;br /&gt;
    QPrinter printer;&lt;br /&gt;
    KPrintPreview printPreview(&amp;amp;printer);&lt;br /&gt;
    yourPrintDrawingRoutine(printer); // draws to the QPrinter&lt;br /&gt;
    printPreview.exec();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to compile ==&lt;br /&gt;
&lt;br /&gt;
=== CMakeLists.txt ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
find_package(KDE4 REQUIRED)&lt;br /&gt;
include_directories( ${KDE4_INCLUDES} )&lt;br /&gt;
kde4_add_executable(printhelloworld printtest.cpp)&lt;br /&gt;
target_link_libraries(printhelloworld ${${KDE4_KDECORE_LIBS} ${KDE4_KUTILS_LIBS} ${QT_QTGUI_LIBRARY})&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Make and Run ===&lt;br /&gt;
&lt;br /&gt;
Then do:&lt;br /&gt;
 cmake .&lt;br /&gt;
 make&lt;br /&gt;
 ./printhelloworld&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	<entry>
		<id>http://techbase.kde.org/Development/Tutorials</id>
		<title>Development/Tutorials</title>
		<link rel="alternate" type="text/html" href="http://techbase.kde.org/Development/Tutorials"/>
				<updated>2011-05-27T12:13:02Z</updated>
		
		<summary type="html">&lt;p&gt;Odysseus: /* Printing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:I18n/Language Navigation Bar|Development/Tutorials}}&lt;br /&gt;
&lt;br /&gt;
Tutorials are the fastest way of finding out what KDE will do for you, and how to do it. Here is a list of currently available tutorials '''for KDE4'''. Material for KDE3 and KDE2 is available on the bottom of this page.&lt;br /&gt;
&lt;br /&gt;
== Introduction To KDE 4 Programming ==&lt;br /&gt;
Are you interested in writing applications with KDE 4? This tutorial series is aimed at those completely new to KDE programming.&lt;br /&gt;
;[[Development/Tutorials/First program|Hello World]]&lt;br /&gt;
:''A preliminary introduction to the very basics of KDE4 programming''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KXmlGuiWindow|Creating the Main Window]]&lt;br /&gt;
:''This tutorial shows you the magic of an application's most important thing: The main window.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KActions|Using KActions]]&lt;br /&gt;
:''How to add actions to the menus and toolbars.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Saving and loading|Saving and Loading]]&lt;br /&gt;
:''Introduces the KIO library while adding loading and saving support to our application.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KCmdLineArgs|Command line arguments]]&lt;br /&gt;
:''Adds the ability to specify which file to open from the command line to our text editor.''&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
;[[Development/Tutorials/KDE4 Porting Guide|Porting Your Application]]&lt;br /&gt;
:''Help Porting Applications from Qt3/KDE3 to Qt4/KDE4''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/CMake|Introduction to CMake]]&lt;br /&gt;
:''How to use the CMake build system used by KDE4.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Common Programming Mistakes|Common Programming Mistakes]]&lt;br /&gt;
:''Various common mistakes made while developing Qt and KDE applications and how to avoid them.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging Linker Errors|Debugging Linker Errors]]&lt;br /&gt;
:'How to understand and debug errors from the linker, at compile time.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Designer|Using Qt Designer to build user interfaces]]&lt;br /&gt;
:''How to create UI files with designer, and how to integrate them into a KDE program.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using Qt Creator|Using Qt Creator to develop your KDE program]]&lt;br /&gt;
:''How to integrate Qt Creator use into KDE development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Creating Libraries|Creating Libraries to share code]]&lt;br /&gt;
:''How to add the library to the buildsystem and how to prepare the source code.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Session_Management|Session Management]]&lt;br /&gt;
:''Make your application aware of X sessions''&lt;br /&gt;
&lt;br /&gt;
== Testing And Debugging ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Debugging|Debugging your application]]&lt;br /&gt;
:''Tips, tools and techniques to apply when debugging your KDE application''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Unittests|Writing Unittests for Qt4 and KDE4 with QTestLib]] ([http://developer.kde.org/documentation/tutorials/writingunittests/writingunittests.html Original link])&lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to write unit tests using the QTestLib framework. It is presented as an example based tutorial, and is still under development.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Code_Checking|Semi-automatic ways to detect code errors]]&lt;br /&gt;
:''Techniques you can use to detect errors in KDE code''&lt;br /&gt;
&lt;br /&gt;
== Managing Configuration Data With KConfig ==&lt;br /&gt;
;[[Development/Tutorials/KConfig|Introduction To KConfig]]&lt;br /&gt;
:''An overview of the KConfig classes and how to use them in your application code''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Using KConfig XT|Using KConfig XT]]&lt;br /&gt;
:''Tutorial on how to efficiently use the KConfig XT framework.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Updating KConfig Files|Updating KConfig Files]]&lt;br /&gt;
:''Tutorial on how to write an update script to keep changes in your application's config file format in sync with the user's already existing config file''&lt;br /&gt;
&lt;br /&gt;
== Services: Applications and Plugins ==&lt;br /&gt;
;[[Development/Tutorials/Services/Introduction|Introduction to the Services Framework]]&lt;br /&gt;
:''An overview of the services framework in KDE and what it provides the application developer. Covers the system configuration cache (SyCoCa), the source data files and what the indexed information can be used for.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Traders|Finding Services Using Trader Queries]]&lt;br /&gt;
:''How to find services, such as plugins or mimetypes, that are indexed in the SyCoCa using Trader Query Syntax''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Services/Plugins|Creating and Loading Plugins Using KService]]&lt;br /&gt;
:''Learn how to define custom plugin types, find installed plugins (including 3rd party plugins) and load them in an easy and portable fashion using KService.''&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
See also [[Localization|Localization portal]].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Localization/Unicode|Introduction To Unicode]]&lt;br /&gt;
:''An introduction to what Unicode is as well as how to handle Unicode data in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n|Writing Applications With Localization In Mind]]&lt;br /&gt;
:''This tutorial covers what localization is, why it's important and how to ensure your application is ready to be localized. A must read for all application developers.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Mistakes|Avoiding Common Localization Pitfalls]]&lt;br /&gt;
:''There are several common mistakes that prevent applications from being properly localized. Find out what they are and how to easily avoid them in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/Building KDE's l10n Module|Building KDE's Localization Module]]&lt;br /&gt;
:''Building and installing language support from KDE's localization (l10n) module is a good idea for those working on applications in the main KDE repository. Doing so will allow you to test your application in another language and spot problem areas. Learn how to do just that in this tutorial.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Build Systems|Incorporating i18n Into the Build System]]&lt;br /&gt;
:''Once your application is ready to be localized, the next step is to ensure that translation files are built automatically and kept up to date. This tutorial covers the necessary CMakeFiles.txt additions as well the process of distributing the resulting message catalogs with your application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Challenges|Common i18n Challenges and Solutions]]&lt;br /&gt;
:''This tutorial covers challenges that you may eventually run into such as translating handbooks and other data that exists outside of the source code, merging and handling obsolete .po files, dealing with freezes, coding in languages other than English and creating independent releases of or moving applications between KDE modules.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n_Semantics|Semantic Markup of Messages]]&lt;br /&gt;
:''To ensure consistent presentation and more meaningful representations of messages in applications, semantic markup can be applied to messages marked for translation using the KUIT system. This tutorial describes how this system works.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Localization/i18n Krazy|Automated i18n Code Checking]]&lt;br /&gt;
:''The Krazy code checker scans KDE's code and reports common i18n mistakes.''&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/API_Documentation|API Documentation]]&lt;br /&gt;
:''This tutorial explains how to document your APIs properly.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Man_Pages|Man Pages]]&lt;br /&gt;
:''Writing and Generating Reference Manual Pages.''&lt;br /&gt;
&lt;br /&gt;
;Source Code&lt;br /&gt;
: http://websvn.kde.org&lt;br /&gt;
&lt;br /&gt;
== Accessibility ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Accessibility|Accessibility]]&lt;br /&gt;
:''This tutorial will explain how to make your application accessible.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Text-To-Speech|Text-To-Speech]]&lt;br /&gt;
:''How to utilize Jovie text-to-speech service in your application.''&lt;br /&gt;
&lt;br /&gt;
== Application Automation and Scripting ==&lt;br /&gt;
&lt;br /&gt;
=== D-Bus ===&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Introduction|Introduction to D-Bus]]&lt;br /&gt;
:''A straight-forward introduction to the core concepts in D-Bus from an application developer's perspective, this tutorial covers what D-Bus is and how it can be used by applications.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Accessing Interfaces|Accessing D-Bus Interfaces]]&lt;br /&gt;
:''A step-by-step guide to calling D-Bus methods and connecting to D-Bus signals using QtDBus.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Intermediate_D-Bus|Intermediate D-Bus]]&lt;br /&gt;
:''Tips to make use of QtDBus when faced with problematic real-world interfaces.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Creating Interfaces|Creating D-Bus Interfaces]]&lt;br /&gt;
:''Learn how to expose functionality in your application by creating and using custom D-Bus interfaces. Covers generating the XML descriptions, instantiating interfaces at run time and setting up the build system with CMake.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/CustomTypes|Using Custom Types with D-Bus]]: ''Learn how to use your own types in classes exported on D-Bus. Covers marhaling and unmarshaling of objects, the integration of custom types into XML descriptions and registering the custom types with the Qt Meta Object system.''&lt;br /&gt;
; [[Development/Tutorials/D-Bus/Autostart Services|D-Bus Autostart Services]]&lt;br /&gt;
:''Turn your application into a D-Bus autostart service with this tutorial. This D-Bus feature, also known as &amp;quot;D-Bus service activation&amp;quot;, will ensure that even when your application isn't running that D-Bus calls made to it will work by relying on the D-Bus daemon itself to start your app if and when needed.''&lt;br /&gt;
; [[Development/Tutorials/Porting_to_D-Bus|Porting from DCOP to D-Bus]]&lt;br /&gt;
: ''Port your applications from DCOP to D-Bus with this handy guide.''&lt;br /&gt;
&lt;br /&gt;
=== Konqueror ===&lt;br /&gt;
; [[Development/Tutorials/Creating Konqueror Service Menus|Creating Konqueror Service Menus]]&lt;br /&gt;
:''This tutorial shows you how to create mimetype-specific actions in Konqueror's context menu (aka &amp;quot;servicemenus&amp;quot;).''&lt;br /&gt;
&lt;br /&gt;
=== Kross ===&lt;br /&gt;
; [[Development/Tutorials/Kross/Introduction|Introduction to Kross]]&lt;br /&gt;
:''An introduction to the Kross Scripting Framework.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Hello_World|Hello World]]&lt;br /&gt;
:''A first application with working kross code.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Call_Functions_in_Kross|Calling Functions in Kross]]&lt;br /&gt;
:''Simple demonstration of calling scripting functions''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Connecting_Signals_and_slots_in_Kross|Connecting Signals and Slots in Kross]]&lt;br /&gt;
:''Simple demonstration of connecting object signals with script slots''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Scripts-as-Plugins|Scripts as Plugins with Kross]]&lt;br /&gt;
:''This tutorial provides a step-by-step introduction how to integrate scripts as plugins into a KDE application.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/Script-Actions|Placing script actions in your application menus ]]&lt;br /&gt;
:''Simple demonstration on how to extend you application menus to execute script files.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Kross/ActionCollections|How to use an ActionCollection ]]&lt;br /&gt;
:''A small Tutorial on How to use Kross::ActionCollections.''&lt;br /&gt;
{{:KOffice/Plugin Tutorials}}&lt;br /&gt;
&lt;br /&gt;
=== SuperKaramba ===&lt;br /&gt;
; [[Development/Tutorials/SuperKaramba|SuperKaramba Tutorial]]&lt;br /&gt;
:''This tutorial provides an overview of SuperKaramba, theme files and scripting with Python, Ruby and JavaScript.''&lt;br /&gt;
&lt;br /&gt;
=== System Activity ===&lt;br /&gt;
&lt;br /&gt;
: [[Development/Tutorials/SystemActivity/Scripting|Writing script actions for the process's context menu]]&lt;br /&gt;
:''This tutorial shows how to add a context menu action to show custom information about a process.&lt;br /&gt;
&lt;br /&gt;
== Plugins and KParts ==&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing kontact plugins|Writing kontact plugins]]:''Kontact plugins are KParts. This tutorial describes how you can write one.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Using KParts|Using KParts]]:''Learn how to load a KPart into an application window.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing Qt Designer Plugins|Writing Qt Designer Plugins]]:''Add your widgets to Qt Designer and thus make them usable in UI files.''&lt;br /&gt;
&lt;br /&gt;
== Search and Metadata ==&lt;br /&gt;
&lt;br /&gt;
=== Strigi ===&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Writing file analyzers|Writing file analyzers]]&lt;br /&gt;
:''File analyzers extract data from files to display in the file dialogs and file managers. The data gathered this way is also used to search for files. KDE4 allows the use of multiple analyzers per file type. This tutorial describes how you can write new analyzers.''&lt;br /&gt;
&lt;br /&gt;
=== [http://nepomuk.kde.org Nepomuk] ===&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Metadata/Nepomuk|Nepomuk tutorials]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware Awareness (Solid) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Tutorials|Introduction to Solid]]&lt;br /&gt;
:''An introduction to using the Solid hardware discovery and interaction system in KDE applications.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Network_Tutorial|Accessing Network Information]]&lt;br /&gt;
:''How to use the Solid system to get information about the network''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Solid_Device_Actions|Creating a Device Action]]&lt;br /&gt;
:''When your application is interested in registering actions with the system for removable hardware''&lt;br /&gt;
&lt;br /&gt;
== Authorization and Privilege escalation (KAuth) ==&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Basics|KAuth Basics]]&lt;br /&gt;
:''An overview of concepts and basic knowledge required to understand and use KAuth effectively''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KAuth_Actions|Using KAuth actions in your application]]&lt;br /&gt;
:''How to execute KAuth actions in your application, and how to integrate them tightly into your UI''&lt;br /&gt;
; [[Development/Tutorials/KAuth/Helper_HowTo|Creating a KAuth helper to perform a privileged action]]&lt;br /&gt;
:''You will learn how to use KAuth's helpers and escalation facilities, and how to seamlessly make a privileged and non privileged portion of your application interact''&lt;br /&gt;
; [[Development/Tutorials/KAuth/KCM_HowTo|Creating a KCM requiring authorization upon saving]]&lt;br /&gt;
:''Learn how to use the high level KCModule API to create KCModules handling authorization, and its UI integration, on their own''&lt;br /&gt;
&lt;br /&gt;
== Multimedia (Phonon) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Introduction|Phonon]]&lt;br /&gt;
:''How to start with the multimedia API''&lt;br /&gt;
&lt;br /&gt;
:''How to compile and use Phonon and its GStreamer backend on Linux using Qt 4.3.x''&lt;br /&gt;
::''This article gives you a quick brief of how you can use checkout, compile Phonon and its GStreamer backend on GNU/Linux with just Qt 4.3.x. Towards the end, the article also describes how a developer can make use of Phonon to create simple audio and video players. You can read the article [http://www.vcreatelogic.com/oss/docs/CompilingPhononOnLinux.pdf here]. You can download the editable OpenDocumentText file from [http://www.prashanthudupa.com/phonon/CompilingPhononOnLinux.odt here].''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Phonon/Backends|Writing Backends]]&lt;br /&gt;
:''How to start creating a new backend for the multimedia API''&lt;br /&gt;
&lt;br /&gt;
;Resources&lt;br /&gt;
:''Please have a look at the [http://api.kde.org/kdesupport-api/kdesupport-apidocs/phonon-git/html/ online documentation] for information on the Phonon API. If you prefer using Qt Assistant or Qt Creator you can also use our [http://mts.ms/phonon-4.4.2.qch offline documentation].''&lt;br /&gt;
&lt;br /&gt;
== Plasma ==&lt;br /&gt;
&lt;br /&gt;
See [[Development/Tutorials/Plasma|Plasma tutorials]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Personal Information Management (Akonadi) ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Application|Using Akonadi in Applications]]&lt;br /&gt;
:''Displaying and modifying data provided by Akonadi''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/Resources|Developing Akonadi Resources]]&lt;br /&gt;
:''Akonadi Resources are agent programs which transport PIM data between Akonadi and a backend (files, servers, etc)''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Akonadi/SerializerPlugin|Using custom data types with Akonadi]]&lt;br /&gt;
:''Akonadi can handle arbitrary data as item payloads through the use of a plugin based serialization framework''&lt;br /&gt;
&lt;br /&gt;
;[[Development/AkonadiPorting|Porting Applications which use KResource API]]&lt;br /&gt;
:''Applications using KDE's now deprecated KResource APIs, e.g. KABC or KCal, need to be ported to use their Akonadi equivalents''&lt;br /&gt;
&lt;br /&gt;
== Kate / Kwrite ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor Plugins|Getting started with KTextEditor plugins]]&lt;br /&gt;
:''Creating your first KTextEditor plugin''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Plugins_Advanced|Developing a plugin with configuration dialog]]&lt;br /&gt;
:''Adding a configuration dialog to the Time &amp;amp; Date example''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Kate/KTextEditor_Example|A small Editor]]&lt;br /&gt;
:''Create a small application using KTextEditor''&lt;br /&gt;
&lt;br /&gt;
== KDevelop ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/KDevelop-PG-Qt_Introduction|KDevelop-PG-Qt Introduction]]&lt;br /&gt;
:''Information on the KDevelop parser generator, useful for language plugins.''&lt;br /&gt;
&lt;br /&gt;
==Printing==&lt;br /&gt;
&lt;br /&gt;
KDE mostly uses the [http://doc.qt.nokia.com/latest/printing.html Qt Printing infrastructure].&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Hello World|Hello World]]&lt;br /&gt;
:''Introduction to the KDE printing system''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Printing Print Dialog|Print Dialog]]&lt;br /&gt;
:''Using the KDE print dialog''&lt;br /&gt;
&lt;br /&gt;
== kioslaves ==&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Using KIO Slaves in your Program|Using kioslaves in your Program]]&lt;br /&gt;
* [[Development/Tutorials/KIO Slaves/Hello World|Creating a Hello-World kioslave]]&lt;br /&gt;
&lt;br /&gt;
== Collaboration ==&lt;br /&gt;
&lt;br /&gt;
=== Open Collaboration Services (libattica) ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/Attica/Introduction|Introduction to Attica]]&lt;br /&gt;
:''In this tutorial a simple widget showing information about a Person on the server is created.''&lt;br /&gt;
&lt;br /&gt;
=== Get Hot New Stuff  ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Introduction|Get Hot New Stuff 3 - Download]] &lt;br /&gt;
:''How to use KHotNewStuff3 in your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Updates|Get Hot New Stuff 3 - Checking for Updates]] &lt;br /&gt;
:''How to check if updates for installed stuff are available without showing the dialog/widget.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Collaboration/HotNewStuff/Upload|Get Hot New Stuff 3 - Upload]] &lt;br /&gt;
:''How to add an upload dialog to your application.''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old links for KNS2 and KNS1 content:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/K Hot New Stuff2|Introduction to Get Hot New Stuff 2]] &lt;br /&gt;
:''A short tutorial about how to use KHotNewStuff2 in your application. Deprecated, use version 3'' &lt;br /&gt;
;[[Development/Tutorials/Introduction to Get Hot New Stuff|Introduction to Get Hot New Stuff]] &lt;br /&gt;
:''An introduction to the developer-friendly network update system that allows KDE applications to fetch new application data at runtime in a user friendly manner.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KNewStuffSecure|KNewStuff Secure]] ([http://developer.kde.org/documentation/tutorials/knewstuffsecure/index.html Original Link]) &lt;br /&gt;
:''Tutorial showing how to share resources in a secured way (KDE 3.4 and later).'' By András Mantia &amp;amp;lt;amantia@kde.org&amp;amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Goya ==&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage|Introduction to Goya usage]]&lt;br /&gt;
:''An introduction for the Goya subsystem usage, which allows you to easily add widgets to your itemviews and connect their signals to your code, as they were real widgets.''&lt;br /&gt;
&lt;br /&gt;
; [[Development/Tutorials/Introduction to Goya usage 2|Introduction to Goya usage (part 2)]]&lt;br /&gt;
:''The second part of the tutorial, with a slightly more complex example than the first part.''&lt;br /&gt;
&lt;br /&gt;
== Other programming languages ==&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
;[http://www.learningpython.com/2008/09/20/an-introduction-to-pyqt/ An Introduction to PyQt]&lt;br /&gt;
:''Starting off''&lt;br /&gt;
&lt;br /&gt;
;[http://lateral.netmanagers.com.ar/stories/BBS47.html PyQt by Example]&lt;br /&gt;
:''Another introduction to PyQt''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_WebKit_Tutorial|PyKDE WebKit Tutorial]]&lt;br /&gt;
:''A simple web browser application in PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Python introduction to signals and slots|101 Introduction to signals and slots]]&lt;br /&gt;
:''A simple introduction to Qt's signal and slot architecture.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_DBus_Tutorial|PyKDE DBus Tutorial]]&lt;br /&gt;
:''An introduction to DBus communication using PyKDE''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Python/PyKDE_Knotify_Tutorial|PyKDE KNotify Tutorial]]&lt;br /&gt;
:''An introduction to Knotify (Notifications and KJobs) using PyKDE''&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
;[http://developer.kde.org/language-bindings/ruby/kde3tutorial/index.html KDE Ruby Korundum tutorial]&lt;br /&gt;
:''A ruby version of Antonio Larrosa Jim&amp;amp;eacute;nez's KDE tutorial by Richard Dale. See the [[Development/Languages/Ruby|Ruby Developers Corner]] for Qt tutorials and other info.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Qt4_Ruby_Tutorial|Qt4 Ruby Tutorial]]&lt;br /&gt;
:''Nokia's fabulous introductory tutorial to Qt, translated to Ruby.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Plasma/RubyApplet|Creating a Plasma Widget in Ruby]]&lt;br /&gt;
:''Tutorial that shows how to create your first Plasma Applet using the Ruby language.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Developing_Qt4_Applications_using_Qt_Designer_and_Ruby_on_Kubuntu|Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu]]&lt;br /&gt;
:''Tutorial that shows how to design a simple User Interface in Qt Designer and then use the resulting widget in a Qt Ruby application we build from scratch.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Languages/Ruby/Ruby-Qt/KDE_Book|Ruby-Qt/KDE Book]]&lt;br /&gt;
:''There is also an approach to create an Ruby-Qt/KDE Book under a free license. The content will be created in this wiki.''&lt;br /&gt;
&lt;br /&gt;
=== Shell ===&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Shell_Scripting_with_KDE_Dialogs|Shell Scripting with KDE dialogs]] ([http://developer.kde.org/documentation/tutorials/kdialog/t1.html Original Link]) &lt;br /&gt;
:''Tutorial by [mailto:bradh@frogmouth.net Brad Hards] that describes how to use KDE dialogs in shell scripts with kdialog. It is presented as an example based tutorial.''&lt;br /&gt;
&lt;br /&gt;
== Graphics Programming ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/Graphics/Performance|QPainter Perfomance]]&lt;br /&gt;
:''Hints on avoiding common mistakes leading to poor performance when using QPainter''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE Games Libraries ==&lt;br /&gt;
;[[Development/Tutorials/Games/KStandardGameAction| KStandardGameAction]]&lt;br /&gt;
:''Using libkdegames to make your game fit the kdegames standard''&lt;br /&gt;
;[[Development/Tutorials/Games/Highscores| Highscores]]&lt;br /&gt;
:''Implementing a simple highscore table into your game''&lt;br /&gt;
;[[Development/Tutorials/Games/Theme Selector| Theme Selector]]&lt;br /&gt;
:''Using the libkdegames theme selection dialog''&lt;br /&gt;
;[[Development/Tutorials/Games/Palapeli Patterns| Palapeli Slicers]]&lt;br /&gt;
:''Creating a slicer plugin for Palapeli''&lt;br /&gt;
&lt;br /&gt;
=== KGLEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/kglengine/kglengine-simpleBox| installation and your first KGLItem]]&lt;br /&gt;
:''start your first kglengine application''&lt;br /&gt;
;[[Development/Tutorials/Games/KGLEngine2d| kglpong]]&lt;br /&gt;
:''Now use our knowledge to make a pong''&lt;br /&gt;
&lt;br /&gt;
=== KALEngine ===&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine| Play hello word sound]]&lt;br /&gt;
:''Using KALEngine for games sound development using openAL''&lt;br /&gt;
;[[Development/Tutorials/Games/KALEngine-music| Play music]]&lt;br /&gt;
:''Using KALEngine to play music in a stream''&lt;br /&gt;
&lt;br /&gt;
== Using the KDE PIM Libraries ==&lt;br /&gt;
;[[Development/Tutorials/PIM/ical| iCalendar functionality]]&lt;br /&gt;
:''Using kcal to manage iCalendar files''&lt;br /&gt;
&lt;br /&gt;
== Other tutorials ==&lt;br /&gt;
&lt;br /&gt;
=== 2D Plotting (KPlotWidget) ===&lt;br /&gt;
;[[Development/Tutorials/KPlotWidget|Using the KDE data-plotting widget]]&lt;br /&gt;
:''This tutorial introduces KPlotWidget, which is used for 2-D data plotting.  It includes information on simple usage of the widget (including adding and modifying data sets, and customizing the plot axes and labels), and advanced customization (including extending the widget through sub-classing).''&lt;br /&gt;
&lt;br /&gt;
=== Spelling and Grammar Checking (Sonnet) ===&lt;br /&gt;
;[[Development/Tutorials/Sonnet/SonnetTutorial|Adding spell-checking or grammar-checking to KDE applications]]&lt;br /&gt;
:''This tutorial introduces Sonnet and how one may use it to add language correction to your KDE application. Sonnet's auxiliary features shall be described in a separate tutorial.''&lt;br /&gt;
&lt;br /&gt;
=== Pixmap cache (KPixmapCache) ===&lt;br /&gt;
;[[Development/Tutorials/KPixmapCache|Using the KDE pixmap cache]]&lt;br /&gt;
:''This tutorial shows how to use KPixmapCache to cache e.g. pixmaps generated from SVGs or some data.''&lt;br /&gt;
&lt;br /&gt;
=== Using MarbleWidget (Marble) ===&lt;br /&gt;
;[[Development/Tutorials/MarbleWidget|Using MarbleWidget]]&lt;br /&gt;
:''This short tutorial describes how to use the MarbleWidget in your project''&lt;br /&gt;
&lt;br /&gt;
=== Using local SCM for KDE development ===&lt;br /&gt;
;[[Development/Git|Using Git to develop for KDE]]&lt;br /&gt;
:''Here you find how to use Git to develop for KDE''&lt;br /&gt;
&lt;br /&gt;
=== Kwin effect tutorial (blog) ===&lt;br /&gt;
;[http://blog.martin-graesslin.com/blog/?p=258 blog by Martin Graesslin]&lt;br /&gt;
:''This tutorial guides you through the development of a simple KWin effect''&lt;br /&gt;
&lt;br /&gt;
=== Implementing KSysGuard sensors and adding them ===&lt;br /&gt;
;[[Development/Tutorials/Sensors]]&lt;br /&gt;
:''This tutorial shows how to write and KSysGuard sensor and connect it to the systray.''&lt;br /&gt;
Runners&lt;br /&gt;
&lt;br /&gt;
=== Porting an application from KSystemTrayIcon to KStatusNotifierItem ===&lt;br /&gt;
;[[Development/Tutorials/PortToKStatusNotifierItem]]&lt;br /&gt;
:''This tutorials shows how to port an application using KSystemTrayIcon to KStatusNotifierItem''&lt;br /&gt;
&lt;br /&gt;
=== Using the KDE Wallet API for safe storage ===&lt;br /&gt;
;[[Development/Tutorials/KWallet]]&lt;br /&gt;
:&amp;quot;Brief introduction to the KWallet API which can be used for storing all kinds of sensitive information.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== KDE2 and KDE3 Materials ==&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE3|KDE3 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE3.''&lt;br /&gt;
&lt;br /&gt;
;[[Development/Tutorials/KDE2|KDE2 Tutorials]]&lt;br /&gt;
:''These tutorials cover topics related to KDE2.''&lt;br /&gt;
&lt;br /&gt;
[[Category:KDE4]]&lt;/div&gt;</summary>
		<author><name>Odysseus</name></author>	</entry>

	</feed>