6

The upcoming Mac OSX Lion operating system is touting a new file revision control system called Versions (demo video here).

What I'm using for version control right now is rather rudimentary - I either copy and paste the files and number them to 'back them up'/create a new version, or do the same with bulletpoints in Evernote. I've tried looking into systems like GIT, but couldn't use it.

Might this be a good tool for non-techs and writers? What should my considerations be in deciding whether or not to buy this system - and how do the features Apple is advertising for Versions stack up against other revision-control systems?

Goodbye Stack Exchange
  • 9,426
  • 6
  • 34
  • 76
JFW
  • 3,435
  • 3
  • 30
  • 33

4 Answers4

5

Personally I'm not interested in this particular feature, but I know people that are. It's obvious why writers haven't used version control systems: until recently, they were all terrible. Svn? CVS? God help you. Mercurial isn't so bad, but it is designed around programming, and it's still pretty arcane for your average user.

I think Versions might bring the concept of version control to the masses in an accessible way. While I won't use it, I'm sure it'll make many people's lives easier.

rianjs
  • 925
  • 6
  • 10
2

Celtx offered version control several years ago. I got excited about that, and then I never used it. Version control systems are popular in software because rolling back in time is not uncommon (and, at worst, frequent). Writing, though, usually pushes forward. You almost never roll back to an early version of a file. Draft, perhaps.

gmoore
  • 808
  • 7
  • 12
1

I'm not the only one—cool! I've thought about buying a developer membership to get access to the public beta of Lion just for this feature alone.

I figure that if Tower (a popular Git client) is $60, it's worth paying another $40 to get so much more.

Dori
  • 1,402
  • 1
  • 10
  • 15
1

I put some of my writing work in a git repository, but because my colleagues use msword, that's not terribly helpful. I solved that pub putting a directory called plaintext in the repository root, and use a pre-commit script to dump a plain text version of the file into the plaintext directory, so that I get good diffs. It's not perfect, but for the most part it works ok. I use antiword (installed via macports to do) the dirty work. Here's the script:

#!/usr/bin/perl
use warnings;
use strict;
use Path::Class;
use File::Basename;
use File::Path qw/make_path/;
use String::ShellQuote;

# get the root dir of the repository
my $git_root = `cdup="\$PWD/\$(git rev-parse --show-cdup)" && test -n "\$cdup" &
& echo \$cdup`;
chomp $git_root;
chdir $git_root;
$git_root = Path::Class::Dir->new($git_root);

my $txt_dir = $git_root->subdir('plaintext');
mkdir $txt_dir unless -e $txt_dir;

my @doc_files_to_commit = `git status`;

chomp $_ for @doc_files_to_commit;

@doc_files_to_commit =
    grep { /^#\s+(new|modified).*?doc$/i } @doc_files_to_commit;

for (@doc_files_to_commit) {
    $_ =~ s/^.*(?:new|modified)(?: file)?:\s+(.*?)$/$1/;
}

my @extra_commits;

foreach (@doc_files_to_commit) {
    my $dir = dirname($_);
    my $new_file = basename($_, qw/.doc .DOC/) . ".txt";
    push @extra_commits, [Path::Class::File->new($git_root, $_), Path::Class::Fi
le->new($txt_dir, $dir, $new_file)];
}

foreach (@extra_commits) {
    my ($doc, $txt) = @$_;
    my $txt_dir = dirname($txt);
    make_path($txt_dir) if !-e $txt_dir;
    $doc = shell_quote_best_effort("$doc");
    $txt = shell_quote_best_effort("$txt");
    my $cmd = "/opt/local/bin/antiword -f $doc > $txt && git add $txt";
    system $cmd;
}
singingfish
  • 141
  • 2