{"id":405,"date":"2007-11-08T06:31:09","date_gmt":"2007-11-08T12:31:09","guid":{"rendered":"http:\/\/blog.codedread.com\/archives\/2007\/11\/07\/ideal-life-sort\/"},"modified":"2007-11-08T06:31:09","modified_gmt":"2007-11-08T12:31:09","slug":"ideal-life-sort","status":"publish","type":"post","link":"https:\/\/www.codedread.com\/blog\/archives\/2007\/11\/08\/ideal-life-sort\/","title":{"rendered":"Ideal Life Sort"},"content":{"rendered":"<p>As originally discussed <a href=\"http:\/\/blog.codedread.com\/archives\/2005\/02\/14\/subverting-your-life\/#comment-74\">here<\/a> and reported on <a href=\"http:\/\/blog.codedread.com\/archives\/2005\/07\/18\/subverting-your-life-an-update\/\">here<\/a>, I keep most of my work in Subversion repositories.  Since starting doing this it's been much easier to migrate from one machine to another and continue working.  However, there are down sides to using Subversion.  I thought I would lay out what I would consider to be the best method of storing\/accessing my documents.  <!--more--><\/p>\n<div class=\"ads\"><object type=\"text\/html\" width=\"468\" height=\"60\" data=\"http:\/\/www.codedread.com\/gads.php\"><\/object><\/div>\n<p>First, a quick description of what Subversion is:  Subversion is a revision control software that allows multiple people to check out and make changes to documents from a central repository.  For convenient use, it requires the centralized server to be always running and for users to have network access.<\/p>\n<p>The problems I face deal mostly with the centralized aspect, really.  First, I'm running a Linux server at home that is not always available (sometimes I boot it into Windows to get some video conversion\/media editing done).  Second, I am collaborating on several projects at once which means I have to access several repositories, some of which are not under my control - everything in Subversion hinges on the a single server that contains the repository.<\/p>\n<div id=\"Reqts\">\n<h3>Requirements<\/h3>\n<p>So ideally, I'd like the revision control software to be:<\/p>\n<ul>\n<li><strong>Free And Open Source<\/strong> - 'nuff said<\/li>\n<li><strong>Cross-Platform<\/strong> - where Platforms = {Windows, Linux, MacOS }<\/li>\n<li><strong>Fast & Efficient<\/strong> - for all operations (renames, branching, commits, etc)<\/li>\n<li><strong>Accessible<\/strong> - Means the ability to easily browse the repository (including older versions) and do diffs.  It would be nicer if one could do this without having to download the whole repository too (i.e. via a web client like <a href=\"http:\/\/websvn.tigris.org\/\">WebSVN<\/a>.<\/li>\n<li><strong>Secure<\/strong> - Means that the repository should password-protected and transactions must be encrypted<\/li>\n<li><strong>Ability to Lock Down<\/strong> - Means the ability on a per directory (or even per-file basis) and per user basis to set permissions: Read-Write, Read-Only, or None (not even visible to that user).  Some projects I'd like to collaborate on, some I'd like to share, but some are strictly private (like financial information).<\/li>\n<li><strong>Decentralized<\/strong> - If one machine goes down all other users\/machines can still continue working and checking in.  This inherently means that all users\/machines get a full copy of the repository, but I'm ok with that.<\/li>\n<li><strong>Available Offline<\/strong> - I ride the train a few times a week now, so I need to be able to work offline.  This rules out things like Google Docs or similar simple facilities.<\/li>\n<li><strong>Ability to Backup<\/strong> - The problem with SVN is all those .svn directories, one per folder.  If I want to do a backup, I have to <a href=\"http:\/\/blog.codedread.com\/archives\/2007\/04\/26\/using-tar-to-snapshot-a-subversion-working-directory\/\">strip those out<\/a>, which is a pain and time-consuming.  I'd like the ability to just copy the whole repository to some media for archiving.<\/li>\n<li><strong>Ability to Purge<\/strong> - All repositories eventually become large in size because they maintain the history of every single file since the beginning of the repository.  I'm going on three years now and I really haven't ever had a need to go back more than a couple months to look at a version of a file.  I think a purging mechanism would be nice to keep the repositories relatively low in space.  Of course the first time I need to go back to an old version that's no longer available, I'll probably end up cursing this idea and yelling \"Khaaaan!\" like William Shatner.<\/li>\n<\/ul>\n<\/div>\n<p>So actually Subversion comes close to my requirements, but fails on the decentralized thing.  <a href=\"http:\/\/en.wikipedia.org\/wiki\/Git_%28software%29\">Git<\/a> is sounding better.  I may have to give it a shot one day as their tools mature.<\/p>\n<p>Does anybody have any experience with organizing things like code, documents and photos with a version control system?  Any recommended software?<\/p>\n<div class=\"ads\"><object type=\"text\/html\" width=\"468\" height=\"60\" data=\"http:\/\/www.codedread.com\/gads.php\"><\/object><\/div>\n","protected":false},"excerpt":{"rendered":"<p>As originally discussed here and reported on here, I keep most of my work in Subversion repositories. Since starting doing this it&#8217;s been much easier to migrate from one machine to another and continue working. However, there are down sides to using Subversion. I thought I would lay out what I would consider to be [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,25,11],"tags":[],"class_list":["post-405","post","type-post","status-publish","format-standard","hentry","category-questions","category-software","category-technology"],"_links":{"self":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/comments?post=405"}],"version-history":[{"count":0,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/posts\/405\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/media?parent=405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/categories?post=405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codedread.com\/blog\/wp-json\/wp\/v2\/tags?post=405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}