The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Check if every changed text file contains valid UTF-8 data.

PRE_COMMIT {
    my ($svnlook) = @_;
    foreach my $file ($svnlook->added(), $svnlook->updated()) {
	next if $file =~ m:/$:; # skip directories
	my $props = $svnlook->proplist($file);
	next unless exists $props->{'svn:mime-type'}; # skip files without a mime-type
	next unless $props->{'svn:mime-type'} =~ m:^text/:; # skip non-text files

	# Try to decode file contents as UTF-8 and dies if not
	require Encode;
	eval {Encode::decode_utf8($svnlook->cat($file), Encode::FB_CROAK)};
	die "New file '$file' does not contain valid UTF-8 data: $@\n" if $@;
    }
};

1;