[svk-commit] r2221 - in branches/2.0-releng: lib/SVK/Editor
lib/SVK/Mirror/Backend
nobody at bestpractical.com
nobody at bestpractical.com
Fri Dec 8 03:51:54 EST 2006
Author: clkao
Date: Fri Dec 8 03:51:54 2006
New Revision: 2221
Added:
branches/2.0-releng/lib/SVK/Editor/MapRev.pm
Modified:
branches/2.0-releng/MANIFEST
branches/2.0-releng/lib/SVK/Mirror/Backend/SVNRa.pm
branches/2.0-releng/lib/SVK/Mirror/Backend/SVNSync.pm
Log:
* Use SVK::Editor::MapRev to ensure the editor calls from ra_replay
comes with proper base revision for opening nodes.
* Manifest.
Modified: branches/2.0-releng/MANIFEST
==============================================================================
--- branches/2.0-releng/MANIFEST (original)
+++ branches/2.0-releng/MANIFEST Fri Dec 8 03:51:54 2006
@@ -1,6 +1,7 @@
ARTISTIC
bin/svk
CHANGES
+CHANGES-1.0
COMMITTERS
contrib/bench-mime-detect.pl
contrib/svk-completion.pl
@@ -77,6 +78,7 @@
lib/SVK/Editor/Dynamic.pm
lib/SVK/Editor/InteractiveCommitter.pm
lib/SVK/Editor/InteractiveStatus.pm
+lib/SVK/Editor/MapRev.pm
lib/SVK/Editor/Merge.pm
lib/SVK/Editor/Patch.pm
lib/SVK/Editor/Rename.pm
@@ -227,8 +229,8 @@
t/20add-nomime.t
t/20add.t
t/21delete.t
-t/22status.t
t/22status-conflict.t
+t/22status.t
t/23commit-file.t
t/23commit-inter-nav.t
t/23commit-inter-output.t
@@ -289,3 +291,4 @@
utils/pullyu
utils/svk-ediff.el
utils/verify-mirror
+
Added: branches/2.0-releng/lib/SVK/Editor/MapRev.pm
==============================================================================
--- (empty file)
+++ branches/2.0-releng/lib/SVK/Editor/MapRev.pm Fri Dec 8 03:51:54 2006
@@ -0,0 +1,83 @@
+# BEGIN BPS TAGGED BLOCK {{{
+# COPYRIGHT:
+#
+# This software is Copyright (c) 2003-2006 Best Practical Solutions, LLC
+# <clkao at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of either:
+#
+# a) Version 2 of the GNU General Public License. You should have
+# received a copy of the GNU General Public License along with this
+# program. If not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 or visit
+# their web page on the internet at
+# http://www.gnu.org/copyleft/gpl.html.
+#
+# b) Version 1 of Perl's "Artistic License". You should have received
+# a copy of the Artistic License with this package, in the file
+# named "ARTISTIC". The license is also available at
+# http://opensource.org/licenses/artistic-license.php.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of the
+# GNU General Public License and is only of importance to you if you
+# choose to contribute your changes and enhancements to the community
+# by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with SVK,
+# to Best Practical Solutions, LLC, you confirm that you are the
+# copyright holder for those contributions and you grant Best Practical
+# Solutions, LLC a nonexclusive, worldwide, irrevocable, royalty-free,
+# perpetual, license to use, copy, create derivative works based on
+# those contributions, and sublicense and distribute those contributions
+# and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+package SVK::Editor::MapRev;
+use strict;
+use warnings;
+
+use base 'SVK::Editor::ByPass';
+
+__PACKAGE__->mk_accessors(qw(cb_resolve_rev));
+
+sub rev_at {
+ my ($self, $method) = @_;
+ return 0 if $method eq 'open_root';
+ return 1 if $method eq 'delete_entry';
+ return 2 if $method =~ m'^open_';
+ return 3 if $method =~ m'^add_';
+ return -1;
+}
+
+sub AUTOLOAD {
+ my ($self, @arg) = @_;
+ my $func = our $AUTOLOAD;
+ $func =~ s/^.*:://;
+ return if $func =~ m/^[A-Z]+$/;
+
+ my $rev = $self->rev_at($func);
+ unless ($rev == -1) {
+ $arg[$rev] = $self->cb_resolve_rev->($func, $arg[$rev]);
+ }
+
+ $func = "SUPER::$func";
+ $self->$func(@arg);
+}
+
+1;
Modified: branches/2.0-releng/lib/SVK/Mirror/Backend/SVNRa.pm
==============================================================================
--- branches/2.0-releng/lib/SVK/Mirror/Backend/SVNRa.pm (original)
+++ branches/2.0-releng/lib/SVK/Mirror/Backend/SVNRa.pm Fri Dec 8 03:51:54 2006
@@ -57,6 +57,7 @@
use SVK::I18N;
use SVK::Editor;
use SVK::Mirror::Backend::SVNRaPipe;
+use SVK::Editor::MapRev;
use Class::Autouse qw(SVK::Editor::SubTree SVK::Editor::CopyHandler);
@@ -473,6 +474,15 @@
sub _get_sync_editor {
my ($self, $editor, $target) = @_;
+ $editor = SVK::Editor::MapRev->new(
+ { _editor => [$editor],
+ cb_resolve_rev => sub {
+ my ( $func, $rev ) = @_;
+ return $func =~ m/^add/ ? $rev : $target->revision;
+ }
+ }
+ );
+
$editor = SVK::Editor::CopyHandler->new(
_editor => $editor,
cb_copy => sub {
Modified: branches/2.0-releng/lib/SVK/Mirror/Backend/SVNSync.pm
==============================================================================
--- branches/2.0-releng/lib/SVK/Mirror/Backend/SVNSync.pm (original)
+++ branches/2.0-releng/lib/SVK/Mirror/Backend/SVNSync.pm Fri Dec 8 03:51:54 2006
@@ -103,11 +103,20 @@
sub find_changeset { $_[1] }
-
sub _revmap_prop { }
sub _get_sync_editor {
my ($self, $editor, $target) = @_;
+
+ $editor = SVK::Editor::MapRev->new(
+ { _editor => [$editor],
+ cb_resolve_rev => sub {
+ my ( $func, $rev ) = @_;
+ return $func =~ m/^add/ ? $rev : $target->revision;
+ }
+ }
+ );
+
return SVK::Editor::CopyHandler->new(
_editor => $editor,
cb_copy => sub {
More information about the svk-commit
mailing list