diff --git a/CREDITS b/CREDITS
index a2abb36..2ba9b55 100644
--- a/CREDITS
+++ b/CREDITS
@@ -648,3 +648,6 @@ D: Various bug fixes and tests
 N: Mark Grimes
 E: mgrimes@cpan.org
 D: Clean up some tests
+
+N: Josh McAdams
+D: Allow git checkouts to pass some tests that require an svn checkout
diff --git a/lib/Parrot/Distribution.pm b/lib/Parrot/Distribution.pm
index 36daddc..bceca57 100644
--- a/lib/Parrot/Distribution.pm
+++ b/lib/Parrot/Distribution.pm
@@ -130,6 +130,10 @@ BEGIN {
 
 =over 4
 
+=item C<is_svn_co()>
+
+=item C<is_git_co()>
+
 =item C<c_source_file_directories()>
 
 =item C<c_header_file_directories()>
@@ -276,6 +280,26 @@ BEGIN {
     }
 }
 
+=item C<is_svn_co()>
+
+Returns true if this is a subversion checkout of Parrot.
+
+=cut
+
+sub is_svn_co {
+    return shift->directory_exists_with_name('.svn');
+}
+
+=item C<is_git_co()>
+
+Returns true if this is a git checkout of Parrot.
+
+=cut
+
+sub is_git_co {
+    return shift->directory_exists_with_name('.git');
+}
+
 =item C<get_c_language_files()>
 
 Returns the C language source files within Parrot.  Namely:
diff --git a/t/perl/Parrot_IO.t b/t/perl/Parrot_IO.t
index 15cf27e..d7ac928 100644
--- a/t/perl/Parrot_IO.t
+++ b/t/perl/Parrot_IO.t
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 use lib qw( . lib ../lib ../../lib );
-use Test::More 'tests' => 57;
+use Test::More 'tests' => 58;
 use File::Spec::Functions qw(:ALL);
 
 =head1 NAME
@@ -33,7 +33,10 @@ to ensure nothing is broken.
 
 # Path is really only an abstract superclass but there are a few things we
 # can do with it.
-BEGIN { use_ok('Parrot::IO::Path') }
+BEGIN { 
+    use_ok('Parrot::IO::Path');
+    use_ok('Parrot::Distribution');
+}
 
 my $suffix   = 'txt';
 my $name     = 'file';
@@ -158,8 +161,12 @@ is( $a[1], "world", 'array read' );
 
 ok( $f3->modified_since($time), 'modified_since' );
 
-$f = Parrot::IO::File->new( catfile( 'lib', 'Parrot', 'IO', 'File.pm' ) );
-ok( $f->has_svn_id(), 'has_svn_id' );
+SKIP:{
+    skip 'This is not a subversion checkout', 1
+        unless Parrot::Distribution->new->is_svn_co;
+    $f = Parrot::IO::File->new( catfile( 'lib', 'Parrot', 'IO', 'File.pm' ) );
+    ok( $f->has_svn_id(), 'has_svn_id' );
+}
 
 # RT#46913 doesn not work aftern switch to svn
 #ok($f->svn_id() =~ /File.pm,v/, 'svn_id');
