{"id":22,"date":"2005-08-14T09:57:35","date_gmt":"2005-08-14T16:57:35","guid":{"rendered":"http:\/\/www.red-sweater.com\/blog\/?p=22"},"modified":"2005-08-14T11:07:07","modified_gmt":"2005-08-14T18:07:07","slug":"the-bumpy-road-to-subversion","status":"publish","type":"post","link":"https:\/\/redsweater.com\/blog\/22\/the-bumpy-road-to-subversion","title":{"rendered":"The Bumpy Road to Subversion"},"content":{"rendered":"<p>\nNot too long ago I was convinced to switch to <a href=\"http:\/\/subversion.tigris.org\/\">Subversion<\/a> for one of my most active projects. Unlike some folks, I didn&#8217;t run to Subversion with CVS blood on my fingers, but it was nonetheless a CVS nuisance that finally pushed me over the edge.\n<\/p>\n<p>\nI don&#8217;t know what happened to CVS in Tiger, but on my machine it started causing the Repository files that CVS keeps in its maintenance folder to be ill-formatted. Every time I added a new directory to my project, I had to go in and manually edit the &#8220;Repository&#8221; file so it actually pointed at my local repository directory. Big pain in the butt! Finally, when I was poised to add a bunch of directories to my project, I realized I could either:<\/p>\n<ol>\n<li>Take  the time to figure out what&#8217;s going wrong with CVS and address it.<\/li>\n<li>Grin and bear the CVS pain and manually edit a bunch of files again.<\/li>\n<li>Take the opportunity to figure out what&#8217;s so great about Subversion.<\/li>\n<\/ol>\n<p>\nI decided to be heroic and take option three. Needless to say, the road was not bump-free. I was reasonably happy with subversion&#8217;s documentation and install process, but lots of things that &#8220;just work&#8221; with CVS seemed not to be with subversion. Xcode integration seemed flakier. I had to succumb to the learning curve of Subversion&#8217;s &#8220;simpler but nonetheless different&#8221; way of handling branches and tags. Finally, I lost my Subversion repository to a &#8220;corrupt database.&#8221; Grr! This never happened with CVS! Subversion fans like to say that it happened all the time with CVS but it just wasn&#8217;t smart enough to tell me. Well, my in-tact repositories thank CVS&#8217; foolish ignorance!\n<\/p>\n<p>\nI complained about this database corruption on the Xcode mailing list, which was met with a number of very helpful responses which essentially boil down to &#8220;Duh! You&#8217;re not supposed to use the Berkeley DB backend in Subversion!&#8221; Oh, silly me. I just installed it and used the default. The thing even insisted on me installing a compatible version of Berkeley DB. The bottom line is &#8220;<b>Always use the fsfs backend.<\/b>&#8221; This is apparently the default in more modern releases, but I wasn&#8217;t so lucky. I now have a fresh Subversion repository that picks up about 2 months after my CVS repository leaves off. Fortunately, it was a fairly lazy 2 months on the project.\n<\/p>\n<p>\nI&#8217;m now &#8220;back on track&#8221; with Subversion and am <i>now<\/i> willing to give a tentative thumbs-up. It does make many things feel &#8220;warm and fuzzy.&#8221; With the fsfs backend to the repository, I feel confident that my repository won&#8217;t be corrupted, and if it is, I can still get my data out.  On the Xcode front, <i>something<\/i> has happened to make Xcode more happy with my Subversion repository. Maybe there was a yucky residual file in my old repository, maybe it didn&#8217;t like the output from the version I was using. Who knows. It is not perfect, but it is much better.\n<\/p>\n<p>\nIf you haven&#8217;t switched to Subversion yet, and would like an easy path to installing it, I recommend the <a href=\"http:\/\/metissian.com\/projects\/macosx\/subversion\/\">pre-built binaries<\/a> from Matthew E. Porter. The binaries are recent and default to fsfs for the backend. And you should <b>always use the fsfs backend.<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Not too long ago I was convinced to switch to Subversion for one of my most active projects. Unlike some folks, I didn&#8217;t run to Subversion with CVS blood on my fingers, but it was nonetheless a CVS nuisance that finally pushed me over the edge. I don&#8217;t know what happened to CVS in Tiger, [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-22","post","type-post","status-publish","format-standard","hentry","category-xcode"],"_links":{"self":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/22","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/comments?post=22"}],"version-history":[{"count":0,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/22\/revisions"}],"wp:attachment":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/media?parent=22"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/categories?post=22"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/tags?post=22"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}