#!/usr/bin/perl use warnings; use strict; use Test::More tests => 7; use SVN::Core; use SVN::Repos; use SVN::Fs; use SVN::Ra; my $repo_path = shift; die "usage: $0 /path/to/repo\n" if ! defined $repo_path; my $ra = SVN::Ra->new("file://$repo_path"); my $repo = SVN::Repos::open($repo_path); my $fs = $repo->fs(); my $latest_rev_ra = $ra->get_latest_revnum(); my $latest_rev_repo = $fs->youngest_rev(); is($latest_rev_ra, $latest_rev_repo, 'ra/repos agree on youngest rev'); foreach my $file (qw(/trunk/foo /trunk/bar /branches/test1/foo /branches/test1/bar /branches/test2/foo /branches/test2/bar)) { my $ra_rev = check_ra($file, $latest_rev_ra); my $repos_rev = check_repos($file, $latest_rev_repo); is($ra_rev, $repos_rev, "ra/repos agree on interesting rev for $file ($ra_rev / $repos_rev)"); } # Both functions return the youngest interesting rev for $path that # is <= $rev. # # check_ra uses SVN::Ra, check_repos uses SVN::Repos. # # I would expect them both to return the same result sub check_ra { my $path = shift; my $rev = shift; my $ent = $ra->stat($path, $rev); return $ent->created_rev(); } sub check_repos { my $path = shift; my $rev = shift; my $root = $fs->revision_root($rev); my $hist = $root->node_history($path); $hist = $hist->prev(0); return ($hist->location())[1]; }