<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Why Subversion is better than Git</title>
	<atom:link href="http://www.databasesandlife.com/why-subversion-is-better-than-git/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/</link>
	<description>Adrian Smith's blog</description>
	<lastBuildDate>Mon, 06 Feb 2012 05:20:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Trolololol</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-90664</link>
		<dc:creator>Trolololol</dc:creator>
		<pubDate>Thu, 02 Feb 2012 15:12:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-90664</guid>
		<description>While I didn&#039;t read your post, I&#039;m glad you wrote this because this probably gives the git zealots and Linus worshippers a heartattack and foam from their mouth.</description>
		<content:encoded><![CDATA[<p>While I didn&#8217;t read your post, I&#8217;m glad you wrote this because this probably gives the git zealots and Linus worshippers a heartattack and foam from their mouth.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathanael Jones</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-67692</link>
		<dc:creator>Nathanael Jones</dc:creator>
		<pubDate>Mon, 22 Aug 2011 18:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-67692</guid>
		<description>It&#039;s extremely unfair to compare subversion&#039;s GUI to git&#039;s command line. 

Git, in my opinion, now has (multiple) UI wrappers that are far more intuitive than TortiseSVN has ever bin. And yes, there is TortiseGit, although SmartGit is much better. 

Give SmartGit a try - I think you&#039;ll realize Git is much easier to teach than SVN, especially to somehow who hasn&#039;t used either before. 

Every SVN user I&#039;ve introduced to Git has switched and never gone back.</description>
		<content:encoded><![CDATA[<p>It&#8217;s extremely unfair to compare subversion&#8217;s GUI to git&#8217;s command line. </p>
<p>Git, in my opinion, now has (multiple) UI wrappers that are far more intuitive than TortiseSVN has ever bin. And yes, there is TortiseGit, although SmartGit is much better. </p>
<p>Give SmartGit a try &#8211; I think you&#8217;ll realize Git is much easier to teach than SVN, especially to somehow who hasn&#8217;t used either before. </p>
<p>Every SVN user I&#8217;ve introduced to Git has switched and never gone back.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Breisacher</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-24551</link>
		<dc:creator>Tyler Breisacher</dc:creator>
		<pubDate>Wed, 01 Dec 2010 16:56:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-24551</guid>
		<description>For the use of reset, this may help: http://blog.plover.com/prog/git-reset.html

But if you just want to revert local changes, not undo changes from an existing commit, you may want to do a checkout, not a reset. I admit this terminology sounds weird coming from svn, but once you start thinking of your .git folder as its own repository, it makes sense. git revert is like svn reverse-merge.</description>
		<content:encoded><![CDATA[<p>For the use of reset, this may help: <a href="http://blog.plover.com/prog/git-reset.html" rel="nofollow">http://blog.plover.com/prog/git-reset.html</a></p>
<p>But if you just want to revert local changes, not undo changes from an existing commit, you may want to do a checkout, not a reset. I admit this terminology sounds weird coming from svn, but once you start thinking of your .git folder as its own repository, it makes sense. git revert is like svn reverse-merge.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adrian</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2064</link>
		<dc:creator>adrian</dc:creator>
		<pubDate>Mon, 09 Feb 2009 13:53:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2064</guid>
		<description>Yes you are definitely right about intermediate commits creating a non-reproducible state, I hadn&#039;t thought of it this way.

I tried your &lt;code&gt;git reset -- file&lt;/code&gt; but it didn&#039;t work for me.
&lt;code&gt;
git rm RobotRunner.php
git status
&#160;deleted:    RobotRunner.php
git reset -- RobotRunner.php
&#160;src/lib/Strings.php: needs update
&lt;/code&gt;
I think by &quot;needs update&quot; it means I need to do a &quot;commit&quot; of some other unrelated files, right? (The naming is not necessarily wrong, but for sure confusing for CVS/Subversion users!). Well I don&#039;t want to do a commit, I just want to do something similar to &lt;code&gt;svn revert&lt;/code&gt;.</description>
		<content:encoded><![CDATA[<p>Yes you are definitely right about intermediate commits creating a non-reproducible state, I hadn&#8217;t thought of it this way.</p>
<p>I tried your <code>git reset -- file</code> but it didn&#8217;t work for me.<br />
<code><br />
git rm RobotRunner.php<br />
git status<br />
&nbsp;deleted:    RobotRunner.php<br />
git reset -- RobotRunner.php<br />
&nbsp;src/lib/Strings.php: needs update<br />
</code><br />
I think by &#8220;needs update&#8221; it means I need to do a &#8220;commit&#8221; of some other unrelated files, right? (The naming is not necessarily wrong, but for sure confusing for CVS/Subversion users!). Well I don&#8217;t want to do a commit, I just want to do something similar to <code>svn revert</code>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narębski</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2056</link>
		<dc:creator>Jakub Narębski</dc:creator>
		<pubDate>Wed, 04 Feb 2009 21:06:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2056</guid>
		<description>&lt;b&gt;About quick fix on the live server and commit&lt;/b&gt;: correct solution (correct as in: you would be able to reproduce &lt;i&gt;state on live server&lt;/i&gt; that you had from version control) is to either use different branch han &#039;master&#039; on live server (like for example &#039;live&#039; ;-)), or push to separate remotes layout
&lt;code&gt;
git push
  fc1b1d7..5edbc69  master -&gt; remotes/live/master
&lt;/code&gt;
Or configure to allow non-fastforward push, but YMMV.

Whether &lt;code&gt;svn revert file&lt;/code&gt; is simplier than &lt;code&gt;git reset -- file&lt;/code&gt; is I think the matter of taste. &lt;a href=&quot;http://git.or.cz/man/git-revert&quot; rel=&quot;nofollow&quot;&gt;git-revert&lt;/a&gt; is taken to mean create a commit which reverts changes in given commit (cherry-picking reverse of commit, patch -R...).</description>
		<content:encoded><![CDATA[<p><b>About quick fix on the live server and commit</b>: correct solution (correct as in: you would be able to reproduce <i>state on live server</i> that you had from version control) is to either use different branch han &#8216;master&#8217; on live server (like for example &#8216;live&#8217; ;-)), or push to separate remotes layout<br />
<code><br />
git push<br />
  fc1b1d7..5edbc69  master -&gt; remotes/live/master<br />
</code><br />
Or configure to allow non-fastforward push, but YMMV.</p>
<p>Whether <code>svn revert file</code> is simplier than <code>git reset -- file</code> is I think the matter of taste. <a href="http://git.or.cz/man/git-revert" rel="nofollow">git-revert</a> is taken to mean create a commit which reverts changes in given commit (cherry-picking reverse of commit, patch -R&#8230;).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adrian</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2055</link>
		<dc:creator>adrian</dc:creator>
		<pubDate>Wed, 04 Feb 2009 19:25:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2055</guid>
		<description>&lt;strong&gt;Title: Why Subversion is better than Git not better than CVS&lt;/strong&gt; - True, sorry about that.

&lt;strong&gt;You can do a quick fix on the live server and commit&lt;/strong&gt; - That doesn&#039;t work for me. In the following example, I alter a file, check it in locally. This file is up-to-date even though the checkout isn&#039;t up-to-date as a whole. After a pull the file has not been altered (showing that it was up-to-date). But only after the pull (updating other files I don&#039;t want to change) can I do a push.

&lt;pre&gt;
vi Wizard.class.php
git commit Wizard.class.php
md5sum Wizard.class.php
  a3472e35266331b664e547feedfd459a  Wizard.class.php
git push
  ! [rejected]        master -&gt; master (non-fast forward)
git pull
md5sum Wizard.class.php
  a3472e35266331b664e547feedfd459a  Wizard.class.php
git push
  fc1b1d7..5edbc69  master -&gt; master
&lt;/pre&gt;

&lt;strong&gt;Other points about Git&#039;s usage&lt;/strong&gt; - Thanks for the tips.

I think as a system increases in complexity, the number of clicks or options one needs to achieve a given task necessarily increases. For example in Google Spreadsheets (simple) there is a &quot;formatting&quot; drop-down where I can select the 0.00 format. On Excel I have to right-click, select formatting, select &quot;number&quot;, then choose the number of decimal places. I think because Subversion is simpler, those things which are also possible with Git, are more accessible in Subversion: for example &quot;svn revert xxx.txt&quot; is easier than the 3 methods you described. Easier means a larger set of people will use the feature, meaning the tool as a whole becomes more useful, as there is less emailing of files. Of course it comes at the trade-off of other features not being available at all, however if they&#039;re not needed (depends on what you&#039;re doing) then that&#039;s a good trade-off.</description>
		<content:encoded><![CDATA[<p><strong>Title: Why Subversion is better than Git not better than CVS</strong> &#8211; True, sorry about that.</p>
<p><strong>You can do a quick fix on the live server and commit</strong> &#8211; That doesn&#8217;t work for me. In the following example, I alter a file, check it in locally. This file is up-to-date even though the checkout isn&#8217;t up-to-date as a whole. After a pull the file has not been altered (showing that it was up-to-date). But only after the pull (updating other files I don&#8217;t want to change) can I do a push.</p>
<pre>
vi Wizard.class.php
git commit Wizard.class.php
md5sum Wizard.class.php
  a3472e35266331b664e547feedfd459a  Wizard.class.php
git push
  ! [rejected]        master -> master (non-fast forward)
git pull
md5sum Wizard.class.php
  a3472e35266331b664e547feedfd459a  Wizard.class.php
git push
  fc1b1d7..5edbc69  master -> master
</pre>
<p><strong>Other points about Git&#8217;s usage</strong> &#8211; Thanks for the tips.</p>
<p>I think as a system increases in complexity, the number of clicks or options one needs to achieve a given task necessarily increases. For example in Google Spreadsheets (simple) there is a &#8220;formatting&#8221; drop-down where I can select the 0.00 format. On Excel I have to right-click, select formatting, select &#8220;number&#8221;, then choose the number of decimal places. I think because Subversion is simpler, those things which are also possible with Git, are more accessible in Subversion: for example &#8220;svn revert xxx.txt&#8221; is easier than the 3 methods you described. Easier means a larger set of people will use the feature, meaning the tool as a whole becomes more useful, as there is less emailing of files. Of course it comes at the trade-off of other features not being available at all, however if they&#8217;re not needed (depends on what you&#8217;re doing) then that&#8217;s a good trade-off.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jakub Narębski</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2054</link>
		<dc:creator>Jakub Narębski</dc:creator>
		<pubDate>Wed, 04 Feb 2009 17:28:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2054</guid>
		<description>&lt;b&gt;Directories being empty&lt;/b&gt;: In Git currently you have to do workaround by keeping for example empty .gitignore file. This is not a fundamental issue, though, and might be changed in the future to allow Git to be configured to track empty directories.

&lt;b&gt;Reverting your changes &lt;i&gt;to some file&lt;/i&gt;?&lt;/b&gt;: Supposed &#039;Git expert&#039; wasn&#039;t much of an expert if he/she didn&#039;t know about &lt;code&gt;git checkout -- &lt;file&gt;&lt;/code&gt;, &lt;code&gt;git checkout HEAD -- &lt;file&gt;&lt;/code&gt; or (in newer Git) &lt;code&gt;git reset -- &lt;file&gt;&lt;/code&gt;. Unfortunately (for Subversion users) &#039;revert&#039; means something different in Git than in Subversion... you can always make &#039;revert-file&#039; alias.

&lt;b&gt;Binary files&lt;/b&gt; are automatically detected in Git (and you can use gitattributes to override detection based on pathnames). The title is &quot;Why Subversion is better than &lt;i&gt;Git&lt;/i&gt;&quot; not &quot;better than CVS&quot;, isn&#039;t it?

&lt;b&gt;Executable flag&lt;/b&gt; (executable bit) is supported in Git. Symbolic links are also supported.

&lt;b&gt;Ignoring files&lt;/b&gt;: I disagree, properties are worse solution than &#039;.gitignore&#039; file(s) (and &#039;.git/info/exclude&#039;, and core.excludesFile). First, they are not recursive. Second (correct me if I am wrong) cvs:ignore is &lt;i&gt;client&lt;/i&gt; property, so it cannot be propagated (like tracked .gitignore file can).

&lt;b&gt;Want to commit with a different user?&lt;/b&gt;: &#039;git commit --author&#039;. By the way, if you are applying patch with description from email using &#039;git am&#039; authorship of a commit is set automagically.

&lt;b&gt;Absolute paths&lt;/b&gt; should now work with (modern) Git. Well... I have checked that &#039;git add /home/adrian/checkout/file.txt&#039; works.

&lt;b&gt;The help is clear&lt;/b&gt; (example of &#039;svn log&#039; and &#039;git log&#039;): more features (like e.g. --grep, or --author, or --since) means longer manpage. But I agree that Git manpages might be cleaner and more newbie friendly.

&lt;b&gt;You can do a quick fix on the live server and commit it&lt;/b&gt; WTF? You can do a commit in Git keeping some files in working directiries dirty, never mind not updated... Perhaps I don&#039;t understand this issue...

&lt;b&gt;Subversion repositories are URLs&lt;/b&gt; So are Git (well, that, or scp-like expressions). And you can put HTTP ones in browser (although you won&#039;t see much if repository is bare, i.e. without working area, as it should be for public repositories, usually), and you can configure gitweb to share the same HTTP URL as repository. Access via SSH or anonymous git:// protocol is much faster; this might change in the future when &quot;smart&quot; HTTP server will get finished.

&lt;b&gt;You can force locking.&lt;/b&gt; True, that is next to impossible in Git. Git is inherently distributed SCM. But I think one would be able to cobble something using hooks and locks / lock server... OTOH you can have custom merge drivers (configured using gitattributes) in Git.

&lt;b&gt;You can embed expandable keywords&lt;/b&gt;: Git, because of its policy of not updating file in working directory if its contents didn&#039;t change, support only very limited set of keywords out of the box, and they have to be turned on using &#039;ident&#039; and &#039;export-subst&#039; gitattributes... or you can use set of smudge / clean checkout gitatribute filters.

&lt;b&gt;You can checkout only a subdirectory of repository&lt;/b&gt;: &lt;i&gt;currently&lt;/i&gt; it is not possible in Git, but patches for &#039;partial checkout&#039; are floating on git mailing list.

&lt;b&gt;Old servers can talk to new clients and vice-versa.&lt;/b&gt; With Git too.

&lt;b&gt;Output is copy-paste friendly&lt;/b&gt; (where you mean that &#039;svn diff&#039; doesn&#039;t have prefix in filenames, i.e. it is &quot;patch -p0&quot; compatibile patch). For Git it was more important to be compatibile with commonly used &quot;patch -p1&quot;, but if you really need it there is &#039;--no-prefix&#039; option to git-diff.

&lt;b&gt;Subversion can handle Unicode file names.&lt;/b&gt; Well, it depends on what do you understand by this, but Git does also support international characters in filenames.

&lt;b&gt;SVN Externals are cool&lt;/b&gt;. Git submodules are svn:externals done right :-)

&lt;b&gt;Git really is unbelievably fast. But is that actually a useful feature?&lt;/b&gt; If diff or status, or commit on the whole project takes seconds or minutes rather than fraction of second, it does matter, because it changes workflow.</description>
		<content:encoded><![CDATA[<p><b>Directories being empty</b>: In Git currently you have to do workaround by keeping for example empty .gitignore file. This is not a fundamental issue, though, and might be changed in the future to allow Git to be configured to track empty directories.</p>
<p><b>Reverting your changes <i>to some file</i>?</b>: Supposed &#8216;Git expert&#8217; wasn&#8217;t much of an expert if he/she didn&#8217;t know about <code>git checkout -- &lt;file&gt;</code>, <code>git checkout HEAD -- &lt;file&gt;</code> or (in newer Git) <code>git reset -- &lt;file&gt;</code>. Unfortunately (for Subversion users) &#8216;revert&#8217; means something different in Git than in Subversion&#8230; you can always make &#8216;revert-file&#8217; alias.</p>
<p><b>Binary files</b> are automatically detected in Git (and you can use gitattributes to override detection based on pathnames). The title is &#8220;Why Subversion is better than <i>Git</i>&#8221; not &#8220;better than CVS&#8221;, isn&#8217;t it?</p>
<p><b>Executable flag</b> (executable bit) is supported in Git. Symbolic links are also supported.</p>
<p><b>Ignoring files</b>: I disagree, properties are worse solution than &#8216;.gitignore&#8217; file(s) (and &#8216;.git/info/exclude&#8217;, and core.excludesFile). First, they are not recursive. Second (correct me if I am wrong) cvs:ignore is <i>client</i> property, so it cannot be propagated (like tracked .gitignore file can).</p>
<p><b>Want to commit with a different user?</b>: &#8216;git commit &#8211;author&#8217;. By the way, if you are applying patch with description from email using &#8216;git am&#8217; authorship of a commit is set automagically.</p>
<p><b>Absolute paths</b> should now work with (modern) Git. Well&#8230; I have checked that &#8216;git add /home/adrian/checkout/file.txt&#8217; works.</p>
<p><b>The help is clear</b> (example of &#8216;svn log&#8217; and &#8216;git log&#8217;): more features (like e.g. &#8211;grep, or &#8211;author, or &#8211;since) means longer manpage. But I agree that Git manpages might be cleaner and more newbie friendly.</p>
<p><b>You can do a quick fix on the live server and commit it</b> WTF? You can do a commit in Git keeping some files in working directiries dirty, never mind not updated&#8230; Perhaps I don&#8217;t understand this issue&#8230;</p>
<p><b>Subversion repositories are URLs</b> So are Git (well, that, or scp-like expressions). And you can put HTTP ones in browser (although you won&#8217;t see much if repository is bare, i.e. without working area, as it should be for public repositories, usually), and you can configure gitweb to share the same HTTP URL as repository. Access via SSH or anonymous git:// protocol is much faster; this might change in the future when &#8220;smart&#8221; HTTP server will get finished.</p>
<p><b>You can force locking.</b> True, that is next to impossible in Git. Git is inherently distributed SCM. But I think one would be able to cobble something using hooks and locks / lock server&#8230; OTOH you can have custom merge drivers (configured using gitattributes) in Git.</p>
<p><b>You can embed expandable keywords</b>: Git, because of its policy of not updating file in working directory if its contents didn&#8217;t change, support only very limited set of keywords out of the box, and they have to be turned on using &#8216;ident&#8217; and &#8216;export-subst&#8217; gitattributes&#8230; or you can use set of smudge / clean checkout gitatribute filters.</p>
<p><b>You can checkout only a subdirectory of repository</b>: <i>currently</i> it is not possible in Git, but patches for &#8216;partial checkout&#8217; are floating on git mailing list.</p>
<p><b>Old servers can talk to new clients and vice-versa.</b> With Git too.</p>
<p><b>Output is copy-paste friendly</b> (where you mean that &#8216;svn diff&#8217; doesn&#8217;t have prefix in filenames, i.e. it is &#8220;patch -p0&#8243; compatibile patch). For Git it was more important to be compatibile with commonly used &#8220;patch -p1&#8243;, but if you really need it there is &#8216;&#8211;no-prefix&#8217; option to git-diff.</p>
<p><b>Subversion can handle Unicode file names.</b> Well, it depends on what do you understand by this, but Git does also support international characters in filenames.</p>
<p><b>SVN Externals are cool</b>. Git submodules are svn:externals done right :-)</p>
<p><b>Git really is unbelievably fast. But is that actually a useful feature?</b> If diff or status, or commit on the whole project takes seconds or minutes rather than fraction of second, it does matter, because it changes workflow.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: C. Michael Pilato</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2053</link>
		<dc:creator>C. Michael Pilato</dc:creator>
		<pubDate>Wed, 04 Feb 2009 14:29:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2053</guid>
		<description>&gt; “svn log” on a directory shows the differences to that directory object (which you rarely
&gt; want), not all the files underneath it (which is what you always want)

&#039;svn log&#039; on a directory can yield somewhat confusing results if your directory isn&#039;t up-to-date, but yes, it does show changes to files inside the directory, exactly as &#039;svn log URL&#039; does.</description>
		<content:encoded><![CDATA[<p>&gt; “svn log” on a directory shows the differences to that directory object (which you rarely<br />
&gt; want), not all the files underneath it (which is what you always want)</p>
<p>&#8216;svn log&#8217; on a directory can yield somewhat confusing results if your directory isn&#8217;t up-to-date, but yes, it does show changes to files inside the directory, exactly as &#8216;svn log URL&#8217; does.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Phippard</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2052</link>
		<dc:creator>Mark Phippard</dc:creator>
		<pubDate>Wed, 04 Feb 2009 14:23:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2052</guid>
		<description>Nice post.  You are brave to be willing to risk the flames of the git zealots.  It is good to hear some real-world feedback.

We, Subversion, are working on re-writing the way the &quot;working copy&quot; is managed for the 1.7 release (this summer).  It will get all those .svn folders out of the working copy which should solve the grep issue and it will also bring massive performance improvements by eliminating all of the crawling of the working copy that has to happen today.

The upcoming 1.6 release brings some improvements to rename handling.  Specifically, adding the concept of a &quot;tree conflict&quot;.  So for example, if you rename a file and then run update, and the update brought in changes to the renamed file, this would raise a tree conflict so that you could review those changes and incorporate them into the renamed version.  Today, in 1.5, this whole process if very silent and you could easily miss the situation.

Anyway, thanks for the posting.

Mark</description>
		<content:encoded><![CDATA[<p>Nice post.  You are brave to be willing to risk the flames of the git zealots.  It is good to hear some real-world feedback.</p>
<p>We, Subversion, are working on re-writing the way the &#8220;working copy&#8221; is managed for the 1.7 release (this summer).  It will get all those .svn folders out of the working copy which should solve the grep issue and it will also bring massive performance improvements by eliminating all of the crawling of the working copy that has to happen today.</p>
<p>The upcoming 1.6 release brings some improvements to rename handling.  Specifically, adding the concept of a &#8220;tree conflict&#8221;.  So for example, if you rename a file and then run update, and the update brought in changes to the renamed file, this would raise a tree conflict so that you could review those changes and incorporate them into the renamed version.  Today, in 1.5, this whole process if very silent and you could easily miss the situation.</p>
<p>Anyway, thanks for the posting.</p>
<p>Mark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adrian</title>
		<link>http://www.databasesandlife.com/why-subversion-is-better-than-git/comment-page-1/#comment-2047</link>
		<dc:creator>adrian</dc:creator>
		<pubDate>Tue, 03 Feb 2009 17:17:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.databasesandlife.com/?p=324#comment-2047</guid>
		<description>Thanks for your detailed answers!

@Stripes - Thanks for the tip.

@Helge - I&#039;m not sure, but certainly at the start CVS was used by nobody, not even web designers. I had to fight hard to get CVS adopted by web design and even so certain things like branches always caused problems to the less technically minded staff. You certainly refused to use it at the start, but that may have changed as time went on. But I understand your rejecting of it - WinCVS was a nightmare - the tool was at fault here - the tool should fit the people (be easy enough to use so as to be accepted by them) not the other way around.

@Flo - Git revert - That&#039;s what my git expert said too, until he tried it. But maybe it&#039;s easier than it seemed at the time, once you know how.

Files can be ignored - Yes you&#039;re right about the recursive feature. I&#039;ve never needed them to be recursive but I can imagine there are plenty of situations where you do.

&quot;git log&quot; usability - True but can you name me the way to get the log to follow file moves/copies? It&#039;s buryed many pages down on the documentation, and there are many options described similar. For example &quot;-M Detect rename&quot; (that&#039;s the entire docu) is not the option I was looking for. SVN has this on by default. I think one of the reasons the SVN docu is smaller is because it does the right thing by default, but maybe I&#039;m wrong.

&quot;svn log&quot; pager - True.

Library - True, but it&#039;s still a collection of command-line tools like CVS. I don&#039;t think that&#039;s the right way to write software, as the only way to interact with command-line tools are arguments and lines of result. To interact with a library you need richer parameters and return values, i.e. objects and structures, which can contain other objects and structures.

Speed - But &quot;svn diff&quot; and &quot;svn log&quot; are also fast. This repository (28k commits): &quot;svn diff&quot; on a file took 0.01 seconds. &quot;svn log&quot; took 0.9 seconds. True if you do it on a directory it takes longer. On the entire checkout (12k regular files) a svn diff took 1.3s (but this wasn&#039;t the first time I ran it - probably everything was in FS cache), and there were very few changes).

Comparison to CVS - True, that deviated from the title a bit.

Tortoise Git - That&#039;s good to hear. I&#039;m sure many of these usability issues will go away with time (the ones that are just down to bad docu and bad defaults.). I mean Tortoise CVS basically hid most of the CVS options. (e.g. &quot;yes I want recursive!&quot;).

But there is still the feeling at the back of my mind that Git solves a problem I don&#039;t need solving, and in doing so, necessarily alienates a lot of users who not only don&#039;t need those problems solving, but also aren&#039;t going to take the time, or may lack the education necessary, to understand the solutions to them.</description>
		<content:encoded><![CDATA[<p>Thanks for your detailed answers!</p>
<p>@Stripes &#8211; Thanks for the tip.</p>
<p>@Helge &#8211; I&#8217;m not sure, but certainly at the start CVS was used by nobody, not even web designers. I had to fight hard to get CVS adopted by web design and even so certain things like branches always caused problems to the less technically minded staff. You certainly refused to use it at the start, but that may have changed as time went on. But I understand your rejecting of it &#8211; WinCVS was a nightmare &#8211; the tool was at fault here &#8211; the tool should fit the people (be easy enough to use so as to be accepted by them) not the other way around.</p>
<p>@Flo &#8211; Git revert &#8211; That&#8217;s what my git expert said too, until he tried it. But maybe it&#8217;s easier than it seemed at the time, once you know how.</p>
<p>Files can be ignored &#8211; Yes you&#8217;re right about the recursive feature. I&#8217;ve never needed them to be recursive but I can imagine there are plenty of situations where you do.</p>
<p>&#8220;git log&#8221; usability &#8211; True but can you name me the way to get the log to follow file moves/copies? It&#8217;s buryed many pages down on the documentation, and there are many options described similar. For example &#8220;-M Detect rename&#8221; (that&#8217;s the entire docu) is not the option I was looking for. SVN has this on by default. I think one of the reasons the SVN docu is smaller is because it does the right thing by default, but maybe I&#8217;m wrong.</p>
<p>&#8220;svn log&#8221; pager &#8211; True.</p>
<p>Library &#8211; True, but it&#8217;s still a collection of command-line tools like CVS. I don&#8217;t think that&#8217;s the right way to write software, as the only way to interact with command-line tools are arguments and lines of result. To interact with a library you need richer parameters and return values, i.e. objects and structures, which can contain other objects and structures.</p>
<p>Speed &#8211; But &#8220;svn diff&#8221; and &#8220;svn log&#8221; are also fast. This repository (28k commits): &#8220;svn diff&#8221; on a file took 0.01 seconds. &#8220;svn log&#8221; took 0.9 seconds. True if you do it on a directory it takes longer. On the entire checkout (12k regular files) a svn diff took 1.3s (but this wasn&#8217;t the first time I ran it &#8211; probably everything was in FS cache), and there were very few changes).</p>
<p>Comparison to CVS &#8211; True, that deviated from the title a bit.</p>
<p>Tortoise Git &#8211; That&#8217;s good to hear. I&#8217;m sure many of these usability issues will go away with time (the ones that are just down to bad docu and bad defaults.). I mean Tortoise CVS basically hid most of the CVS options. (e.g. &#8220;yes I want recursive!&#8221;).</p>
<p>But there is still the feeling at the back of my mind that Git solves a problem I don&#8217;t need solving, and in doing so, necessarily alienates a lot of users who not only don&#8217;t need those problems solving, but also aren&#8217;t going to take the time, or may lack the education necessary, to understand the solutions to them.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

