<?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>Justin Carmony &#187; svn</title>
	<atom:link href="http://www.justincarmony.com/blog/tag/svn/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.justincarmony.com/blog</link>
	<description>Web Designer &#38; Software Engineer</description>
	<lastBuildDate>Wed, 01 Feb 2012 04:30:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Analogy for Moving From SVN to Git</title>
		<link>http://www.justincarmony.com/blog/2011/02/24/analogy-for-moving-from-svn-to-git/</link>
		<comments>http://www.justincarmony.com/blog/2011/02/24/analogy-for-moving-from-svn-to-git/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 23:12:44 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=800</guid>
		<description><![CDATA[Today as I was talking with a friend about Git and when or not we should switch a repository from SVN to Git, I thought up a pretty good analogy. So I thought I would share this to those who are looking to learn Git, and hopefully put them in the right mindset. The Goal ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/06/17/os-x-and-tabs-skipping-drop-down-controls/' rel='bookmark' title='OS X and Tabs &#8211; Skipping Drop Down Controls'>OS X and Tabs &#8211; Skipping Drop Down Controls</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/500px-Git-logo_svg1.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/500px-Git-logo_svg1-300x109.png" alt="" title="500px-Git-logo_svg" width="300" height="109" class="alignright size-medium wp-image-803" /></a>Today as I was talking with a friend about Git and when or not we should switch a repository from SVN to Git, I thought up a pretty good analogy. So I thought I would share this to those who are looking to learn Git, and hopefully put them in the right mindset.</p>
<h3>The Goal</h3>
<p>Ultimately, when people talk about Source Control, they have the same concepts in mind. I want to be able to easily update my source control, collaborate with others, and have a history of changes that I can review and use to make other changes. So for our Analogy, these basic concepts, we&#8217;re going to call <strong>Getting from point A to point B</strong>.</p>
<h3>SVN, The Car</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/jeep.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/jeep-300x178.jpg" alt="" title="2011 Jeep Grand Cherokee" width="300" height="178" class="alignnone size-medium wp-image-801" /></a></p>
<p>With SVN (aka Subversion), I like to compare it to a car. You can hop in, drive around, and get from point A to point B with relative ease. You do need to learn how to drive a car, but after a little while, you get the hang of it. Eventually, you can get pretty good. </p>
<p>You get from point A to point B by combining things like accelerating forward and turning left and right. Maybe you perform even more complicated maneuvers like accelerating in reverse and turning the opposite direction to back up. Some people can even tackle crazier terrain and go off roads with their cars. All and all, it is a very versatile and well suited for the job. It isn&#8217;t very difficult to learn, and gets the job done. </p>
<h3>Git, The Helicopter</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/im_AH64ApacheHelicopter.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/im_AH64ApacheHelicopter-300x237.jpg" alt="" title="im_AH64ApacheHelicopter" width="300" height="237" class="alignnone size-medium wp-image-802" /></a></p>
<p>Git, like SVN, can get someone from point A to point B. However, they approach the task with some fundamental differences. I like comparing it with going from driving a car to flying a helicopter. The helicopter is very versatile as well. It doesn&#8217;t require roads to travel along, and doesn&#8217;t get caught in traffic like cars can. They don&#8217;t have to deal with red lights or stop signs. To the normal driving looking up at them, it seems that they just &#8220;go.&#8221;</p>
<p>This is because you don&#8217;t just drive forwards and backwards, turning left and right. With a helicopter, you also go <strong>up and down</strong>. This adds an additional layer of complexity. You gain more mobility, but is crucial you understand the fundamental differences. For example, unlike a car when you accelerate and you go forwards, with a helicopter you punch the accelerator and <em>you go up</em>, not forwards. For anyone who has ever played a video game with realistic controls for a helicopter, it is hard. People have recorded<a href="http://www.youtube.com/watch?v=iXdBYNxPtzY"> tutorials teaching how to fly helicopters in games</a>, and show the fundamental differences on how you approach flying. Even when flying planes in these games is similar to driving a car, many concepts are backwards when flying a helicopter. </p>
<h3>Trying to Drive a Helicopter</h3>
<p><span id="more-800"></span>So at lunch a guy hears his friends talk about how they skipped over traffic this morning, and got to work in minutes instead of the hour it normally takes. They rave how great it was, and so the guy asks if he could try it out. They say sure, and hand him the keys. He goes out, pops the keys in, and without trying to understand the fundamentals of flying a helicopter, he tries to drive it like a car. For those who have watched people try to &#8220;fly&#8221; a helicopter in a game without a clue, this is what it looks like:</p>
<p><iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/-Qja_JqkVx0" frameborder="0" allowfullscreen></iframe></p>
<p>When the player jumped in the helicopter, he punch the throttle thinking he&#8217;d go forward, and pulled back on the stick thinking he&#8217;d go up. Instead, he went up and backwards and then out of control. </p>
<p>When SVN users try out Git, and don&#8217;t learn or understand the fundamental differences, they get very frustrated with it. Even if they manage to duplicate their experience with SVN using Git, they are just adding more complexity without any real gains. </p>
<h3>Learn the Differences</h3>
<p>The <a href="https://git.wiki.kernel.org/index.php/GitSvnComparison">difference comparison</a> at the Git Wiki is fair in it&#8217;s assessments. It shows how each solution handles different features, and what impact it has. With Git, there are some drawbacks, such as you can&#8217;t just checkout a subset of a repository. You either download the whole thing (with history) or not. </p>
<p>If you approach using Git like it was SVN 2.0, you will be disappointed, frustrated, and will give up. Git is close enough that you can feel like you are using SVN, but when it doesn&#8217;t act like SVN, you won&#8217;t know why. So do yourself a favor, and when you sit down to learn Git, think &#8220;I&#8217;m used to driving a car, but I&#8217;m learning how to fly now. I&#8217;m learning something new.&#8221; If you approach it with this mindset, I believe you will be much more successful.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/06/17/os-x-and-tabs-skipping-drop-down-controls/' rel='bookmark' title='OS X and Tabs &#8211; Skipping Drop Down Controls'>OS X and Tabs &#8211; Skipping Drop Down Controls</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2011/02/24/analogy-for-moving-from-svn-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using GIT with SVN</title>
		<link>http://www.justincarmony.com/blog/2011/02/21/using-git-with-subversion/</link>
		<comments>http://www.justincarmony.com/blog/2011/02/21/using-git-with-subversion/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:50:10 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=755</guid>
		<description><![CDATA[Over the last two and a half years, since the day I presented on Streamlined Web Development with SVN, I&#8217;ve been hearing about the Source Control Management tool called &#8220;git.&#8221; I kept reading about it online, seeing it on the schedules for conferences, and hearing it about it in the different Open Source groups here ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2010/09/17/svn-switch-key-to-success-in-web-development/' rel='bookmark' title='SVN Switch &#8211; Key to Success In Web Development'>SVN Switch &#8211; Key to Success In Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/500px-Git-logo_svg.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/500px-Git-logo_svg-300x109.png" alt="" title="500px-Git-logo_svg" width="300" height="109" class="alignright size-medium wp-image-756" /></a>Over the last two and a half years, since the day I presented on <a href="http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/">Streamlined Web Development with SVN</a>, I&#8217;ve been hearing about the Source Control Management tool called &#8220;<a href="http://git-scm.com/">git</a>.&#8221; I kept reading about it online, seeing it on the schedules for conferences, and hearing it about it in the different Open Source groups here in Utah. I have been a big time Subversion (SVN) user for several years now, and it has solved my problems </p>
<h2>Background</h2>
<p>I have tried to use it in the past two or three times, but each time I had basically given up. There were a few reasons why in the past I didn&#8217;t really stick with using Git:</p>
<ul>
<li>I really didn&#8217;t understand the differences between Git and SVN. Most importantly, I didn&#8217;t understand the reasoning for why Git did things different, and the advantages it did.</li>
<li>I used to rely heavily on GUI based SVN tools. Over time, especially the last year or so, I&#8217;ve moved away from these GUI tools to the command line. I found it a lot easier to do merges, switches, and even commits from the command line. After being much more comfortable with the command line, it made it easier to use Git, which has far few GUI options.</li>
<li>Subversion is still a great tool with great adoption and support. While I might be willing to switch to use Git, I wasn&#8217;t looking forward to helping the rest of my team members learn how to use it. Especially those who required a GUI for Subversion. Also, all the tools we had were built on Subversion, it would be a lot of work switching everything to Git, and some things at the time didn&#8217;t interface with Git.</li>
<li>git-svn was missing a few features two years ago that really make it a viable interface with Subversion. Also, because of how versatile Git is with supporting all sorts of workflows, the tutorials for using it with SVN all seemed missing a complete picture. Even now, I had to Google and piece meal a few different tutorials to get my setup to work correctly.</li>
<li>Most arguments for Git over SVN that I heard focused on Subversion&#8217;s short comings, instead of the benefits of using Git. I was happy with Subversion, and it was working well in production, so I assumed Git users were just people who didn&#8217;t like SVN.</li>
</ul>
<p>So, as I write this post, I&#8217;m not writing as a newly made Git fanboy, but a Subversion user who has found a lot of advantages with using Subversion and Git together. I plan on to keep using Subversion for the remote repositories with my current projects, and in the future when I deploy new repositories, I&#8217;ll consider using Git fully, or still use Subversion if it is better suited.</p>
<h2>Newly Found Advantages</h2>
<p>To understand the power in Git, it is a &#8220;<strong>distributed</strong> version control system&#8221; where each &#8220;Git clone is a full-fledged repository.&#8221; This is also where a lot of hangups happen with Subversions users. I kept expecting to &#8220;checkout&#8221; a &#8220;working copy.&#8221;  What I needed to remind myself is I was &#8220;cloning&#8221; a version of that git or svn repository. This enables several features that aren&#8217;t really viable on Subversion alone.</p>
<p><span id="more-755"></span><br />
<h3>Understanding Git Branches</h3>
<p>One thing to understand about the differences between git and svn branches (and tags) is this: SVN treats them as just a foldering structure, Git manages them for you. This means Git can handle branching, tagging, and merging much more cleanly. With SVN, while I could do merging alright, I always felt like I was looking up different revision number, double checking my commands, and it felt very, very fragile. With Git, it felt like branching and merging were very solid.</p>
<p>When I first really saw Git branches in action, my mouth dropped somewhat. The light bulb clicked, and I saw the real advantages. Because my local git repository isn&#8217;t tightly coupled with the branches on the remote server, I can make a branch locally without having to have it on the server. Almost all of the svn repositories I work with are large, one 200MB and another 605MB, and branching them is a complete pain. Either I have the server branch them and download the branch, or branch locally and then upload the branch through committing. It was a complete pain. However, that same 605MB Subversion trunk, takes milliseconds to create a local branch in Git. Even if I want to create a remote branch, Git is smart enough to issue the SVN copy command, but branch locally without having to download the entire thing from the svn server.</p>
<p>So now, how often do I branch? A lot more often. How often do I merge? I a lot more often. Now if it isn&#8217;t a quick 15 minute change, I&#8217;ll branch it. That way, if I need to do any hotfixes quickly, I can switch back to my master branch without any worries. </p>
<h3>Stashing</h3>
<p>This would be another great Git feature is the ability to &#8220;stash&#8221; a set of uncommitted changes. So lets say I was working on my master branch. Then I need to do a hotfix, but I hadn&#8217;t made a branch. Git allows you to &#8220;stash&#8221; the change. It is like an &#8220;unoffical commit.&#8221; So you can stash a set of changes, and apply them later. You can have multiple stashes, and apply them, or just the ones you want. When you&#8217;re done with them, you can clear them all out.</p>
<p>These are only a handful of the things I&#8217;ve found so far, but look forward to learning more and more.</p>
<h2>Getting Started</h2>
<p><em>Warning: at this point and time I&#8217;m still learning and feeling out a workflow, so what I have below might not be 100% accurate or the best. Feedback is appreciated and welcome.</em></p>
<p>Alright, so now that I&#8217;ve explained some of the things I&#8217;ve been impressed with for Git, here are my notes for getting started from scratch. First off, if you use Windows, you can go to the git website and <a href="http://git-scm.com/download">download the binaries</a>. If you have Mac OS X, I recommend installing it through MacPorts. If you have Linux, then use the package manager of your distribution. </p>
<h3>Configuration</h3>
<p>Next, a few configurations to make your life better. Run the command:</p>
<code class="code">git config -e --global</code>
<p>Then, you can put your settings, here are mine:</p>
<code class="code">[user]
        name = Justin Carmony
        email = justin@justincarmony.com
[core]
        warnambiguousrefs = false
[merge]
        tool = opendiff
[color]
        diff = auto
        status = auto
        branch = auto
        interactive = auto
        ui = true
        pager = true

[color "branch"]
        current = yellow reverse
        local = yellow
        remote = green

[color "diff"]
        meta = yellow bold
        frag = magenta bold
        old = red bold
        new = green bold

[color "status"]
        added = yellow
        changed = green
        untracked = cyan

[alias]
        co = checkout
        ci = commit
        br = branch
        st = status
[branch]
        autosetupmerge = true</code>
<h3>Cloning</h3>
<p>Now, when using Git with SVN, there are a few special things you need to keep in mind when cloning, you&#8217;ll need to let Git know where to find the branches and tags. If you use the standard trunk, branches, tags layout, then you can use the &#8211;stdlayout flag. If not, you will have to declare where trunk(flag -T), branches(flag -b), and tags(flag -t) are located. So here is how you can clone your SVN repository:</p>
<code class="code">git svn clone --stdlayout http://www.example.com/svn/ local_folder</code>
<p>Alright, now, <strong>this will take a long time</strong> especially if it is a large repository with a lot of history. Reason being is it is cloning the complete history, not just the current files. So be prepared to wait. Now, you&#8217;d think it would take up a ton of space, but Git uses compression to condense the history very well. </p>
<p>Once it is done, you are ready to begin. Before you even start, <strong>I highly recommend making a backup of your main folder</strong>, especially if cloning too a very long time. The reason is if you mess something up, you can just delete the entire folder, copy over your backup, and start again. This will avoid you having to re-clone and wait for an hour for 20,000 revisions to download.</p>
<h3>Basic Committing</h3>
<p> Now, lets first take a look at the current branches you have locally:</p>
<code class="code">justin$ git branch
* master
justin$</code>
<p>Now, if you want to see all the branches, including remote branches, then add a -a flag for &#8220;all.&#8221;</p>
<code class="code">justin$ git branch
* master
remotes/feature_one
remotes/feature_two
remotes/big_rewrite
justin$</code>
<p>So freature_one would be the corresponding svn location: http://www.example.com/svn/branches/feature_one</p>
<p>Now, a little Git 101 with SVN. In the Git world, master is what SVN calls trunk. It is the master branch. So lets do some basic committing. After making some changes, lets commit them to the local Git repository:</p>
<code class="code">git commit -am "Here are some changes I made! I hope they work!"</code>
<p>The -a is to add any new files to the repository, and the -m is for the message (and you can combined them to -am). You can make several commits, but you haven&#8217;t pushed them to the SVN repository yet. To do this, you do the following:</p>
<code class="code">git svn dcommit</code>
<p>And that is it. This will take each commit you made, and commit them to the svn repository. Now, you will also need to get the changes from the SVN repository. The terminology is different, but functions pretty much the same:</p>
<code class="code">git svn rebase</code>
<p>This is pretty much the same as doing &#8220;svn update&#8221;. From what I&#8217;ve read, there is just a little bit difference, in the sense that git will get the changes from the current HEAD, apply them, and then apply and uncommitted changes. </p>
<p>Now, if you have any conflicts, you can use the following command to use a merge tool to resolve the conflicts:</p>
<code class="code">git mergetool</code>
<p>If you want to check the status, you can run:</p>
<code class="code">git status</code>
<h3>Branching &#038; Merging</h3>
<p>Alright, now if you want to make a new branch to work off of, and you are branching locally, just execute this command.</p>
<code class="code">git checkout -b new_branch_name master</code>
<p>This will make a branch from master. This will also switch you to using the new branch. One great thing with Git is you don&#8217;t mess with any switch commands, worrying about paths, or anything else like that. It makes developing PHP applications that much easier, since I&#8217;ll setup my environment just once. </p>
<p>So as you are working, you can switch between the branches easily with a:</p>
<code class="code">git checkout branch_name</code>
<p>Now, when your code is ready to merge back into master, just do a:</p>
<code class="code">git merge new_branch_name master -m "Merging my new changes"</code>
<p>Resolve any conflicts if you have any, and then perform a git svn dcommit.</p>
<p>Now, if you want to do a remote branch so you can collaborate this branch with others, you issue an svn branch. Now, you&#8217;ll want to make sure you are on branch you wish to branch from, <strong>and it is linked to the correct svn path</strong>. During all my testing and playing around, I somehow got my master branch pointing to a svn branch instead of trunk. So issue an &#8220;git svn info&#8221; and verify the &#8220;Path&#8221; is pointing to trunk. If it isn&#8217;t, then issue the command &#8220;git reset &#8211;hard remotes/trunk&#8221;.</p>
<p>When ready to make your new remote branch, just issue this command:</p>
<code class="code">git svn branch -m "branching message" name_of_branch</code>
<p>Then when it is done (which normally is pretty quick), you can see see your new branch by &#8220;git branch -a&#8221; and it should be called &#8220;remotes/name_of_branch&#8221;. Now, create a local branch from that remote branch:</p>
<code class="code">git branch -b local_name remotes/name_of_branch
git checkout local_name</code>
<p>Now you can follow the same process as you would on master: git svn rebase (svn up), git commit -am &#8220;message&#8221;, git dcommit. When you are ready to merge it back into trunk, you&#8217;ll want to do a merge like before, but this time use the &#8220;&#8211;no-ff&#8221; option. There is a <a href="http://stackoverflow.com/questions/2850369/why-uses-git-fast-forward-merging-per-default">great, longer explanation</a> as to why, but here is the short answer: Fast-Forwarding (ff) is basically a Git trick to make your merge appear like it happened in time with the normal branch you are merging into. Well, there is a bug where this also can re-assign the url path of your master branch from trunk to an svn branch. So:</p>
<code class="code">git checkout master
git merge --no-ff local_name</code>
<p>There is no way to delete the svn branch from your local Git. However, you can easily issue an svn command: &#8220;svn del http://www.example.com/svn/branches/name_of_branch&#8221;. However, afterward, even after you do a &#8220;git svn rebase&#8221;, you will still see the remotes/name_of_branch in your branch list (git branch -a). There is <a href="http://stackoverflow.com/questions/1839606/delete-a-svn-branch-via-git">an explanation</a> of why it will stay, if you want to remove it, you do it by:</p>
<code class="code">git branch -r -D remotes/name_of_branch</code>
<p>This will remove it from your list. </p>
<p><strong>Non-Traditional SVN Layouts</strong></p>
<p>For one SVN repository, we have the traditional trunk, branches, and tags. However, we also have a &#8220;production&#8221; directory, which contains our current production code for the website. Our workflow is we develop against trunk, get it stable, and merge it to production. Then, all of our push scripts pull from the production folder. With Git, this folder was not showing up. There is a simple fix for this, by adding another config to your Git repository.</p>
<code class="code">git config -e</code>
<p>You should see an entry like this:</p>
<code class="code">[svn-remote "svn"]
        url = http://www.example.com/svn
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*</code>
<p>So what you can do is add another svn-remote entry</p>
<code class="code">[svn-remote "svn"]
        url = http://www.example.com/svn
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*
[svn-remote "svnprod"]
        url = http://www.example.com/svn/production
        fetch = :refs/remotes/production</code>
<p>Then, to have it show up in your remote branches list, call a one time fetch:</p>
<code class="code">git svn fetch svnprod</code>
<p>You will now see remotes/production in your &#8220;git branch -a&#8221;.  Now, to get a local copy:</p>
<code class="code">git branch -b production remotes/production
git checkout production</code>
<p>There are a few caveats. You will have to do a separate git svn rebase to do an &#8220;svn update&#8221;, since that command only updates the current svn-remote you are working on. So if I wanted to update both, I would:</p>
<code class="code">git checkout master
git svn rebase
git checkout production</code>
<h3>Reverting &#038; Reseting (Yikes! I messed something up&#8230;)</h3>
<p>With SVN it seemed every now and then I would bork my working copy, and I would have to try to revert. If that didn&#8217;t work, sometimes I would just delete my local copy and re-checkout.</p>
<p>With Git, given that cloning from SVN can take a very long time, will repeat my recommendation from before. Make a copy of your local repository every now and then, incase if you really mess things up you don&#8217;t have to clone the entire thing again, and instead just do a &#8220;git svn rebase&#8221;.</p>
<p>But before you have to resort to that, lets take a look at some options. There are some <a href="http://book.git-scm.com/4_undoing_in_git_-_reset,_checkout_and_revert.html">good articles on the topic</a>. One is git reset which works well for uncommitted changes. Did I really mess something up and want to undo to the previous commit?</p>
<code class="code">git reset --hard head</code>
<p>This will do a hard reset to the exact files as of the last commit. Lets say you have some local commits that are just bad, or a merge that went wrong:</p>
<code class="code">git reset --hard remotes/trunk</code>
<p>This will let you restore to what is on remotes/trunk. I haven&#8217;t done much with &#8220;git revert&#8221; but it <a href="http://www.gitready.com/intermediate/2009/03/16/rolling-back-changes-with-revert.html">seems fairly easy to use</a>.</p>
<h2>Summary</h2>
<p>The bottom line, is once learned, Git seems to enable myself as a developer to do more with my source code. Its interface with SVN allows me to gain almost all the benefits of Git without causing major disruption to my fellow co-workers and environments.</p>
<p>Thanks to a handful of UTOS (Utah Open Source) and UPHPU (Utah PHP Usergroup) people. They&#8217;ve helped fill in a few gaps I&#8217;ve had in my understanding on how Git works.</p>
<h3>Notes</h3>
<p>Here is a list of just <em>some</em> of the articles, blog posts, and web pages to help me figure everything out.</p>
<ul>
<li><a href="https://git.wiki.kernel.org/index.php/GitSvnCrashCourse">Git Crash Course for SVN Users</a> &#8211; This is a wiki page on the basics of Git. Doesn&#8217;t cover itegration with SVN Remote Repositories however.</li>
<li><a href="http://blog.tsunanet.net/2007/07/learning-git-svn-in-5min.html">Learning git-svn in 5 min</a> &#8211; Great short article on getting started with git-svn</li>
<li><a href="http://orestis.gr/blog/2008/08/23/git-svn-tutorial/">Git SVN Tutorial</a> &#8211; A good, basic tutorial on using a Git workflow with SVN.</li>
<li><a href="http://blog.emmanuelbernard.com/2010/05/git-how-my-life-has-improved-since-last-month-when-i-used-svn/">Git: how my life has improved since last month when I used SVN</a> &#8211; Another blog post outlining how to use Git from and SVN user standpoint.</li>
<li><a href="http://plpatterns.com/post/234334879/how-to-convert-a-local-branch-in-git-to-a-remote-svn">How to Convert a Local Branch in Git to a Remote SVN Branch</a> &#8211; A walkthrough on how to share a local branch to a remote branch on SVN.</li>
<li><a href="http://blog.xkoder.com/2008/08/13/git-tutorial-starting-with-git-using-just-10-commands/">Git Tutorial : Starting with git using just 10 commands</a> &#8211; A great intro to some useful commands, such as git log, git status, git diff, gitk, and has <a href="http://blog.xkoder.com/2009/06/06/git-tutorial-part-ii-sharpen-you-git-fu-with-10-more-commands/">another post with even more useful commands</a>.</li>
<li><a href="http://book.git-scm.com/index.html">Git Community Book</a> &#8211; Great for clear instructions on how to do beginner and intermediate things. This is where I figured out how to use the stash command.</li>
<li><a href="http://progit.org/book/">Pro Git</a> &#8211; Another excellent book about using Git, free online and available for print as well. Very clear and easy to understand. Has a good chapter on working with <a href="http://progit.org/book/ch8-1.html">Git &#038; Subversion<a/></li>
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/v1.7.4.1/git.html">Git Man Page</a> &#8211; Good luck. Its good <em>after</em> you know how Git works and need to read up on some details.</li>
<li><a href="http://cheat.errtheblog.com/s/git">Git Cheet Sheet</a> &#8211; Great quick summary of common tasks in Git.</li>
<li><a href="http://trac.parrot.org/parrot/wiki/git-svn-tutorial">Git SVN Tutorial</a> &#8211; While this is for the parrot project, it does have a good example of a Git/SVN Workflow</li>
<li><a href="http://blog.ezyang.com/2010/01/advanced-git-merge/">Five advanced Git merge techniques </a>- Five more advanced tricks with Git and merging, not sure if I&#8217;ll actually use all of them.</li>
</ul>
<p>And some random Git Commands so I personally don&#8217;t forget them: </p>
<ul>
<li><strong>git log &#8211;graph &#8211;oneline &#8211;decorate</strong> &#8211; Show me my log in a scrollable version with branches shown.</li>
</ul>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2010/09/17/svn-switch-key-to-success-in-web-development/' rel='bookmark' title='SVN Switch &#8211; Key to Success In Web Development'>SVN Switch &#8211; Key to Success In Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2011/02/21/using-git-with-subversion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SVN Switch &#8211; Key to Success In Web Development</title>
		<link>http://www.justincarmony.com/blog/2010/09/17/svn-switch-key-to-success-in-web-development/</link>
		<comments>http://www.justincarmony.com/blog/2010/09/17/svn-switch-key-to-success-in-web-development/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 08:13:05 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=625</guid>
		<description><![CDATA[So lately I have been given some thought to how we use Subversion (SVN) in our web development, and features we don&#8217;t use nearly as often. In web development, one big area where I don&#8217;t see us using a lot is branching, tagging, and merging. However, with our iPhone Apps, we use tagging and branching ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/09/24/zend-studio-vs-php-development-tools/' rel='bookmark' title='Zend Studio vs PHP Development Tools'>Zend Studio vs PHP Development Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/20/streamlined-web-development-in-depth/' rel='bookmark' title='Streamlined Web Development: In-Depth'>Streamlined Web Development: In-Depth</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/09/subversion_logo-384x332.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/09/subversion_logo-384x332-300x259.png" alt="" title="subversion_logo-384x332" width="300" height="259" class="alignright size-medium wp-image-626" /></a>So lately I have been given some thought to how we use <a href="http://subversion.tigris.org/">Subversion</a> (SVN) in our web development, and features we don&#8217;t use nearly as often.</p>
<p>In web development, one big area where I don&#8217;t see us using a lot is branching, tagging, and merging. However, with our iPhone Apps, we use tagging and branching <strong><em>a lot</em></strong>. As I started to think why, one of the biggest things was the <strong>environment</strong>. Client development, especially with the iPhone, is double clicking on a project file for Xcode, and I&#8217;m ready to go. There is almost no hassle running trunk versus running a tag or branch. It is all the same.</p>
<p>Building against a website, however, is different. Your environment requires a lot more information and pieces. For me, I need to make changes to my host file (for custom domains), Apache/Nginx configuration, MySQL Connection information, etc. There is no file i &#8220;double click&#8221; and go. It is a pain anytime I need to change my local (or staging or even production) paths and settings.</p>
<p>This is where the <a href="http://svnbook.red-bean.com/en/1.0/ch04s05.html">svn switch</a> command comes in handy, and is extremely important. It allows you to change your checked out working copy&#8217;s source (or url), while maintaining any local changes you may have made. You can tell the actual path, regardless of file or directory names, by doing an svn info command. The best way to understand is through examples.</p>
<h3>Arg, should have made this a branch.</h3>
<p>You&#8217;re working on a big change, such as completely rewriting your internal message system. Suddenly, your boss walks in saying &#8220;There is a bug we need you to fix and push live now!&#8221; It is a simple bug, but your trunk is only half way through a major change. What do you do?</p>
<ol>
<li><strong>New Branch on Server</strong> &#8211; You need to make a new branch on the server based off the server&#8217;s version of trunk. It&#8217;s a simple copy function, while having it execute on the server:
<p>svn copy -m &#8220;Branching for new email system&#8221; http://svn.example.com/trunk/ http://svn.example.com/branches/new_email_system/</li>
<li><strong>Switch your trunk working copy to new branch</strong> &#8211; This allows you to keep all of your current changes locally, but switches you to the branch version:
<p>cd /path/to/trunk/ <br />svn switch http://svn.example.com/branches/new_email_system/</li>
<li><strong>Commit changes to branch</strong> &#8211; Commit your changes to the repository which will be applied to the branch:
<p>svn commit -m &#8220;changes to new message system.&#8221;</li>
<li><strong>Switch back to trunk.</strong> &#8211; Make sure you are still at your trunk. If you did an svn info, it would show the URL location at the branch. Execute the switch again:
<p>svn switch http://svn.example.com/trunk/</li>
<li><strong>Switch between trunk &#038; branch as needed</strong> &#8211; When you need to work on the trunk, switch to the trunk. When you need to work on the branch, switch to the branch. The great thing is you won&#8217;t need to change any URLs in your configs in apache and such, it will just work. </li>
<li><strong>When your branch is ready, merge into trunk</strong> &#8211; Perform a merge since the starting of the branch to the last revision in the branch, applying it to the trunk:
<p>svn merge -r 100:125 path/to/branches/new_email_system path/to/trunk</li>
<li><strong>Test changes made by merge, then commit.</strong> &#8211; Test the changes locally, and when you are satisfied things went well, commit the merged changes to trunk: svn commit -m &#8220;new message&#8221;
<li><strong>Continue Development</strong> &#8211; you are safe to proceed as usual.</li>
</ol>
<p>Over the new few weeks I plan on posting more little tutorials and tricks of some more advanved SVN commands, and hopefully it can help some of my fellow team members. Let me know if you have any questions, or want to know how to do other things. But the bottom line is if you haven&#8217;t used the svn switch command, especially in web development, you are sorely missing out.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/09/24/zend-studio-vs-php-development-tools/' rel='bookmark' title='Zend Studio vs PHP Development Tools'>Zend Studio vs PHP Development Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/20/streamlined-web-development-in-depth/' rel='bookmark' title='Streamlined Web Development: In-Depth'>Streamlined Web Development: In-Depth</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2010/09/17/svn-switch-key-to-success-in-web-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignoring Files In SVN</title>
		<link>http://www.justincarmony.com/blog/2010/08/15/ignoring-files-in-svn/</link>
		<comments>http://www.justincarmony.com/blog/2010/08/15/ignoring-files-in-svn/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 07:01:09 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog//?p=571</guid>
		<description><![CDATA[There is a method for ignoring files in an svn via their svn:ingore tool. For those who use windows w/ TortoiseSVN, it has a really slick interface for handling it all. However, for those of us (like me) who are on a Mac and just use the command line, I always forget the commands. So ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/20/recursively-add-new-files-to-svn/' rel='bookmark' title='Recursively Add New Files to SVN'>Recursively Add New Files to SVN</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/07/03/mac-keyboard-quirks-making-mac-more-like-windows/' rel='bookmark' title='Mac Keyboard Quirks &#8211; Making Mac more like Windows'>Mac Keyboard Quirks &#8211; Making Mac more like Windows</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/08/subversion_logo-384x332.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/08/subversion_logo-384x332-150x150.png" alt="" title="subversion_logo-384x332" width="150" height="150" class="alignright size-thumbnail wp-image-588" /></a>There is a method for ignoring files in an svn via their svn:ingore tool. For those who use windows w/ TortoiseSVN, it has a really slick interface for handling it all. However, for those of us (like me) who are on a Mac and just use the command line, I always forget the commands. So here is my note to myself on how to do it:</p>
<p>First, navigate to the folder I want to edit it&#8217;s ignore settings.</p>
<p>Second, execute the command: svn propedit svn:ignore .</p>
<p>(don&#8217;t forget the period)</p>
<p>It will then open up a text editor. You put one match pater (or filename) per line. Save and exit, and your svn properties will have been changed. You then need to commit your change, and you&#8217;re good.</p>
<p>Now, I won&#8217;t forget. If you follow my blog, you might have noticed a trend of myself putting simple things I don&#8217;t do frequently here. It seems I have a terrible memory, and it makes is easy for me to find things on my blog again. Hopefully, just maybe, it will help someone else out there too.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/20/recursively-add-new-files-to-svn/' rel='bookmark' title='Recursively Add New Files to SVN'>Recursively Add New Files to SVN</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/07/03/mac-keyboard-quirks-making-mac-more-like-windows/' rel='bookmark' title='Mac Keyboard Quirks &#8211; Making Mac more like Windows'>Mac Keyboard Quirks &#8211; Making Mac more like Windows</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2010/08/15/ignoring-files-in-svn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Steamlined Web Development Presentation Video</title>
		<link>http://www.justincarmony.com/blog/2009/05/27/steamlined-web-development-presentation-video/</link>
		<comments>http://www.justincarmony.com/blog/2009/05/27/steamlined-web-development-presentation-video/#comments</comments>
		<pubDate>Wed, 27 May 2009 14:41:26 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[UPHPU]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=422</guid>
		<description><![CDATA[Alright, it looks like the Victor at UPHPU has gotten my presentation up on Steamlining your web development. Since it was the first night Victor had tried to capture video &#38; audio to mesh them together, the video on the presentation is a little bit further ahead than the audio.  However, I think the presentation ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/14/php-video-tutorial-getting-started-installing-xampp/' rel='bookmark' title='PHP Video Tutorial – Getting Started – Installing XAMPP'>PHP Video Tutorial – Getting Started – Installing XAMPP</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/20/streamlined-web-development-in-depth/' rel='bookmark' title='Streamlined Web Development: In-Depth'>Streamlined Web Development: In-Depth</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Alright, it looks like the Victor at UPHPU has gotten my presentation up on Steamlining your web development. Since it was the first night Victor had tried to capture video &amp; audio to mesh them together, the video on the presentation is a little bit further ahead than the audio.  However, I think the presentation went quite well. You can view all the UPHPU meeting videos <a title="PHP Video Tutorials" href="http://uphpu.org/meetinglibrary/" target="_blank">here</a>. Here is the presentation I gave:</p>
<p><object width="530" height="398" data="http://podcast.utos.org/meetings/resources/player.swf" type="application/x-shockwave-flash"><param name="id" value="mpl" /><param name="name" value="mpl" /><param name="flashvars" value="&amp;file=http://podcast.utos.org/upload/08_11_uphpu.mp4" /><param name="src" value="http://podcast.utos.org/meetings/resources/player.swf" /><param name="allowfullscreen" value="true" /><param name="quality" value="high" /></object></p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/' rel='bookmark' title='Speaking: Utah PHP Usergroup – Streamlined Web Development'>Speaking: Utah PHP Usergroup – Streamlined Web Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/14/php-video-tutorial-getting-started-installing-xampp/' rel='bookmark' title='PHP Video Tutorial – Getting Started – Installing XAMPP'>PHP Video Tutorial – Getting Started – Installing XAMPP</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/11/20/streamlined-web-development-in-depth/' rel='bookmark' title='Streamlined Web Development: In-Depth'>Streamlined Web Development: In-Depth</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/05/27/steamlined-web-development-presentation-video/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://podcast.utos.org/upload/08_11_uphpu.mp4" length="56348817" type="video/mp4" />
		</item>
		<item>
		<title>Recursively Add New Files to SVN</title>
		<link>http://www.justincarmony.com/blog/2009/02/20/recursively-add-new-files-to-svn/</link>
		<comments>http://www.justincarmony.com/blog/2009/02/20/recursively-add-new-files-to-svn/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 16:51:33 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=401</guid>
		<description><![CDATA[One great thing about running Windows is TortoiseSVN. I makes managing my SVN so easy. One of the problems I&#8217;ve ran into on other systems was I had been working for several hours. I would have dozens of new files and with TortoiseSVN it would show me a list of all the new files and ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/01/21/list-of-50-php-tools/' rel='bookmark' title='List of 50 PHP Tools'>List of 50 PHP Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/06/09/redesigning-blog/' rel='bookmark' title='Redesigning blog&#8230;.'>Redesigning blog&#8230;.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>One great thing about running Windows is TortoiseSVN. I makes managing my SVN so easy. One of the problems I&#8217;ve ran into on other systems was I had been working for several hours. I would have dozens of new files and with TortoiseSVN it would show me a list of all the new files and I could hit &#8220;select all&#8221; and commit. However, on Mac I haven&#8217;t found an SVN client that I like, so I just use the terminal commands. There are also times, like when managing a WordPress installation, that WordPress and its plug-ins could auto update. I wanted to be able to add all the new files on the linux server back into the svn.</p>
<p>I never could figure out how to do it until I read a <a href="http://codesnippets.joyent.com/posts/show/45" target="_blank">comment at a blog post</a>:</p>
<pre>svn st --ignore-externals | grep ^? | sed 's/\?/svn add/' | sh</pre>
<p>Man, shell is just awesome. This is better than the first suggestion of using &#8220;svn add &#8211;force *&#8221; because it would add ignored files as well. Hope this helps someone and makes them happy like I am now!</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/01/21/list-of-50-php-tools/' rel='bookmark' title='List of 50 PHP Tools'>List of 50 PHP Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/06/09/redesigning-blog/' rel='bookmark' title='Redesigning blog&#8230;.'>Redesigning blog&#8230;.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/02/20/recursively-add-new-files-to-svn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Speaking: Utah PHP Usergroup – Streamlined Web Development</title>
		<link>http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/</link>
		<comments>http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 17:41:51 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[trac]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=283</guid>
		<description><![CDATA[Next Thursday, November 20th, at 7 PM Mountain Time (9PM EST, 6PM PST) I will be speaking at the Utah PHP Usergroup meeting on &#8220;Streamlined Web Development.&#8221; I will be speaking with Kevin Carter from Code Greene. Here is the annoucement on the UPHPU website: I’m very pleased to announce the topic for November’s UPHPU ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/07/15/web-development-10-years-ago-now/' rel='bookmark' title='Web Development 10-Years Ago &amp; Now'>Web Development 10-Years Ago &#038; Now</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/24/zend-studio-vs-php-development-tools/' rel='bookmark' title='Zend Studio vs PHP Development Tools'>Zend Studio vs PHP Development Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/04/21/iphone-web-development-controlling-the-viewport-via-javascript/' rel='bookmark' title='iPhone Web Development: Controlling the viewport via Javascript'>iPhone Web Development: Controlling the viewport via Javascript</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Next Thursday, November 20th, at 7 PM Mountain Time (9PM EST, 6PM PST) I will be speaking at the Utah PHP Usergroup meeting on &#8220;Streamlined Web Development.&#8221; I will be speaking with Kevin Carter from <a href="http://www.codegreene.com/" target="_blank">Code Greene</a>. Here is the annoucement on the <a href="http://uphpu.org" target="_blank">UPHPU website</a>:</p>
<blockquote><p>I’m very pleased to announce the topic for November’s UPHPU Meeting : Streamlined Web Development using a VCS (Version Control System) and Trac.</p>
<p>Starting the meeting off will be Code Greene’s Kevin Carter. Kevin, who has used Git in a production environment for several months now, will be presenting a primer on how to get started with Git. Additionally, he’ll cover the advantages of distributed source code control and possibly some topics on using git in an svn eniroment. His blog can be found at http://dexterthedragon.com.</p>
<p>Following Kevin will be are main speaker, Justin Carmony. His presentation will focus on the unique challenges with developing, deploying, &amp; managing Website development. Justin Carmony has put together his trips, tricks, and suggestions for streamlining the development cycle. With a focus on automation, using SVN and Trac allows developers to focus on development rather than redundant tasks. Whether a small project with a single developer, or a large project with a big team, SVN and Trac in a LAMP environment can help any developer. Time permitting he will show some of his own live examples of using SVN &amp; Trac. If you have a specific topics or questions you would like addressed in his presentation, please feel free to let him know on his blog.</p>
<p>Justin Carmony has worked in web development professionally for the last four years. With emphasis on PHP, .NET, and Web Services, he has worked on projects ranging from simple websites to complex communications between thousands of remote systems. He currently is working as an independent contractor &amp; private consultant. If you have any questions, comments, or curiosities you can contact him (justin AT justincarmony DOT com) or read about his latest endeavors at his blog (www.justincarmony.com/blog).</p>
<p>We will have streaming as usual and slides will be posted early.</p></blockquote>
<p>If you&#8217;re in the Salt Lake City area, and would like to attend, it will be at the following address: 12393 Gateway Park Place Suite 600, Draper, Utah.</p>
<p>If you&#8217;re not able to make it, but would still like to listen in &amp; participate via IRC, check out the <a href="http://uphpu.org/live-meeting/" target="_blank">UPHPU&#8217;s live meeting page</a>. If you have any specifics on what you would like to hear, or have any questions that you would like me to answer in my presentation, leave a comment below.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/07/15/web-development-10-years-ago-now/' rel='bookmark' title='Web Development 10-Years Ago &amp; Now'>Web Development 10-Years Ago &#038; Now</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/24/zend-studio-vs-php-development-tools/' rel='bookmark' title='Zend Studio vs PHP Development Tools'>Zend Studio vs PHP Development Tools</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/04/21/iphone-web-development-controlling-the-viewport-via-javascript/' rel='bookmark' title='iPhone Web Development: Controlling the viewport via Javascript'>iPhone Web Development: Controlling the viewport via Javascript</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 21/100 queries in 0.043 seconds using memcached
Content Delivery Network via Rackspace Cloud Files: c747925.r25.cf2.rackcdn.com

Served from: www.justincarmony.com @ 2012-02-07 19:49:34 -->
