summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Plugin/cvs.pm15
1 files 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");
+ }
}
}