<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Connecting the dots... &#187; svn</title>
	<atom:link href="http://blog.rajatpandit.com/tag/svn/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rajatpandit.com</link>
	<description>Thoughts on Web Development, Infrastructure and Application Scalability</description>
	<lastBuildDate>Thu, 29 Dec 2011 13:21:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Setting up Trac, SVN and Agilo on RHEL 5.x</title>
		<link>http://blog.rajatpandit.com/2011/12/23/setting-up-trac-svn-and-agilo-on-rhel-5-x/</link>
		<comments>http://blog.rajatpandit.com/2011/12/23/setting-up-trac-svn-and-agilo-on-rhel-5-x/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 09:06:14 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Devops]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agilo]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://blog.rajatpandit.com/?p=709</guid>
		<description><![CDATA[As part of yet another transformational project I am about to start from the very scratch. This time right from setting up the agile project management tools. I decided to...]]></description>
			<content:encoded><![CDATA[<p>As part of yet another transformational project I am about to start from the very scratch. This time right from setting up the agile project management tools. I decided to go with <a href="http://trac.edgewall.org">trac</a> (running <a href="http://www.agilofortrac.com/">agilo</a> on top of it) for the agile delivery, svn for code versioning. This combination works very well together because:</p>
<ul>
<li>You can have your product backlog, sprint backlog and tasks all in one place</li>
<li>Agilo manage your backlogs and provide fancy metrics of how your sprint is doing</li>
<li>SVN ties well into trac which means you can tie commits back into sprint tasks, which means you have a traceability matrix of the tasks/defects and the code changes made to close it</li>
<li>Trac also helps you manage a milestone so you can have a high-level view of how you are doing against your deadlines to meet a milestone</li>
</ul>
<p>You can read more about them here <a href="http://www.agilofortrac.com/en/features/">Agilo</a> and <a href="http://trac.edgewall.org/wiki/TracFeatures">Trac</a><br />
<a href="http://blog.rajatpandit.com/wp-content/uploads/2011/12/Agilo_for_Scrum_Open_Source_Scrum_Tool.jpg"><img src="http://blog.rajatpandit.com/wp-content/uploads/2011/12/Agilo_for_Scrum_Open_Source_Scrum_Tool-300x296.jpg" alt="" title="Agilo_for_Scrum_Open_Source_Scrum_Tool" width="300" height="296" class="alignleft size-medium wp-image-715" /></a><br />
You first need to enable repoforge for your RHEL install and then install the required packages</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# rpm -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS//rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
[root@localhost ~]# yum -y install subversion trac mod_dav_svn mod_python
</pre>
<p>Now you need to create the directories for svn repos, trac project and auth directory. I choose <code>/var/www/</code> but you can choose anything else you want.</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# mkdir -p /var/www/svn/svnrepos #holds the svn repos
[root@localhost ~]# mkdir -p /var/www/trac #trac base folder
[root@localhost ~]# mkdir -p /var/www/svn/auth #holds the htaccess files
[root@localhost ~]# htpasswd -c /var/www/svn/auth/svn.htpasswd svnuser
[root@localhost ~]# svnadmin create /var/www/svn/svnrepos/secret-project #create svn repo
</pre>
<p>Now create the initial svn folders/files in the repo</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# svn mkdir file:///var/www/svn/svnrepos/secret-project/branches  \
file:///var/www/svn/svnrepos/secret-project/tags  \
file:///var/www/svn/svnrepos/secret-project/trunk  \
-m 'creating directories for initial import'

Committed revision 1.
</pre>
<p>Now create your first trac project</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# trac-admin /var/www/trac/secret-project \
permission add tracuser TRAC_ADMIN
</pre>
<p>You will need then require to go the settings of trac to give it the svn repo patch and then using trac-admin to call resync.</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# trac-admin $ENV repository resync &quot;secret-project&quot;
</pre>
<p>You would also require a post commit hook to ensure that trac gets updated every time a new commit is made. There is plenty of information available on <a href="http://trac.edgewall.org/wiki/CommitTicketUpdater">http://trac.edgewall.org/wiki/CommitTicketUpdater</a>, but basically you need is an svn post commit hook which calls <code>trac-admin $ENV changeset added 'secret-project'</code>.</p>
<p>Installing Agilo can be done using a plugin. If you have <code>easy_install</code> installed even better. Just follow the instructions as follows</p>
<pre class="brush: plain; title: ; notranslate">
[root@localhost ~]# easy_install &lt;agilo&gt;.egg
[root@localhost ~]# cd /var/www/trac/britebill-holepunch/conf
[root@localhost conf]# trac-admin /var/www/trac/secret-project/ upgrade #upgrade trac post plugin install
Creating Product Backlog...
Creating Sprint Backlog...
Upgrade done.
[root@localhost conf]# trac-admin /var/www/trac/britebill-holepunch/ wiki upgrade #upgrade trac wiki as well
</pre>
<p><a href="http://blog.rajatpandit.com/wp-content/uploads/2011/12/screenshot_A_11.png"><img src="http://blog.rajatpandit.com/wp-content/uploads/2011/12/screenshot_A_11-300x179.png" alt="" title="screenshot_A_1" width="300" height="179" class="alignleft size-medium wp-image-713" /></a></p>
<p>Now you can use the web interface to configure the project even more, adding your backlogs, tickets etc. Agilo also allows you to import your backlog from an xls sheet which is great as most product managers are still stuck in the xls era and refuse to let it go.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin:0;padding:0;"><div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-bp */
google_ad_slot = "7787511801";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-BP-1 */
google_ad_slot = "9111022353";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://blog.rajatpandit.com/2011/12/23/setting-up-trac-svn-and-agilo-on-rhel-5-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>svn: This client is too old to work with working copy &#8216;.&#8217;; please get a newer Subversion client</title>
		<link>http://blog.rajatpandit.com/2009/12/31/svn-this-client-is-too-old-to-work-with-working-copy-please-get-a-newer-subversion-client/</link>
		<comments>http://blog.rajatpandit.com/2009/12/31/svn-this-client-is-too-old-to-work-with-working-copy-please-get-a-newer-subversion-client/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 10:59:32 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[JeOS]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sshfs]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.rajatpandit.com/?p=437</guid>
		<description><![CDATA[How about this, you wake up in the morning and decided to resume development (I know this sounds sad considering today is 31st of Dec), you type svn update and...]]></description>
			<content:encoded><![CDATA[<p>How about this, you wake up in the morning and decided to resume  development (I know this sounds sad considering today is 31st of Dec), you type <code>svn update</code> and you get the error:</p>
<pre class="brush: bash; title: ; notranslate">
$ svn update
svn: This client is too old to work with working copy '.'; please get a newer Subversion client
</pre>
<p>So this is what my development setup looks like, I run a vm of <a href="http://www.ubuntu.com/products/whatisubuntu/serveredition/jeos">JeOS</a> and mount it on my mac using <a href="http://www.sccs.swarthmore.edu/users/08/mgorbach/MacFusionWeb/index_old.html">macfusion</a>. So I have access to my code on both via ssh and via terminal. I got the above error as I accidentally did this update on the host machine side which had svn version 1.6.5 running where as on my vm I was still running 1.4.6. So searching for a couple of mins on the internet, I managed to update my version of svn on JeOS (which is actually another version <a href="http://ubuntu.com">ubuntu</a> but for servers).  I am documenting the steps below just in case anyone else might find it useful.</p>
<p>Open the sources.list and update it with the new source.</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo vi /etc/apt/sources.list
</pre>
<p>and add the following two lines at the bottom</p>
<pre class="brush: bash; title: ; notranslate">
deb http://ppa.launchpad.net/anders-kaseorg/subversion-1.6/ubuntu hardy main
deb-src http://ppa.launchpad.net/anders-kaseorg/subversion-1.6/ubuntu hardy main
</pre>
<p><code>hardy</code> can be replaced by your version ubuntu, I am still on ubuntu as its just a development server with the latest version of apache, mysql and it works very well for me, so no reason to upgrade yet. Also JeOS is available on the not so latest version of ubuntu anyway.</p>
<p>Add the related key signature</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 413576CB
</pre>
<p>413576CB is the signing key on the home page of the project <a href="https://launchpad.net/~anders-kaseorg/+archive/subversion-1.6">https://launchpad.net/~anders-kaseorg/+archive/subversion-1.6</a>. </p>
<p><strong>Signing key:</strong><br />
    1024R/413576CB<br />
<strong>Fingerprint:</strong><br />
    026491A5DD081BDC6CDFC0DE6298AD34413576CB </p>
<p>Now all you need to do is update your aptitude cache and upgrade the version of svn.</p>
<pre class="brush: bash; title: ; notranslate">
$ sudo apt-get update
$ sudo apt-get --reinstall install subversion
</pre>
<div id="in_post_ad_bottom_1" style="clear:both;margin:0;padding:0;"><div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-bp */
google_ad_slot = "7787511801";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-BP-1 */
google_ad_slot = "9111022353";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://blog.rajatpandit.com/2009/12/31/svn-this-client-is-too-old-to-work-with-working-copy-please-get-a-newer-subversion-client/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Symfony development process</title>
		<link>http://blog.rajatpandit.com/2009/07/11/symfony-development-process/</link>
		<comments>http://blog.rajatpandit.com/2009/07/11/symfony-development-process/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 10:48:55 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[build process]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://blog.rajatpandit.com/?p=345</guid>
		<description><![CDATA[My development process involves using doctrine and svn. Documenting my development steps to make sure I can put this is some sort of build script in future. Creating svn directories...]]></description>
			<content:encoded><![CDATA[<p>My development process involves using <a href="http://www.doctrine-project.org/">doctrine</a> and <a href="http://subversion.tigris.org/">svn</a>. Documenting my development steps to make sure I can put this is some sort of build script in future.</p>
<p>Creating svn directories</p>
<pre class="brush: bash; title: ; notranslate">
svn mkdir -m &quot;create default directories&quot; http://svn.clients.rajatpandit.com/project-name/trunk http://svn.clients.rajatpandit.com/project-name/tags http://svn.clients.rajatpandit.com/project-name/branches
</pre>
<p>Checkout these directories locally:</p>
<pre class="brush: bash; title: ; notranslate">
svn co http://svn.clients.rajatpandit.com/project-name/ .
</pre>
<p>Move to the <code>trunk</code> directory</p>
<pre class="brush: bash; title: ; notranslate">
cd trunk
</pre>
<p>Creating a new project</p>
<pre class="brush: bash; title: ; notranslate">
$  symfony generate:project brp
$ php symfony generate:app --escaping-strategy=on --csrf-secret=s3cr3t fe
</pre>
<p>Clear cache and log and add that to svn</p>
<pre class="brush: bash; title: ; notranslate">
rm -rf cache/* log/*
chmod 777 cache/ log/
svn add *
</pre>
<pre class="brush: bash; title: ; notranslate">
svn propedit svn:ignore cache
svn propedit svn:ignore log
</pre>
<p>Enter * in both the cases so that no files in cache and log get commited to svn</p>
<p>Add the new files to svn</p>
<pre class="brush: bash; title: ; notranslate">
svn ci -m 'adding the initial set of files'
</pre>
<p>Update the database settings, add the doctrine plugin and disable the propel plugin instead, edit the file <code>config/ProjectConfiguration.class.php</code><br />
and update the line with the following line:</p>
<pre class="brush: php; title: ; notranslate">
  $this-&gt;enableAllPluginsExcept(array('sfPropelPlugin', 'sfCompat10Plugin'));
</pre>
<p>Publish the plug-in assets</p>
<pre class="brush: bash; title: ; notranslate">
rp@devbox:~/websites/project-name/trunk$ php symfony plugin:publish-assets
    plugin    Configuring plugin - sfProtoculousPlugin
    plugin    Configuring plugin - sfDoctrinePlugin
</pre>
<p>Delete the files for the propel plugin:</p>
<pre class="brush: bash; title: ; notranslate">
svn delete web/sfPropelPlugin
svn delete config/propel.ini
svn delete config/schema.yml
svn mkdir config/doctrine
</pre>
<p>Create new schema file and remove the default schema file.</p>
<pre class="brush: bash; title: ; notranslate">
rp@devbox:~/websites/project-name/trunk$ cd config/doctrine/
rp@devbox:~/websites/project-name/trunk/config/doctrine$ touch schema.yml
rp@devbox:~/websites/project-name/trunk/config/doctrine$ svn add schema.yml
A         schema.yml
rp@devbox:~/websites/project-name/trunk/config/doctrine$ svn ci -m 'adding schema for app'

svn delete config/databases.yml
svn ci -m 'removed the default databases.yml file'
</pre>
<p>Add database configuration settings:</p>
<pre class="brush: bash; title: ; notranslate">
php symfony configure:database --name=doctrine --class=sfDoctrineDatabase &quot;mysql:host=127.0.0.1;dbname=project1&quot; root password
</pre>
<p>Link to externals so that the  latest version of the plugins and symfony gets checked out:</p>
<pre class="brush: bash; title: ; notranslate">
cd lib/
svn mkdir vendor
svn propedit svn:externals lib/vendor
svn ci -m 'updating symfony to version 1.2.7'
svn update lib/vendor/
</pre>
<p>That pulls out the most updated tagged version  of <a href="http://symfony-project.org">symfony</a>.</p>
<p>Update the configuration file <code>config/ProjectConfiguration.class.php</code> to use the local <a href="http://symfony-project.org">symfony</a> version instead of the site-wide settings. </p>
<pre class="brush: php; title: ; notranslate">
require_once dirname(__FILE__) . '/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
</pre>
<div id="in_post_ad_bottom_1" style="clear:both;margin:0;padding:0;"><div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-bp */
google_ad_slot = "7787511801";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-BP-1 */
google_ad_slot = "9111022353";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://blog.rajatpandit.com/2009/07/11/symfony-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>using svn for development in symfony</title>
		<link>http://blog.rajatpandit.com/2009/02/08/using-svn-for-development-in-symfony/</link>
		<comments>http://blog.rajatpandit.com/2009/02/08/using-svn-for-development-in-symfony/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 15:36:14 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[bug fixes]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[directory structure]]></category>
		<category><![CDATA[dramatic changes]]></category>
		<category><![CDATA[empty directory]]></category>
		<category><![CDATA[initial directory]]></category>
		<category><![CDATA[iteration]]></category>
		<category><![CDATA[nature of the product]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[product development cycle]]></category>
		<category><![CDATA[repos]]></category>
		<category><![CDATA[secret project]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://blog.rajatpandit.com/?p=204</guid>
		<description><![CDATA[The recent project that I am working on for a client has taught me more about svn than I ever did because of the complex nature of the product. It...]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.rajatpandit.com/wp-content/uploads/2009/02/tdgts_pile.jpg" alt="Symfony" title="Symfony" width="300" height="410" class="alignright size-full wp-image-206" />The recent project that I am working on for a client has taught me more about <code>svn</code> than I ever did because of the complex nature of the product. It has been going through a proper product development cycle which involves quick iteration of features and sometimes, such dramatic changes that can make the entire code base unstable for weeks until the change is brought about.<br />
In addition to that, I have always preferred to work with the latest version of symfony so that I am always up-to-date in terms of bug fixes and manage to provide the very best of code base.</p>
<p>I trolled through the <code>svn</code> manuals and <a href="http://stereointeractive.com/blog/2008/12/10/starting-a-new-symfony-project/">some really interesting blog posts</a> and summarizing the steps that I took to put my code base back into control. Its rather unusual that none of the steps below are anything special its just that I hadnt had to work on a situation where I had to work on a feature which might or might not see the daylight of being pushed to production. </p>
<p>So the first thing to do was to create the trunk, branches and tags directory. </p>
<pre class="brush: bash; title: ; notranslate">
$ mkdir ~/websites/secret-project/trunk \
            ~/websites/secret-project/branches \
            ~/websites/secret-project/tags
</pre>
<p>I now use <a href="http://dreamhost.com">dreamhost</a> for my svn but you can replace this with any other repo (local or remote) to manage your code. So I would start by creating the initial directory structure in the repo.</p>
<pre class="brush: bash; title: ; notranslate">
$ svn import -m 'Importing the initial directory structure' \
                http://svn.rajatpandit.com/secret-project/trunk \
                http://svn.rajatpandit.com/secret-project/branches \

http://svn.rajatpandit.com/secret-project/tags
</pre>
<p>Now checking out the empty directory locally to setup the local directories we created locally.</p>
<pre class="brush: bash; title: ; notranslate">
$ svn co http://svn.rajatpandit.com/secret-project/trunk \
               ~/websites/secret-project/trunk
</pre>
<p>The next step is to ensure that you are always using the most recent version of symfony. I like this feature about svn. You can have multiple directories pointing to multiple repos, that we can always ensure that your project can benefit from the most recent versions. We start that by setting up the lib/symfony and marking that as having an external repo.</p>
<pre class="brush: bash; title: ; notranslate">
$ cd  ~/websites/secret-project/
$ mkdir trunk/lib
$ mkdir trunk/lib/vendor
$ svn propedit svn:externals lib/vendor
symfony http://svn.symfony-project.com/tags/RELEASE_1_2_4/
</pre>
<p>(1.2.4 being the most recent release at the time of writing this post)<br />
This is a good time to commit this to the svn and get the latest code.</p>
<pre class="brush: bash; title: ; notranslate">
$ svn ci -m 'updating symfony to 1.2.4'
$ svn update lib/vendor
</pre>
<p>With the most recent codebase available in the vendors directory, now is a good time to do any sanity checks if you fancy.</p>
<pre class="brush: bash; title: ; notranslate">
php lib/vendor/symfony/data/bin/check_configuration.php
php lib/vendor/symfony/data/bin/symfony -V
</pre>
<p>If all works fine then there is one other configuration change that is required, after which you can start generating the basic stub of your code base. The change is to update the path <code>sfCoreAutoload.class.php</code> so that its picked up relative to where its placed.</p>
<pre class="brush: bash; title: ; notranslate">
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';
</pre>
<p>With that done and your basic symfony apps and modules created, you can now update the svn configuration so that you can ignore the <code>cache</code> and <code>logs</code> directory.</p>
<pre class="brush: bash; title: ; notranslate">
$ rm -rf cache/*
$ rm -rf log/*
$ chmod 777 cache
$ chmod 777 log
$ svn add *
$ svn propedit svn:ignore log
$ svn propedit svn:ignore cache
$ svn ci -m &quot;updating the codebase with new apps/modules&quot;
</pre>
<p>Its also a good idea to ensure that the auto generated files dont make it to the repo, which is clearly a waste as its usually good to generate them on the server after deployment, that way you are usually sure about your configurations and settings.</p>
<pre class="brush: bash; title: ; notranslate">
svn add --non-recursive lib/model
svn add --non-recursive lib/model/om
svn add --non-recursive lib/model/map
svn propedit svn:ignore lib/model/om
svn propedit svn:ignore lib/model/map
</pre>
<p>You can also do the same for <code>forms</code> and <code>filters</code> any other auto generated file like sql files). Obviously needless to say, you need to commit your files as often as possible and tag after each release. </p>
<p>This post has been heavily adapted from a post on <a href="http://stereointeractive.com/blog/">Stereo Interactive</a> which is a blog I usually end up on when I get stuck on symfony problems. Worth reading it as well. This post would usually form as my own pointer when starting on the next project on symfony.</p>
<div id="in_post_ad_bottom_1" style="clear:both;margin:0;padding:0;"><div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-bp */
google_ad_slot = "7787511801";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-BP-1 */
google_ad_slot = "9111022353";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://blog.rajatpandit.com/2009/02/08/using-svn-for-development-in-symfony/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>GIT &#8211; version control system</title>
		<link>http://blog.rajatpandit.com/2008/09/14/git-version-control-system/</link>
		<comments>http://blog.rajatpandit.com/2008/09/14/git-version-control-system/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 13:15:29 +0000</pubDate>
		<dc:creator>rp</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://blog.rajatpandit.com/?p=76</guid>
		<description><![CDATA[Having used CVS, SVN and GIT, GIT clearly seems like my preferred choice of version control system, esp for my symfony projects, its amazing how fast it is and how...]]></description>
			<content:encoded><![CDATA[<p>Having used CVS, SVN and GIT, GIT clearly seems like my preferred choice of version control system, esp for my symfony projects, its amazing how fast it is and how easy it is to use for most of the basic operations and even for other slightly complex operations like branching and merging. I have previous covered cvs commands <a href="http://blog.rajatpandit.com/2008/08/02/cvs-term-soup/">here</a> , <a href="http://blog.rajatpandit.com/2008/08/02/branching-and-merging-code-in-cvs/">here</a> and <a href="http://blog.rajatpandit.com/2008/06/03/recursively-adding-files-to-cvs/">here</a> so it seemed fair to have the git commands documented as well, its just much easier to have it all in one place as a quick start primer for anyone who is interested in playing around with it.</p>
<p>Download Information available at:<br />
<a href="http://git.or.cz/#download">http://git.or.cz/#download</a></p>
<p>Before you start, set some git variables.</p>
<pre class="brush: bash; title: ; notranslate">
# set your name and email, used for commit messages
$ git config --global user.name &quot;&quot;
$ git config --global user.email &quot;&quot;

# enable nice colorful output
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
</pre>
<p>You can see the other configuration settings using the command:</p>
<pre class="brush: bash; title: ; notranslate">
$ git config -l
</pre>
<p>Assuming you are in your working directory, initialize the repository using the command:</p>
<pre class="brush: bash; title: ; notranslate">
$ git init
</pre>
<p>and you should see the following echoed back to the screen:</p>
<pre class="brush: bash; title: ; notranslate">
Initialized empty Git repository in .git/
</pre>
<p>Now you can add all your current files to the repository using the command:</p>
<pre class="brush: bash; title: ; notranslate">
$ git add .
</pre>
<p>This is now saved in a temporary staging area which git calls the &#8216;index&#8217;, this can be made permanent by calling the following command:</p>
<pre class="brush: bash; title: ; notranslate">
$ git commit
</pre>
<p>Now you have a functional repository which you can use to track your changes. The following the basic commands for your usual daily actions.</p>
<p>Adding files to the repository:</p>
<pre class="brush: bash; title: ; notranslate">
$ git add file1 file2 file3
</pre>
<p>To see the status of the current files, modified or un added files.</p>
<pre class="brush: bash; title: ; notranslate">
$ git status
</pre>
<p>You can also see the difference in the modified files.</p>
<pre class="brush: bash; title: ; notranslate">
$ git diff --cached
</pre>
<p>Commit the file automatically (adding new files and then committing them to the index can be done using the following command:</p>
<pre class="brush: bash; title: ; notranslate">
$ git commit -a
</pre>
<p>And here are the most interesting bits, the ease of branching and merging that might make you fall in love with this.<br />
Creating a new branch:</p>
<pre class="brush: bash; title: ; notranslate">
$ git branch wacky_idea
</pre>
<p>Listing all the current branches</p>
<pre class="brush: bash; title: ; notranslate">
$ git branch

wacky_idea
* master
</pre>
<p>If you now want to work on the new branch you need to set the mode to the new branch by checking out the branch.</p>
<pre class="brush: bash; title: ; notranslate">
$ git checkout wacky_idea
</pre>
<p>Modify and commit your files using the standard <code>$git commit -a</code> and then you can merge it back into master by first checking out master and then doing the merge.</p>
<pre class="brush: bash; title: ; notranslate">
$ git checkout master
$ git merge wacky_idea
</pre>
<p>it will show you the summary in case of no conflicts or give you an opportunity to fix them before doing the merge. You obviously would need to do a <code>git commit -a</code> to add your changes to the index and then if you want to remove the branch run <code>git branch -d wacky_idea</code></p>
<p>There are loads of other interesting features that I will post back to the blog but its surely an interesting version control system. The reason I like this so much is because I do a lot of my development during travelling and by far this is the only CMS that I am aware of that allows you to work offline and online as well. There are always work around to run your repo locally on cvs but that doesn&#8217;t serve the purpose of code centralization.</p>
<p>Some interesting links for further reading:</p>
<ul>
<li><a href="http://git.or.cz/">http://git.or.cz/</a></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/everyday.html">http://www.kernel.org/pub/software/scm/git/docs/everyday.html</a></li>
<li><a href="http://jonas.nitro.dk/git/quick-reference.html">http://jonas.nitro.dk/git/quick-reference.html</a></li>
<li> <a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html">http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html</a></li>
</ul>
<div id="in_post_ad_bottom_1" style="clear:both;margin:0;padding:0;"><div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-bp */
google_ad_slot = "7787511801";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div class="brp-bp-234">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-4254382394977039";
/* brp-234x60-BP-1 */
google_ad_slot = "9111022353";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div></div><div style='clear:both'></div>]]></content:encoded>
			<wfw:commentRss>http://blog.rajatpandit.com/2008/09/14/git-version-control-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

