From: Amitai Schlair Date: Sun, 30 Aug 2009 04:17:42 +0000 (-0400) Subject: Knock off a to-do item: "If the argument to cvs add smells like a X-Git-Tag: 3.14159265~61^2~20 X-Git-Url: http://git.tremily.us/?p=ikiwiki.git;a=commitdiff_plain;h=b493f9b6d8e2131dd2338da05d98fded592d0943 Knock off a to-do item: "If the argument to cvs add smells like a binary file, cvs add -kb it (for attachment support)." --- diff --git a/IkiWiki/Plugin/cvs.pm b/IkiWiki/Plugin/cvs.pm index 20b9f793a..ccd9527cd 100644 --- a/IkiWiki/Plugin/cvs.pm +++ b/IkiWiki/Plugin/cvs.pm @@ -219,14 +219,25 @@ sub rcs_add ($) { my $parent=IkiWiki::dirname($file); my @files_to_add = ($file); + eval q{use File::MimeInfo}; + error($@) if $@; + until ((length($parent) == 0) || cvs_is_controlling("$config{srcdir}/$parent")){ push @files_to_add, $parent; $parent = IkiWiki::dirname($parent); } while ($file = pop @files_to_add) { - cvs_runcvs(['add', $file]) || - warn("cvs add $file failed\n"); + if ((@files_to_add == 0) && + (File::MimeInfo::default $file ne 'text/plain')) { + # it's a binary file, add specially + cvs_runcvs(['add', '-kb', $file]) || + warn("cvs add $file failed\n"); + } else { + # directory or regular file + cvs_runcvs(['add', $file]) || + warn("cvs add $file failed\n"); + } } }