<?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>Phine Solutions &#187; cvs and subversion</title>
	<atom:link href="http://www.phinesolutions.com/topics/cvs-subversion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phinesolutions.com</link>
	<description>A web log for web work</description>
	<lastBuildDate>Wed, 30 Jun 2010 16:23:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Moving from CVS to Subversion</title>
		<link>http://www.phinesolutions.com/moving-from-cvs-to-subversion.html</link>
		<comments>http://www.phinesolutions.com/moving-from-cvs-to-subversion.html#comments</comments>
		<pubDate>Tue, 10 Nov 2009 19:13:37 +0000</pubDate>
		<dc:creator>1.618</dc:creator>
				<category><![CDATA[cvs and subversion]]></category>

		<guid isPermaLink="false">http://www.phinesolutions.com/?p=311</guid>
		<description><![CDATA[CVS has always been my choice of source control tool. It does what is does and I have always been happy about it. However recently I moved my source code repository from an online server to a home machine, and had an opportunity to look into Subversion, the newer source control system that has been [...]]]></description>
			<content:encoded><![CDATA[<p>CVS has always been my choice of source control tool. It does what is does and I have always been happy about it. However recently I moved my source code repository from an online server to a home machine, and had an opportunity to look into Subversion, the newer source control system that has been adopted by more and more developers.</p>
<p>I consider Subversion has these major advantages over CVS:</p>
<ul>
<li>Since it is the new kid on the block there are more interests to maintain and develop it, and also there are a lot more 3rd party client tools.</li>
<li>Completely designed to be suitable for all file types. CVS was originally designed for text files only so there are some limitations or hurdles when you store binary or unicode files.</li>
<li>Renaming a file or directory is as easy as just &#8220;renaming&#8221; it. In CVS, you have to delete, add with new name and commit. For a developer like me who can&#8217;t make up my mind when naming files and directories, this one is a keeper.</li>
<li>More ways to access repository. From native svn server to ssh and http(s), subversion has more ways to connect to, and therefore, more ways to bypass a firewall that blocks certain ports.</li>
<li>More clients available. Have I mentioned this in the first point? During my years of using CVS I only managed to find two legit GUI client: TortoiseCVS and WinCVS, other than the command line and IDE plugin. Subversion has a lot more in this department.</li>
<li>Some other pros like atomic commit and directory versioning are also good but kind of trivial for me.</li>
</ul>
<p>Now one biggest &#8220;con&#8221;, considered by some, is the absence of &#8220;tagging&#8221; capability in Subversion. CVS lets you &#8220;tag&#8221; a label on a file, so you can create a &#8220;snapshot&#8221; on a repository. If  you use tag to mark the latest production release (and move the tag accordingly) in CVS you&#8217;ll miss this functionality. But in my opinion this is just one way to use source control and this shouldn&#8217;t be considered a disadvantage in Subversion. In this example, a production release branch can always be created with the release number, which I consider a cleaner way than using a tag. Ultimately everyone has a different way to use a source/version control tool and I think it is a good design point for Subversion to abandon tag. Although I have used &#8220;tagging&#8221; before in CVS it is not a heart breaker for me to lose it.</p>
<p>There is one thing I do miss is that not being able to hack into local working copy and change repository locations. I used to write a script which search for CVS/Root and CVS/Repository folder and modify the repository name and server/path when I move my CVS repository from one server to another. Now it seems I have to do a fresh checkout in similar situation in Subversion. Which is probably not a bid deal.</p>
<p>All in all I&#8217;m pretty happy with the move. My Subversion client is TortoiseSVN, using cygwin ssh to connect to repository through svn+ssh.</p>
<p>During the research I also found Git and plenty of Git vs. Subversion comparison discussion. From what I understand Git facilitates a heavy local work copy so you don&#8217;t have to connect to a central repository server, a so-called &#8220;distributed source control system&#8221;. I can see this feature is extremely useful for projects with a lot of developer and active branches, because the collaborations can happen among the &#8220;local copies&#8221;.</p>
<p>Any tips on using Subversion? Please share them here. As a new Subversion converter anything will be helpful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phinesolutions.com/moving-from-cvs-to-subversion.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CVS &#8211; update command problem &#8211; move away the file is in the way</title>
		<link>http://www.phinesolutions.com/cvs-update-command-problem-move-away-the-file-is-in-the-way.html</link>
		<comments>http://www.phinesolutions.com/cvs-update-command-problem-move-away-the-file-is-in-the-way.html#comments</comments>
		<pubDate>Wed, 12 Mar 2008 20:56:28 +0000</pubDate>
		<dc:creator>1.618</dc:creator>
				<category><![CDATA[cvs and subversion]]></category>

		<guid isPermaLink="false">http://www.phinesolutions.com/cvs-update-command-problem-move-away-the-file-is-in-the-way.html</guid>
		<description><![CDATA[Sometimes I am getting this weird error when try to updating the CVS sandbox:
&#8230;move away the file mydir/myfile, it is in the way. 
The file was checked in fine and the problem goes away if I try to run update in the directory where the file is located.
Usually deleting the whole &#8220;mydir&#8221; and do a [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I am getting this weird error when try to updating the CVS sandbox:</p>
<p><em>&#8230;move away the file mydir/myfile, it is in the way. </em></p>
<p>The file was checked in fine and the problem goes away if I try to run update in the directory where the file is located.</p>
<p>Usually deleting the whole &#8220;mydir&#8221; and do a fresh update will fix the problem, but what causes this?</p>
<p>One possible reason is that the directory name was not properly updated in CVS. This can be verified by going to the parent dire of &#8220;mydir&#8221;, and open the entries file in the CVS folder. It should include this line:</p>
<p>D/mydir////</p>
<p>If it&#8217;s not there, adding line to the file can probably fix the issue above.</p>
<p>But what caused the missing directory name then? Beats me. My best guess in my case is that the failed style checking when checking in CVS files has caused some inconsistency in the sandbox, thus the error.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phinesolutions.com/cvs-update-command-problem-move-away-the-file-is-in-the-way.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cvs &#8211; merging and resolving conflict</title>
		<link>http://www.phinesolutions.com/cvs-merging-and-resolving-conflict.html</link>
		<comments>http://www.phinesolutions.com/cvs-merging-and-resolving-conflict.html#comments</comments>
		<pubDate>Thu, 02 Aug 2007 18:31:22 +0000</pubDate>
		<dc:creator>1.618</dc:creator>
				<category><![CDATA[cvs and subversion]]></category>

		<guid isPermaLink="false">http://www.phinesolutions.com/cvs-merging-and-resolving-conflict.html</guid>
		<description><![CDATA[To merge a branch into a HEAD, simply go to the local sandbox for the mainline code, and run:
%cvs upd -jBUGGY_BRANCH
A HEAD can be merged into a branch too using the same method.
To search for the conflict, from the command line, run:
%grep -r &#8220;&#62;&#62;&#62;&#62;&#62;&#8221; *
The result should be a list of files which have the [...]]]></description>
			<content:encoded><![CDATA[<p>To merge a branch into a HEAD, simply go to the local sandbox for the mainline code, and run:</p>
<p><em>%cvs upd -jBUGGY_BRANCH</em></p>
<p>A HEAD can be merged into a branch too using the same method.</p>
<p>To search for the conflict, from the command line, run:</p>
<p><em>%grep -r &#8220;&gt;&gt;&gt;&gt;&gt;&#8221; *</em></p>
<p>The result should be a list of files which have the &#8220;&gt;&gt;&gt;&gt;&gt;&#8221; content. Most likely, indicating the CVS conflict.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phinesolutions.com/cvs-merging-and-resolving-conflict.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>some cvs commands &#8212; since I keep forgetting</title>
		<link>http://www.phinesolutions.com/some-cvs-commands-since-i-keep-forgetting.html</link>
		<comments>http://www.phinesolutions.com/some-cvs-commands-since-i-keep-forgetting.html#comments</comments>
		<pubDate>Tue, 31 Jul 2007 01:42:17 +0000</pubDate>
		<dc:creator>1.618</dc:creator>
				<category><![CDATA[cvs and subversion]]></category>

		<guid isPermaLink="false">http://www.phinesolutions.com/some-cvs-commands-since-i-keep-forgetting.html</guid>
		<description><![CDATA[To get started with a repository:
%export CVSROOT=/home/user/cvs
%cvs init
or, if multiple ROOTs are kept,
%cvs -d /home/user/cvs/project1cvs init
create a source directory just like any normal unix directory, then we can do
%cvs add hello.php
After satisfied with hello.php,
%cvs commit
will check in the file for real.
]]></description>
			<content:encoded><![CDATA[<p>To get started with a repository:</p>
<p>%export CVSROOT=/home/user/cvs</p>
<p>%cvs init</p>
<p>or, if multiple ROOTs are kept,</p>
<p>%cvs -d /home/user/cvs/project1cvs init</p>
<p>create a source directory just like any normal unix directory, then we can do</p>
<p>%cvs add hello.php</p>
<p>After satisfied with hello.php,</p>
<p>%cvs commit</p>
<p>will check in the file for real.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phinesolutions.com/some-cvs-commands-since-i-keep-forgetting.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>remove the CVS folders</title>
		<link>http://www.phinesolutions.com/remove-the-cvs-folders.html</link>
		<comments>http://www.phinesolutions.com/remove-the-cvs-folders.html#comments</comments>
		<pubDate>Sun, 10 Dec 2006 00:52:22 +0000</pubDate>
		<dc:creator>1.618</dc:creator>
				<category><![CDATA[cvs and subversion]]></category>

		<guid isPermaLink="false">http://www.phinesolutions.com/remove-the-cvs-folders.html</guid>
		<description><![CDATA[If you use CVS for your code you probably notice that a CVS folder is created under each directory in your code base. I was playing with the code the other day but struggling to get a clean code base because all these CVS folders are in place. After a little bit of researching this [...]]]></description>
			<content:encoded><![CDATA[<p>If you use CVS for your code you probably notice that a CVS folder is created under each directory in your code base. I was playing with the code the other day but struggling to get a clean code base because all these CVS folders are in place. After a little bit of researching this Unix command did the job for me:</p>
<blockquote><p><font color="#006600">find . -name CVS -exec rm -rf {} \;</font></p></blockquote>
<p>Basically a &#8220;find&#8221; command can be concatenated with other commands so the same operation can be applied recursively to all the found results.</p>
<p>Since this is a Unix command Cygwin is required to run it on Windows.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phinesolutions.com/remove-the-cvs-folders.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
