From b493f9b6d8e2131dd2338da05d98fded592d0943 Mon Sep 17 00:00:00 2001 From: Amitai Schlair Date: Sun, 30 Aug 2009 00:17:42 -0400 Subject: [PATCH] Knock off a to-do item: "If the argument to cvs add smells like a binary file, cvs add -kb it (for attachment support)." --- IkiWiki/Plugin/cvs.pm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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"); + } } } -- 2.44.0