<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Directory renaming in SCM</title>
	<atom:link href="http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/feed/" rel="self" type="application/rss+xml" />
	<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/</link>
	<description>Data analysis and Linux</description>
	<lastBuildDate>Thu, 24 Dec 2009 19:03:18 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Manuel Bua</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15635</link>
		<dc:creator>Manuel Bua</dc:creator>
		<pubDate>Thu, 24 Dec 2009 19:03:18 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15635</guid>
		<description>* reformulating the &quot;non-fast-fordward push&quot; case *

dev-b get a non-fast-forward push condition in the case dev-a pushed the rename change but dev-b pulled from the origin previously than dev-a completed the its push: in that case, a pull/fetch request by dev-b is needed to bring in the remote commit and notice the rename thing.</description>
		<content:encoded><![CDATA[<p>* reformulating the &#8220;non-fast-fordward push&#8221; case *</p>
<p>dev-b get a non-fast-forward push condition in the case dev-a pushed the rename change but dev-b pulled from the origin previously than dev-a completed the its push: in that case, a pull/fetch request by dev-b is needed to bring in the remote commit and notice the rename thing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manuel Bua</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15634</link>
		<dc:creator>Manuel Bua</dc:creator>
		<pubDate>Thu, 24 Dec 2009 18:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15634</guid>
		<description>Your git version of the test indeed produce the unexpected result of having 2
directories instead of one, dir-b.
While this is true, as far as the git-test.sh script is concerned, this doesn&#039;t
mean this is the way git is meant to be used with multiple developers.
I don&#039;t know what about other SCM, but what i instantly recognized is that the
testcase doesn&#039;t mimic at all a multi-dev workflow, but instead it&#039;s mimic-ing 3
developers working on the very same *local repository* and this can be very well
the culprit for the &quot;wrong&quot; result.
In fact, having 3 devs and everyone of them working on their own local repo does
not produce the problem, but instead, in the case &quot;Developer A&quot; have not pushed
the rename change yet (or &quot;Developer B&quot; doesn&#039;t update his repo), &quot;Developer B&quot;
will be denied to push his changes upstream and he&#039;ll need to resolve them.
As you may know these are &quot;non-fast-fordward pushes&quot; and are there just to prevent
any attempt at overwriting others&#039; changes: of course git offers you the way to
force it too, but that should be avoided.</description>
		<content:encoded><![CDATA[<p>Your git version of the test indeed produce the unexpected result of having 2<br />
directories instead of one, dir-b.<br />
While this is true, as far as the git-test.sh script is concerned, this doesn&#8217;t<br />
mean this is the way git is meant to be used with multiple developers.<br />
I don&#8217;t know what about other SCM, but what i instantly recognized is that the<br />
testcase doesn&#8217;t mimic at all a multi-dev workflow, but instead it&#8217;s mimic-ing 3<br />
developers working on the very same *local repository* and this can be very well<br />
the culprit for the &#8220;wrong&#8221; result.<br />
In fact, having 3 devs and everyone of them working on their own local repo does<br />
not produce the problem, but instead, in the case &#8220;Developer A&#8221; have not pushed<br />
the rename change yet (or &#8220;Developer B&#8221; doesn&#8217;t update his repo), &#8220;Developer B&#8221;<br />
will be denied to push his changes upstream and he&#8217;ll need to resolve them.<br />
As you may know these are &#8220;non-fast-fordward pushes&#8221; and are there just to prevent<br />
any attempt at overwriting others&#8217; changes: of course git offers you the way to<br />
force it too, but that should be avoided.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ringo De Smet</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15530</link>
		<dc:creator>Ringo De Smet</dc:creator>
		<pubDate>Mon, 24 Aug 2009 14:45:53 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15530</guid>
		<description>I have converted the scripts to use shUnit2, with the intent of adding additional use cases. The original sources and all the changes I did so far can be tracked here:

https://bitbucket.org/ringods/scm-correctness/overview/</description>
		<content:encoded><![CDATA[<p>I have converted the scripts to use shUnit2, with the intent of adding additional use cases. The original sources and all the changes I did so far can be tracked here:</p>
<p><a href="https://bitbucket.org/ringods/scm-correctness/overview/" rel="nofollow">https://bitbucket.org/ringods/scm-correctness/overview/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hinrik Örn Sigurðsson</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15349</link>
		<dc:creator>Hinrik Örn Sigurðsson</dc:creator>
		<pubDate>Mon, 06 Apr 2009 23:35:06 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15349</guid>
		<description>I can see how Git might be viewed as doing the wrong thing here. I can also see how your expected outcome would be confusing to others, even downright harmful.

Since Git tracks /content/, it only tracks files, not directories. Directories only exist as part of a file&#039;s path, as far as Git is concerned. So when you do &quot;git mv dir-a dir-b&quot; to move/rename a directory, you&#039;re just changing the paths of all the files contained in dir-a. The fact that there&#039;s nothing left in dir-a after this operation makes no difference to Git. That is, if you had done &quot;mkdir dir-b &amp;&amp; git mv dir-a/* dir-b/ &amp;&amp; rmdir dir-a&quot; the result would have been the same.

Now, in your example, you merge a branch that moved all files in dir-a to dir-b, you then merge a branch that created a new file in dir-a before the move had happened. It should seem obvious now that the way Git handles this is quite logical. It does not move the new file in dir-a over to dir-b automatically. It would be potentially dangerous to have Git do that by default. How can Git know that it won&#039;t break anything? It can&#039;t know whether the author of the file planned for it to be moved freely. The author may have made changes in other files that expect this file to be where he put it, etc. For this reason I think Git should definitely not move files around like that. In DVCSs where directories are tracked specially (not the case with Git, don&#039;t know about Bazaar or Darcs), this situation should be considered a conflict to be resolved, for the same reasons.</description>
		<content:encoded><![CDATA[<p>I can see how Git might be viewed as doing the wrong thing here. I can also see how your expected outcome would be confusing to others, even downright harmful.</p>
<p>Since Git tracks /content/, it only tracks files, not directories. Directories only exist as part of a file&#8217;s path, as far as Git is concerned. So when you do &#8220;git mv dir-a dir-b&#8221; to move/rename a directory, you&#8217;re just changing the paths of all the files contained in dir-a. The fact that there&#8217;s nothing left in dir-a after this operation makes no difference to Git. That is, if you had done &#8220;mkdir dir-b &amp;&amp; git mv dir-a/* dir-b/ &amp;&amp; rmdir dir-a&#8221; the result would have been the same.</p>
<p>Now, in your example, you merge a branch that moved all files in dir-a to dir-b, you then merge a branch that created a new file in dir-a before the move had happened. It should seem obvious now that the way Git handles this is quite logical. It does not move the new file in dir-a over to dir-b automatically. It would be potentially dangerous to have Git do that by default. How can Git know that it won&#8217;t break anything? It can&#8217;t know whether the author of the file planned for it to be moved freely. The author may have made changes in other files that expect this file to be where he put it, etc. For this reason I think Git should definitely not move files around like that. In DVCSs where directories are tracked specially (not the case with Git, don&#8217;t know about Bazaar or Darcs), this situation should be considered a conflict to be resolved, for the same reasons.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Pete</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15088</link>
		<dc:creator>Pete</dc:creator>
		<pubDate>Tue, 23 Sep 2008 08:00:22 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-15088</guid>
		<description>Trying this with git now (v1.6.0), it produced a merge conflict.

From ../a
 * branch            master     -&gt; FETCH_HEAD
error: Untracked working tree file &#039;dirc/bar.txt&#039; would be overwritten by merge.
fatal: merging of trees ef348a6d2cc53769cd511d2328da08b94b27d928 and 19bf81ec83d14c2b5151fc89ee5f470b3a2ed88b failed
Merge with strategy recursive failed.</description>
		<content:encoded><![CDATA[<p>Trying this with git now (v1.6.0), it produced a merge conflict.</p>
<p>From ../a<br />
 * branch            master     -&gt; FETCH_HEAD<br />
error: Untracked working tree file &#8216;dirc/bar.txt&#8217; would be overwritten by merge.<br />
fatal: merging of trees ef348a6d2cc53769cd511d2328da08b94b27d928 and 19bf81ec83d14c2b5151fc89ee5f470b3a2ed88b failed<br />
Merge with strategy recursive failed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14744</link>
		<dc:creator>James</dc:creator>
		<pubDate>Thu, 17 Jan 2008 09:11:10 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14744</guid>
		<description>Darcs2 still has a ton of problems.  Including ridiculous RAM usage and O(something-large) algorithms.

I have a darcs repo with 1900-ish patches in it and I want to move to git.  However, tailor/darcs2git/etc need to be able to perform a &#039;darcs pull&#039; one patch at a time.  Darcs2 (or darcs 1) cannot even complete pulling the first patch in the repo.  I have a machine with 4GB RAM and darcs runs out of memory.

I cannot run annotate on files in my repo either, which is part of the reason I want to dump it - my history has become useless.  And unless I can get my history into something else, it&#039;s all gone forever. (or until someone can lend me a machine with much more RAM than I have!)

Darcs is not suitable for production use if you care about your history.  Learn git/hg/bzr/monotone - they are all infinitely more reliable, albeit not quite as simple to use.

Apologies for the rant.</description>
		<content:encoded><![CDATA[<p>Darcs2 still has a ton of problems.  Including ridiculous RAM usage and O(something-large) algorithms.</p>
<p>I have a darcs repo with 1900-ish patches in it and I want to move to git.  However, tailor/darcs2git/etc need to be able to perform a &#8216;darcs pull&#8217; one patch at a time.  Darcs2 (or darcs 1) cannot even complete pulling the first patch in the repo.  I have a machine with 4GB RAM and darcs runs out of memory.</p>
<p>I cannot run annotate on files in my repo either, which is part of the reason I want to dump it &#8211; my history has become useless.  And unless I can get my history into something else, it&#8217;s all gone forever. (or until someone can lend me a machine with much more RAM than I have!)</p>
<p>Darcs is not suitable for production use if you care about your history.  Learn git/hg/bzr/monotone &#8211; they are all infinitely more reliable, albeit not quite as simple to use.</p>
<p>Apologies for the rant.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dale</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14249</link>
		<dc:creator>Dale</dc:creator>
		<pubDate>Tue, 01 Jan 2008 21:13:57 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14249</guid>
		<description>I realize this is old, but I went ahead and wrote a test for Monotone: http://www.codefu.org/people/darkness/mtn-test.sh.txt

Monotone 0.38 seems to do the right thing here.  I also went out of my way to do extra work to more closely simulate multiple developers working off of multiple DBs, which is probably unnecessary (I think you could simulate this and see the same results using a single DB).</description>
		<content:encoded><![CDATA[<p>I realize this is old, but I went ahead and wrote a test for Monotone: <a href="http://www.codefu.org/people/darkness/mtn-test.sh.txt" rel="nofollow">http://www.codefu.org/people/darkness/mtn-test.sh.txt</a></p>
<p>Monotone 0.38 seems to do the right thing here.  I also went out of my way to do extra work to more closely simulate multiple developers working off of multiple DBs, which is probably unnecessary (I think you could simulate this and see the same results using a single DB).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brock</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14244</link>
		<dc:creator>Brock</dc:creator>
		<pubDate>Tue, 01 Jan 2008 19:54:36 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14244</guid>
		<description>Clarification -- Darcs2 is _going_ to come out. It is currently out as a release candidate, but still undergoing testing and some development.

I use the current darcs on smaller projects all the time and enjoy it greatly. I&#039;m looking forward to being able to recommend darcs2 for projects of all sizes.</description>
		<content:encoded><![CDATA[<p>Clarification &#8212; Darcs2 is _going_ to come out. It is currently out as a release candidate, but still undergoing testing and some development.</p>
<p>I use the current darcs on smaller projects all the time and enjoy it greatly. I&#8217;m looking forward to being able to recommend darcs2 for projects of all sizes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Justin George</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14231</link>
		<dc:creator>Justin George</dc:creator>
		<pubDate>Tue, 01 Jan 2008 03:53:12 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-14231</guid>
		<description>m--s:
sooo… the reality is: darcs is not yet ready for production use (but I really REALLY do hope it will be)

Darcs 2 came out and largely alleviated those bugs. As it stands, only windows compatibility is really a problem if you hate cygwin.</description>
		<content:encoded><![CDATA[<p>m&#8211;s:<br />
sooo… the reality is: darcs is not yet ready for production use (but I really REALLY do hope it will be)</p>
<p>Darcs 2 came out and largely alleviated those bugs. As it stands, only windows compatibility is really a problem if you hate cygwin.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul</title>
		<link>http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-11131</link>
		<dc:creator>Paul</dc:creator>
		<pubDate>Mon, 10 Sep 2007 02:47:22 +0000</pubDate>
		<guid isPermaLink="false">http://automatthias.wordpress.com/2007/06/07/directory-renaming-in-scm/#comment-11131</guid>
		<description>Here&#039;s a Mercurial version of the script: http://dpaste.com/19091/</description>
		<content:encoded><![CDATA[<p>Here&#8217;s a Mercurial version of the script: <a href="http://dpaste.com/19091/" rel="nofollow">http://dpaste.com/19091/</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
