SVK

 view release on metacpan or  search on metacpan

CHANGES-1.0  view on Meta::CPAN

  This allows you to svk checkout URL and svk cp URL local-branch.

* Experimental svk push and pull support.

* sync and update now supports -s and -m to sync and/or merge from
  branch source. [Autrijus]

* revert now also marks nodes as resolved.

* mirror, checkout and switch now all support --list, --detach and
  --relocate. [Autrijus]

* New aliases: cm => cmerge, depot => depotmap, sw => switch.

* Implement "svk depot --add", "svk depot --delete". [Autrijus]

* prop{get,set,edit,del} on revprops. [Autrijus]

* Fix smerge -l that trims logs before another smerge in the other
  direction.

CHANGES-2.0  view on Meta::CPAN

[Changes for 2.0.2 - 20 Jul, 2007]

  Mirror subsystem
    * be more friendly when trying to relocating incorrect mirror
      path.

  Merge subsystem
    * Fix a problem when repeatedly merging renames tracked with
      --track-renames, and when merging back such files.
    * Fix the "file not found at revision 0" bug when smerge to a
      mirror where copy source is not normalized.
    * Fix a bug that deletes inside copies aren't properly merged
      across branches even the status output says so.
    * Fix a bug when merging copies across branches we be using

CHANGES-2.0  view on Meta::CPAN

  Mirror subsystem
    * You can now use $SVKNORAREPLAY forcing svk to use old SVN::Mirror
      for sync.
    * Fix a bug when mirroring partial repository with copies, the from
      revision number might not be exactly the ones we have mirrored.
    * In the pipelined sync editor, use pool more wisely for invoking
      editor calls.  This fixes the memory bloat for syncing revisions
      with large number of deleted files.
    * In pipelined replay, make perl don't segfault on SIGINT.
    * Fix the bug committing to subdirs of mirrors that are on /.
    * Fix a bug preventing mirror --relocate to work on mirrors on '/'.
    * Fix a problem replaying failing with RA_DAV_REQUEST_FAILED in some
      servers.

  Merge subsystem
    * Fix a pool usage in Editor::Merge::apply_textdelta, which has a
      side-effect causing rename-tracking smerge on a new file inside a
      renamed directory to fail with SWIG-runtime error.
    * Prevent unwanted repeated merges when repeatedly merging tags to a
      branch.  We now also record the copy source(s) of the path being
      merged from in the merge ticket.

CHANGES-2.0  view on Meta::CPAN


  svk add
    * Display " - (bin)" when adding executable files

  svk annotate
    * Documented --remoterev option

  svk checkout
    * Support floating checkout
    * Allow svk co --detach to be applied to multiple checkouts
    * Fix co --relocate with checkout schedule information
    * When doing autovivification from URL, release the giant lock and
      tell user what to do if the sync failed

  svk commit
    * Support chunk-based interactive commit
    * Don't suck file into memory on commit
    * Support --set-revprop
    * Fix committing single-file checkout

  svk copy

CHANGES-2.0  view on Meta::CPAN

    * On failed rm, report all modified, unknown and scheduled nodes
      instead of just the first one, and suggests --force
    * Support rm multiple depotpath

  svk describe
    * Fix "svk desc 1234@"
    * Report error immediate if a nonexistent revision is given
    * Let 'svk desc 456' work even the checkout in . is only at r123

  svk depot
    * Fix error messages in depot --relocate

  svk diff
    * Fix svk diff on 0-length file on checkout
    * Support --non-recursive (-N)
    * Support --change (-c)
    * Only show differences from copy source for copied nodes
      unless -X is specified
    * Show 'new directory' and copied from in diffs
    * Fix svk diff depotfile checkoutfile
    * Fix diff with copies and modified files

MANIFEST  view on Meta::CPAN

t/deleted/basics.t
t/deleted/complex.t
t/deleted/copy-anchor-delete.t
t/deleted/delete-copy-anchor.t
t/diff/mixed-checkout.t
t/i18n/big5dirname.t
t/i18n/checkout.t
t/i18n/win32filename.t
t/mirror/commit-copy.t
t/mirror/dav-authz.t
t/mirror/relocate.t
t/mirror/sync-bootstrap-resume.t
t/mirror/sync-bootstrap.t
t/mirror/sync-crazy-replace.t
t/mirror/sync-edge-subtree.t
t/mirror/sync-empty.t
t/mirror/sync-escape.t
t/mirror/sync-failed-hook.t
t/mirror/sync-rebase-delta.t
t/mirror/sync-rebase-multi.t
t/mirror/sync-rebase.t

META.yml  view on Meta::CPAN

    version: v2.2.3
  SVK::Command::Checkout:
    file: lib/SVK/Command/Checkout.pm
    version: v2.2.3
  SVK::Command::Checkout::detach:
    file: lib/SVK/Command/Checkout.pm
  SVK::Command::Checkout::list:
    file: lib/SVK/Command/Checkout.pm
  SVK::Command::Checkout::purge:
    file: lib/SVK/Command/Checkout.pm
  SVK::Command::Checkout::relocate:
    file: lib/SVK/Command/Checkout.pm
  SVK::Command::Cleanup:
    file: lib/SVK/Command/Cleanup.pm
    version: v2.2.3
  SVK::Command::Cmerge:
    file: lib/SVK/Command/Cmerge.pm
    version: v2.2.3
  SVK::Command::Commit:
    file: lib/SVK/Command/Commit.pm
    version: v2.2.3

META.yml  view on Meta::CPAN

    version: v2.2.3
  SVK::Command::Depotmap:
    file: lib/SVK/Command/Depotmap.pm
    version: v2.2.3
  SVK::Command::Depotmap::add:
    file: lib/SVK/Command/Depotmap.pm
  SVK::Command::Depotmap::detach:
    file: lib/SVK/Command/Depotmap.pm
  SVK::Command::Depotmap::list:
    file: lib/SVK/Command/Depotmap.pm
  SVK::Command::Depotmap::relocate:
    file: lib/SVK/Command/Depotmap.pm
  SVK::Command::Describe:
    file: lib/SVK/Command/Describe.pm
    version: v2.2.3
  SVK::Command::Diff:
    file: lib/SVK/Command/Diff.pm
    version: v2.2.3
  SVK::Command::Help:
    file: lib/SVK/Command/Help.pm
    version: v2.2.3

META.yml  view on Meta::CPAN

    file: lib/SVK/Command/Mirror.pm
    version: v2.2.3
  SVK::Command::Mirror::bootstrap:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::detach:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::list:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::recover:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::relocate:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::unlock:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mirror::upgrade:
    file: lib/SVK/Command/Mirror.pm
  SVK::Command::Mkdir:
    file: lib/SVK/Command/Mkdir.pm
    version: v2.2.3
  SVK::Command::Move:
    file: lib/SVK/Command/Move.pm

lib/SVK/Command/Checkout.pm  view on Meta::CPAN

use SVK::Util qw( get_anchor abs_path move_path splitdir $SEP get_encoding abs_path_noexist catfile );
use File::Path;
use SVK::Logger;

sub options {
    ($_[0]->SUPER::options,
     'l|list' => 'list',
     'd|delete|detach' => 'detach',
     'purge' => 'purge',
     'export' => 'export',
     'relocate' => 'relocate',
     'floating' => 'floating');
}

sub parse_arg {
    my ($self, @arg) = @_;

    return if $#arg < 0 || $#arg > 1;

    my ($src, $dst) = @arg;
    $dst = '' unless defined $dst;

lib/SVK/Command/Checkout.pm  view on Meta::CPAN

sub run {
    my ($self) = @_;
    my $map = $self->{xd}{checkout}{hash};
    my $fmt = "%1s %-30s\t%-s\n";
    $logger->info(sprintf $fmt, ' ', loc('Depot Path'), loc('Path')); 
     $logger->info('=' x 72, "\n");
    $logger->info( sort(map sprintf($fmt, -e $_ ? ' ' : '?', $map->{$_}{depotpath}, $_), grep $map->{$_}{depotpath}, keys %$map));
    return;
}

package SVK::Command::Checkout::relocate;
use base qw( SVK::Command::Checkout );
use SVK::Util qw( get_anchor abs_path move_path splitdir $SEP );
use SVK::Logger;
use SVK::I18N;

sub parse_arg {
    my ($self, @arg) = @_;
    die loc("Do you mean svk switch %1?\n", $arg[0]) if @arg == 1;
    return if @arg > 2;
    return @arg;
}

sub lock { ++$_[0]->{hold_giant} }

sub run {
    my ($self, $path, $report) = @_;

    $self->_not_if_floating('--relocate');

    my @copath = $self->_find_copath($path)
        or die loc("'%1' is not a checkout path.\n", $path);
    @copath == 1
        or die loc("'%1' maps to multiple checkout paths.\n", $path);

    my $target = abs_path ($report);
    if (defined $target) {
        my ($entry, @where) = $self->{xd}{checkout}->get ($target);
        die loc("Overlapping checkout path is not supported (%1); use 'svk checkout --detach' to remove it first.\n", $where[0])
            if exists $entry->{depotpath};
    }

    # Manually relocate all paths
    my $hmap = $self->{xd}{checkout}{hash};

    my $abs_path = abs_path($path);
    if ($hmap->{$abs_path} and -d $abs_path) {
        move_path($path => $report);
        $target = abs_path ($report);
    }

    my $prefix = $copath[0].$SEP;
    my $length = length($copath[0]);
    my $relocate = sub {
        my $map = shift;
        for my $key ( sort grep { index( "$_$SEP", $prefix ) == 0 }
            keys %$map ) {
            $map->{ $target . substr( $key, $length ) } = delete $map->{$key};
        }
    };
    $relocate->($hmap);
    $relocate->($self->{xd}{checkout}{sticky});

    $logger->info( loc("Checkout '%1' relocated to '%2'.\n", $path, $target));

    return;
}

package SVK::Command::Checkout::detach;
use base qw( SVK::Command::Checkout );
use SVK::Logger;
use SVK::I18N;

sub parse_arg {

lib/SVK/Command/Checkout.pm  view on Meta::CPAN


=head1 NAME

SVK::Command::Checkout - Checkout the depotpath

=head1 SYNOPSIS

 checkout DEPOTPATH [PATH]
 checkout --list
 checkout --detach [DEPOTPATH | PATH]
 checkout --relocate DEPOTPATH|PATH PATH
 checkout --purge

=head1 OPTIONS

 -r [--revision] REV    : act on revision REV instead of the head revision
 -N [--non-recursive]   : do not descend recursively
 -l [--list]            : list checkout paths
 -d [--detach]          : mark a path as no longer checked out
 -q [--quiet]           : quiet mode
 --export               : export mode; checkout a detached copy
 --floating             : create a floating checkout
 --relocate             : relocate the checkout to another path
 --purge                : detach checkout directories which no longer exist

lib/SVK/Command/Depotmap.pm  view on Meta::CPAN

use SVK::I18N;
use SVK::Logger;
use SVK::Util qw( get_buffer_from_editor abs_path move_path );
use YAML::Syck;
use File::Path;

sub options {
    ('l|list' => 'list',
     'i|init' => 'init',
     'd|delete|detach' => 'detach',
     'relocate' => 'relocate');
}

sub parse_arg {
    my ($self, @arg) = @_;

    ++$self->{hold_giant};
    $self->rebless ('depotmap::add')->{add} = 1 if @arg >= 2 and !$self->{relocate};

    return undef
	unless $self->{add} or $self->{detach} or $self->{relocate};

        @arg or die loc("Need to specify a depot name.\n");

        my $depot = shift(@arg);
        @arg or die loc("Need to specify a path name for depot.\n")
            unless $self->{detach};

        my $map = $self->{xd}{depotmap};
        my $path = $depot;
        my $abs_path = abs_path($path);
        $depot =~ s{/}{}go;

        return ($depot, @arg) if $self->{add} or $map->{$depot} or !$abs_path;

        # Translate repospath into depotname
        foreach my $name (sort keys %$map) {
            (abs_path($map->{$name}) eq $abs_path) or next;
            move_path($path => $arg[0]) if $self->{relocate} and -d $path;
            return ($name, @arg);
        }

        return ($depot, @arg);
}

sub run {
    my ($self) = @_;
    my $sep = '===edit the above depot map===';
    my $map = YAML::Syck::Dump ($self->{xd}{depotmap});

lib/SVK/Command/Depotmap.pm  view on Meta::CPAN


    die loc("Depot '%1' already exists; use 'svk depotmap --detach' to remove it first.\n", $depot)
        if $self->{xd}{depotmap}{$depot};

    $self->{xd}{depotmap}{$depot} = $path;

    $logger->info(loc("New depot map saved."));
    $self->{xd}->create_depots;
}

package SVK::Command::Depotmap::relocate;
use base qw(SVK::Command::Depotmap);
use SVK::Logger;
use SVK::I18N;

sub run {
    my ($self, $depot, $path) = @_;

    die loc("Depot '%1' does not exist in the depot map.\n", $depot)
        if !$self->{xd}{depotmap}{$depot};

    $self->{xd}{depotmap}{$depot} = $path;

    $logger->info( loc("Depot '%1' relocated to '%2'.\n", $depot, $path));
    $self->{xd}->create_depots;
}

package SVK::Command::Depotmap::detach;
use base qw(SVK::Command::Depotmap);
use SVK::Logger;
use SVK::I18N;

sub run {
    my ($self, $depot) = @_;

lib/SVK/Command/Depotmap.pm  view on Meta::CPAN


SVK::Command::Depotmap - Create or edit the depot mapping configuration

=head1 SYNOPSIS

 depotmap [OPTIONS]
 depotmap DEPOTNAME /path/to/repository

 depotmap --list
 depotmap --detach [DEPOTNAME | PATH]
 depotmap --relocate [DEPOTNAME | PATH] PATH

=head1 OPTIONS

 -i [--init]            : initialize a default depot
 -l [--list]            : list current depot mappings
 -d [--detach]          : remove a depot from the mapping
 --relocate             : relocate the depot to another path

=head1 DESCRIPTION

Run this command without any options would bring up your C<$EDITOR>,
and let you edit your depot-directory mapping.

Each line contains a map entry, the format is:

 depotname: '/path/to/repos'

lib/SVK/Command/Mirror.pm  view on Meta::CPAN

use SVK::Util qw( is_uri get_prompt traverse_history );
use SVK::Logger;

use constant narg => undef;

sub options {
    ('l|list'  => 'list',
     'd|delete|detach'=> 'detach',
     'b|bootstrap=s' => 'bootstrap',
     'upgrade' => 'upgrade',
     'relocate'=> 'relocate',
     'unlock'=> 'unlock',
     'recover'=> 'recover');
}

sub lock {} # override commit's locking

sub parse_arg {
    my ($self, @arg) = @_;

    @arg = ('//') if $self->{upgrade} and !@arg;

lib/SVK/Command/Mirror.pm  view on Meta::CPAN

            url     => "$source", # this can be an URI object
            pool    => SVN::Pool->new
        }
    );

    $logger->info( loc("Mirror initialized.  Run svk sync %1 to start mirroring.\n", $target->report));

    return;
}

package SVK::Command::Mirror::relocate;
use SVK::Logger;
use base qw(SVK::Command::Mirror);
use SVK::I18N;

sub run {
    my ($self, $target, $source, @options) = @_;

    my ($m, $mpath) = $target->is_mirrored;

    die loc("%1 is not a mirrored path.\n", $target->depotpath) if !$m;
    die loc("%1 is inside a mirrored path.\n", $target->depotpath) if $mpath;

    $m->relocate($source, @options);

    $logger->info( loc("Mirror relocated."));
    return;
}

package SVK::Command::Mirror::detach;
use base qw(SVK::Command::Mirror);
use SVK::I18N;

use SVK::Logger;
use constant narg => 1;

lib/SVK/Command/Mirror.pm  view on Meta::CPAN


=head1 SYNOPSIS

 mirror [http|svn]://host/path DEPOTPATH

 # You may also list the target part first:
 mirror DEPOTPATH [http|svn]://host/path

 mirror --bootstrap=DUMPFILE DEPOTPATH [http|svn]://host/path 
 mirror --list [DEPOTNAME...]
 mirror --relocate DEPOTPATH [http|svn]://host/path 
 mirror --detach DEPOTPATH
 mirror --recover DEPOTPATH

 mirror --upgrade //
 mirror --upgrade /DEPOTNAME/

=head1 OPTIONS

 -b [--bootstrap]       : mirror from a dump file
 -l [--list]            : list mirrored paths
 -d [--detach]          : mark a depotpath as no longer mirrored
 --relocate             : change the upstream URI for the mirrored depotpath
 --recover              : recover the state of a mirror path
 --unlock               : forcibly remove stalled locks on a mirror
 --upgrade              : upgrade mirror state to the latest version

lib/SVK/Command/Switch.pm  view on Meta::CPAN


=head1 NAME

SVK::Command::Switch - Switch to another branch and keep local changes

=head1 SYNOPSIS

 switch DEPOTPATH [PATH]

For information about how to change the mirrored location of a remote
repository, please see the C<--relocate> option to C<svk mirror>.

=head1 OPTIONS

 -r [--revision] REV    : act on revision REV instead of the head revision
 -d [--detach]          : mark a path as no longer checked out
 -q [--quiet]           : print as little as possible

lib/SVK/I18N/i_default.po  view on Meta::CPAN

"    action taken. These characters have the following meaning:"
msgstr ""

#: lib/SVK/Command.pod:49
msgid "    For example, here's the way to display the info of a checkout path:"
msgstr ""

#: lib/SVK/Command.pod:51
msgid ""
"    For information about how to change the mirrored location of a remote\n"
"    repository, please see the --relocate option to svk mirror."
msgstr ""

#: lib/SVK/Command.pod:52
msgid "    Here is an example for the value of the property:"
msgstr ""

#: lib/SVK/Command.pod:55
msgid ""
"    If both --sync and --merge are specified, like in svk up -sm, it will\n"
"    first synchronize the mirrored copy source path, and then smerge from\n"

lib/SVK/I18N/i_default.po  view on Meta::CPAN


#: lib/SVK/Command.pod:272
msgid "--purge: detach checkout directories which no longer exist"
msgstr ""

#: lib/SVK/Command.pod:273
msgid "--recover: recover the state of a mirror path"
msgstr ""

#: lib/SVK/Command.pod:274
msgid "--relocate: change the upstream URI for the mirrored depotpath"
msgstr ""

#: lib/SVK/Command.pod:275
msgid "--relocate: relocate the checkout to another path"
msgstr ""

#: lib/SVK/Command.pod:276
msgid "--relocate: relocate the depot to another path"
msgstr ""

#: lib/SVK/Command.pod:277
msgid "--remoterev: display remote revision numbers (on mirrors only)"
msgstr ""

#: lib/SVK/Command.pod:278
msgid "--remoterev: use remote revision numbers in merge log"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN

#: lib/SVK/Command/Merge.pm:86
msgid "Can't merge across depots.\n"
msgstr ""

#: lib/SVK/Command/Merge.pm:159
msgid "Can't merge with specified revisions with smart merge.\n"
msgstr ""

#: lib/SVK/Mirror/Backend/SVNRa.pm:241
#. ($self->source_path, $source_path)
msgid "Can't relocate: mirror subdirectory changed from %1 to %2.\n"
msgstr ""

#: lib/SVK/Command/Propset.pm:166
msgid "Can't set svn:eol-style on depotpath.\n"
msgstr ""

#: lib/SVK/Command/Commit.pm:115
msgid "Can't use -F with -m.\n"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN

msgid "Changed paths:\n"
msgstr ""

#: lib/SVK/Command/Commit.pm:241
#. ($m->url)
msgid "Checking locally against mirror source %1."
msgstr ""

#: lib/SVK/Command/Checkout.pm:277
#. ($path, $target)
msgid "Checkout '%1' relocated to '%2'.\n"
msgstr ""

#: lib/SVK/Command/Info.pm:95
#. ($target->copath)
msgid "Checkout Path: %1\n"
msgstr ""

#: lib/SVK/Command.pod:363
msgid "Checkout Path: /Users/gugod/dev/svk"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN

msgid "Depot '%1' detached.\n"
msgstr ""

#: lib/SVK/Command/Depotmap.pm:143 lib/SVK/Command/Depotmap.pm:159
#. ($depot)
msgid "Depot '%1' does not exist in the depot map.\n"
msgstr ""

#: lib/SVK/Command/Depotmap.pm:148
#. ($depot, $path)
msgid "Depot '%1' relocated to '%2'.\n"
msgstr ""

#: lib/SVK/Command/Describe.pm:91
#. ($target_root->depotname, $rev)
msgid "Depot /%1/ has no revision %2\n"
msgstr ""

#: lib/SVK/Command/Mirror.pm:194
#. ($depot)
msgid "Depot /%1/ not loadable.\n"

lib/SVK/I18N/i_default.po  view on Meta::CPAN

msgid "Mirror initialized.  Run svk sync %1 to start mirroring.\n"
msgstr ""

#: lib/SVK/Command/Mirror.pm:141
#. ($target->depotpath)
msgid "Mirror path '%1' detached.\n"
msgstr ""

#: lib/SVK/Mirror/Backend/SVNRa.pm:258
#. ($mirror->url)
msgid "Mirror relocated to %1"
msgstr ""

#: lib/SVK/Command/Mirror.pm:123
msgid "Mirror relocated.\n"
msgstr ""

#: lib/SVK/Mirror/Backend/SVNRa.pm:233
msgid "Mirror source UUIDs differ.\n"
msgstr ""

#: lib/SVK/Command/Mirror.pm:297
msgid "Mirror state successfully recovered.\n"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN


#: lib/SVK/Command.pod:470
msgid "checkout --list"
msgstr ""

#: lib/SVK/Command.pod:471
msgid "checkout --purge"
msgstr ""

#: lib/SVK/Command.pod:472
msgid "checkout --relocate DEPOTPATH|PATH PATH"
msgstr ""

#: lib/SVK/Command.pod:473
msgid "checkout DEPOTPATH [PATH]"
msgstr ""

#: lib/SVK/Command.pod:474
msgid "cleanup - Remove stalled locks"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN


#: lib/SVK/Command.pod:491
msgid "depotmap --detach [DEPOTNAME | PATH]"
msgstr ""

#: lib/SVK/Command.pod:492
msgid "depotmap --list"
msgstr ""

#: lib/SVK/Command.pod:493
msgid "depotmap --relocate [DEPOTNAME | PATH] PATH"
msgstr ""

#: lib/SVK/Command.pod:494
msgid "depotmap DEPOTNAME /path/to/repository"
msgstr ""

#: lib/SVK/Command.pod:495
msgid "depotmap [OPTIONS]"
msgstr ""

lib/SVK/I18N/i_default.po  view on Meta::CPAN


#: lib/SVK/Command.pod:549
msgid "mirror --list [DEPOTNAME...]"
msgstr ""

#: lib/SVK/Command.pod:550
msgid "mirror --recover DEPOTPATH"
msgstr ""

#: lib/SVK/Command.pod:551
msgid "mirror --relocate DEPOTPATH [http|svn]://host/path "
msgstr ""

#: lib/SVK/Command.pod:552
msgid "mirror --upgrade //"
msgstr ""

#: lib/SVK/Command.pod:553
msgid "mirror --upgrade /DEPOTNAME/"
msgstr ""

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN

msgstr ""
"    在列出更新的项目时,每列开头会以一个字符表示采取的更动。字符的意义如下:"

#: lib/SVK/Command.pod:49
msgid "    For example, here's the way to display the info of a checkout path:"
msgstr "    举例来说,这样会显示取出路径的信息:"

#: lib/SVK/Command.pod:51
msgid ""
"    For information about how to change the mirrored location of a remote\n"
"    repository, please see the --relocate option to svk mirror."
msgstr ""

#: lib/SVK/Command.pod:52
msgid "    Here is an example for the value of the property:"
msgstr ""

#: lib/SVK/Command.pod:55
msgid ""
"    If both --sync and --merge are specified, like in svk up -sm, it will\n"
"    first synchronize the mirrored copy source path, and then smerge from\n"

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN


#: lib/SVK/Command.pod:272
msgid "--purge: detach checkout directories which no longer exist"
msgstr ""

#: lib/SVK/Command.pod:273
msgid "--recover: recover the state of a mirror path"
msgstr "--recover: 修复映像路径的状态"

#: lib/SVK/Command.pod:274
msgid "--relocate: change the upstream URI for the mirrored depotpath"
msgstr "--relocate: 将映像的档案库路径指向另一个网址"

#: lib/SVK/Command.pod:275
msgid "--relocate: relocate the checkout to another path"
msgstr "--relocate: 将取出路径指向另一个路径"

#: lib/SVK/Command.pod:276
msgid "--relocate: relocate the depot to another path"
msgstr "--relocate: 将档案库指向另一个路径"

#: lib/SVK/Command.pod:277
msgid "--remoterev: display remote revision numbers (on mirrors only)"
msgstr "--remoterev: 在合并纪录里,使用远程的更动编号(仅适用于映像路径)"

#: lib/SVK/Command.pod:278
msgid "--remoterev: use remote revision numbers in merge log"
msgstr "--remoterev: 在合并纪录里,使用远程的更动编号"

#: lib/SVK/Command/Update.pm:87

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN

#: lib/SVK/Command/Merge.pm:86
msgid "Can't merge across depots.\n"
msgstr "无法跨档案库进行合并。\n"

#: lib/SVK/Command/Merge.pm:159
msgid "Can't merge with specified revisions with smart merge.\n"
msgstr ""

#. ($self->source_path, $source_path)
#: lib/SVK/Mirror/Backend/SVNRa.pm:241
msgid "Can't relocate: mirror subdirectory changed from %1 to %2.\n"
msgstr "无法重新指向:映像路径已从 %1 改为 %2。\n"

#: lib/SVK/Command/Propset.pm:166
msgid "Can't set svn:eol-style on depotpath.\n"
msgstr "无法设定档案库路径的 svn:eol-style 属性。\n"

#: lib/SVK/Command/Commit.pm:115
msgid "Can't use -F with -m.\n"
msgstr "无法同时指定 -F 及 -m。\n"

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN

msgid "Changed paths:\n"
msgstr "已修改路径:\n"

#. ($m->url)
#: lib/SVK/Command/Commit.pm:241
msgid "Checking locally against mirror source %1."
msgstr "正在本地端检查映像来源 %1。"

#. ($path, $target)
#: lib/SVK/Command/Checkout.pm:277
msgid "Checkout '%1' relocated to '%2'.\n"
msgstr "取出路径‘%1’已改为指向‘%2’。\n"

#. ($target->copath)
#: lib/SVK/Command/Info.pm:95
msgid "Checkout Path: %1\n"
msgstr "取出路径:%1\n"

#: lib/SVK/Command.pod:363
msgid "Checkout Path: /Users/gugod/dev/svk"
msgstr "取出路径:/Users/gugod/dev/svk"

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN

msgid "Depot '%1' detached.\n"
msgstr "档案库‘%1’已成功解除。\n"

#. ($depot)
#: lib/SVK/Command/Depotmap.pm:143 lib/SVK/Command/Depotmap.pm:159
msgid "Depot '%1' does not exist in the depot map.\n"
msgstr "档案库‘%1’不存在于对映表中。\n"

#. ($depot, $path)
#: lib/SVK/Command/Depotmap.pm:148
msgid "Depot '%1' relocated to '%2'.\n"
msgstr "档案库‘%1’已改为指向‘%2’。\n"

#. ($target_root->depotname, $rev)
#: lib/SVK/Command/Describe.pm:91
msgid "Depot /%1/ has no revision %2\n"
msgstr "档案库 /%1/ 没有编号为 %2 的更动\n"

#. ($depot)
#: lib/SVK/Command/Mirror.pm:194
msgid "Depot /%1/ not loadable.\n"

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN

msgid "Mirror initialized.  Run svk sync %1 to start mirroring.\n"
msgstr ""

#. ($target->depotpath)
#: lib/SVK/Command/Mirror.pm:141
msgid "Mirror path '%1' detached.\n"
msgstr "成功解除路径‘%1’的映像状态。\n"

#. ($mirror->url)
#: lib/SVK/Mirror/Backend/SVNRa.pm:258
msgid "Mirror relocated to %1"
msgstr "映像已重新定位至 %1"

#: lib/SVK/Command/Mirror.pm:123
msgid "Mirror relocated.\n"
msgstr ""

#: lib/SVK/Mirror/Backend/SVNRa.pm:233
msgid "Mirror source UUIDs differ.\n"
msgstr ""

#: lib/SVK/Command/Mirror.pm:297
msgid "Mirror state successfully recovered.\n"
msgstr "成功修复路径的映像状态。\n"

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN


#: lib/SVK/Command.pod:470
msgid "checkout --list"
msgstr "checkout --list"

#: lib/SVK/Command.pod:471
msgid "checkout --purge"
msgstr "checkout --purge"

#: lib/SVK/Command.pod:472
msgid "checkout --relocate DEPOTPATH|PATH PATH"
msgstr "checkout --relocate 档案库路径|路径 路径"

#: lib/SVK/Command.pod:473
msgid "checkout DEPOTPATH [PATH]"
msgstr "checkout 档案库路径 [路径]"

#: lib/SVK/Command.pod:474
msgid "cleanup - Remove stalled locks"
msgstr "cleanup - 移除卡住的锁定"

#: lib/SVK/Command.pod:475

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN


#: lib/SVK/Command.pod:491
msgid "depotmap --detach [DEPOTNAME | PATH]"
msgstr "depotmap --detach [档案库名称 | 路径]"

#: lib/SVK/Command.pod:492
msgid "depotmap --list"
msgstr "depotmap --list"

#: lib/SVK/Command.pod:493
msgid "depotmap --relocate [DEPOTNAME | PATH] PATH"
msgstr "depotmap --relocate [档案库名称 | 路径] 路径"

#: lib/SVK/Command.pod:494
msgid "depotmap DEPOTNAME /path/to/repository"
msgstr "depotmap 档案库名称 /磁盘上的/档案库/路径"

#: lib/SVK/Command.pod:495
msgid "depotmap [OPTIONS]"
msgstr "depotmap [选项]"

#: lib/SVK/Command.pod:496

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN


#: lib/SVK/Command.pod:549
msgid "mirror --list [DEPOTNAME...]"
msgstr "mirror --list [档案库名称...]"

#: lib/SVK/Command.pod:550
msgid "mirror --recover DEPOTPATH"
msgstr "mirror --recover 档案库路径"

#: lib/SVK/Command.pod:551
msgid "mirror --relocate DEPOTPATH [http|svn]://host/path "
msgstr "mirror --relocate 档案库路径 [http|svn]://服务器/路径"

#: lib/SVK/Command.pod:552
msgid "mirror --upgrade //"
msgstr "mirror --upgrade //"

#: lib/SVK/Command.pod:553
msgid "mirror --upgrade /DEPOTNAME/"
msgstr "mirror --upgrade /档案库名称/"

#: lib/SVK/Command.pod:554

lib/SVK/I18N/zh_cn.po  view on Meta::CPAN


#~ msgid "%1 is missing.\n"
#~ msgstr "找不到 %1。\n"

#~ msgid "%1 is modified, use 'svk revert' first.\n"
#~ msgstr "%1 已排程,请用‘svk revert’"

#~ msgid "%1 is scheduled, use 'svk revert'.\n"
#~ msgstr "%1 已排程,请用‘svk revert’"

#~ msgid "--relocate: relocate the mirror to another URI"
#~ msgstr "--relocate: 将映像路径指向另一个网址"

#~ msgid "-P [--patch] path: instead of commit, save this change as a patch"
#~ msgstr "-P [--patch] arg: 将更动储存为补缀,但不送交更动"

#~ msgid "-b [--base] number: use revision ARG as the merge point"
#~ msgstr "-b [--base] arg: 使用指定的更动当作合并点"

#~ msgid ""
#~ "-r [--revision] number: act on revision ARG instead of the head revision"
#~ msgstr "-r [--revision] arg: 指定要处理的更动编号;预设为最新版本"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN

msgstr ""
"    在列出更新的項目時,每列開頭會以一個字符表示採取的更動。字符的意義如下:"

#: lib/SVK/Command.pod:49
msgid "    For example, here's the way to display the info of a checkout path:"
msgstr "    舉例來說,這樣會顯示取出路徑的資訊:"

#: lib/SVK/Command.pod:51
msgid ""
"    For information about how to change the mirrored location of a remote\n"
"    repository, please see the --relocate option to svk mirror."
msgstr ""

#: lib/SVK/Command.pod:52
msgid "    Here is an example for the value of the property:"
msgstr ""

#: lib/SVK/Command.pod:55
msgid ""
"    If both --sync and --merge are specified, like in svk up -sm, it will\n"
"    first synchronize the mirrored copy source path, and then smerge from\n"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN


#: lib/SVK/Command.pod:272
msgid "--purge: detach checkout directories which no longer exist"
msgstr ""

#: lib/SVK/Command.pod:273
msgid "--recover: recover the state of a mirror path"
msgstr "--recover: 修復映射路徑的狀態"

#: lib/SVK/Command.pod:274
msgid "--relocate: change the upstream URI for the mirrored depotpath"
msgstr "--relocate: 將映射的檔案庫路徑指向另一個網址"

#: lib/SVK/Command.pod:275
msgid "--relocate: relocate the checkout to another path"
msgstr "--relocate: 將取出路徑指向另一個路徑"

#: lib/SVK/Command.pod:276
msgid "--relocate: relocate the depot to another path"
msgstr "--relocate: 將檔案庫指向另一個路徑"

#: lib/SVK/Command.pod:277
msgid "--remoterev: display remote revision numbers (on mirrors only)"
msgstr "--remoterev: 在合併紀錄裡,使用遠端的更動編號(僅適用於映射路徑)"

#: lib/SVK/Command.pod:278
msgid "--remoterev: use remote revision numbers in merge log"
msgstr "--remoterev: 在合併紀錄裡,使用遠端的更動編號"

#: lib/SVK/Command/Update.pm:87

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN

#: lib/SVK/Command/Merge.pm:86
msgid "Can't merge across depots.\n"
msgstr "無法跨檔案庫進行合併。\n"

#: lib/SVK/Command/Merge.pm:159
msgid "Can't merge with specified revisions with smart merge.\n"
msgstr ""

#. ($self->source_path, $source_path)
#: lib/SVK/Mirror/Backend/SVNRa.pm:241
msgid "Can't relocate: mirror subdirectory changed from %1 to %2.\n"
msgstr "無法重新指向:映射路徑已從 %1 改為 %2。\n"

#: lib/SVK/Command/Propset.pm:166
msgid "Can't set svn:eol-style on depotpath.\n"
msgstr "無法設定檔案庫路徑的 svn:eol-style 屬性。\n"

#: lib/SVK/Command/Commit.pm:115
msgid "Can't use -F with -m.\n"
msgstr "無法同時指定 -F 及 -m。\n"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN

msgid "Changed paths:\n"
msgstr "已修改路徑:\n"

#. ($m->url)
#: lib/SVK/Command/Commit.pm:241
msgid "Checking locally against mirror source %1."
msgstr "正在本地端檢查映射來源 %1。"

#. ($path, $target)
#: lib/SVK/Command/Checkout.pm:277
msgid "Checkout '%1' relocated to '%2'.\n"
msgstr "取出路徑「%1」已改為指向「%2」。\n"

#. ($target->copath)
#: lib/SVK/Command/Info.pm:95
msgid "Checkout Path: %1\n"
msgstr "取出路徑:%1\n"

#: lib/SVK/Command.pod:363
msgid "Checkout Path: /Users/gugod/dev/svk"
msgstr "取出路徑:/Users/gugod/dev/svk"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN

msgid "Depot '%1' detached.\n"
msgstr "檔案庫「%1」已成功解除。\n"

#. ($depot)
#: lib/SVK/Command/Depotmap.pm:143 lib/SVK/Command/Depotmap.pm:159
msgid "Depot '%1' does not exist in the depot map.\n"
msgstr "檔案庫「%1」不存在於對映表中。\n"

#. ($depot, $path)
#: lib/SVK/Command/Depotmap.pm:148
msgid "Depot '%1' relocated to '%2'.\n"
msgstr "檔案庫「%1」已改為指向「%2」。\n"

#. ($target_root->depotname, $rev)
#: lib/SVK/Command/Describe.pm:91
msgid "Depot /%1/ has no revision %2\n"
msgstr "檔案庫 /%1/ 沒有編號為 %2 的更動\n"

#. ($depot)
#: lib/SVK/Command/Mirror.pm:194
msgid "Depot /%1/ not loadable.\n"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN

msgid "Mirror initialized.  Run svk sync %1 to start mirroring.\n"
msgstr ""

#. ($target->depotpath)
#: lib/SVK/Command/Mirror.pm:141
msgid "Mirror path '%1' detached.\n"
msgstr "成功解除路徑「%1」的映射狀態。\n"

#. ($mirror->url)
#: lib/SVK/Mirror/Backend/SVNRa.pm:258
msgid "Mirror relocated to %1"
msgstr "映射已重新定位至 %1"

#: lib/SVK/Command/Mirror.pm:123
msgid "Mirror relocated.\n"
msgstr ""

#: lib/SVK/Mirror/Backend/SVNRa.pm:233
msgid "Mirror source UUIDs differ.\n"
msgstr ""

#: lib/SVK/Command/Mirror.pm:297
msgid "Mirror state successfully recovered.\n"
msgstr "成功修復路徑的映射狀態。\n"

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN


#: lib/SVK/Command.pod:470
msgid "checkout --list"
msgstr "checkout --list"

#: lib/SVK/Command.pod:471
msgid "checkout --purge"
msgstr "checkout --purge"

#: lib/SVK/Command.pod:472
msgid "checkout --relocate DEPOTPATH|PATH PATH"
msgstr "checkout --relocate 檔案庫路徑|路徑 路徑"

#: lib/SVK/Command.pod:473
msgid "checkout DEPOTPATH [PATH]"
msgstr "checkout 檔案庫路徑 [路徑]"

#: lib/SVK/Command.pod:474
msgid "cleanup - Remove stalled locks"
msgstr "cleanup - 移除卡住的鎖定"

#: lib/SVK/Command.pod:475

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN


#: lib/SVK/Command.pod:491
msgid "depotmap --detach [DEPOTNAME | PATH]"
msgstr "depotmap --detach [檔案庫名稱 | 路徑]"

#: lib/SVK/Command.pod:492
msgid "depotmap --list"
msgstr "depotmap --list"

#: lib/SVK/Command.pod:493
msgid "depotmap --relocate [DEPOTNAME | PATH] PATH"
msgstr "depotmap --relocate [檔案庫名稱 | 路徑] 路徑"

#: lib/SVK/Command.pod:494
msgid "depotmap DEPOTNAME /path/to/repository"
msgstr "depotmap 檔案庫名稱 /磁碟上的/檔案庫/路徑"

#: lib/SVK/Command.pod:495
msgid "depotmap [OPTIONS]"
msgstr "depotmap [選項]"

#: lib/SVK/Command.pod:496

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN


#: lib/SVK/Command.pod:549
msgid "mirror --list [DEPOTNAME...]"
msgstr "mirror --list [檔案庫名稱...]"

#: lib/SVK/Command.pod:550
msgid "mirror --recover DEPOTPATH"
msgstr "mirror --recover 檔案庫路徑"

#: lib/SVK/Command.pod:551
msgid "mirror --relocate DEPOTPATH [http|svn]://host/path "
msgstr "mirror --relocate 檔案庫路徑 [http|svn]://伺服器/路徑"

#: lib/SVK/Command.pod:552
msgid "mirror --upgrade //"
msgstr "mirror --upgrade //"

#: lib/SVK/Command.pod:553
msgid "mirror --upgrade /DEPOTNAME/"
msgstr "mirror --upgrade /檔案庫名稱/"

#: lib/SVK/Command.pod:554

lib/SVK/I18N/zh_tw.po  view on Meta::CPAN


#~ msgid "%1 is missing.\n"
#~ msgstr "找不到 %1。\n"

#~ msgid "%1 is modified, use 'svk revert' first.\n"
#~ msgstr "%1 已排程,請用「svk revert」"

#~ msgid "%1 is scheduled, use 'svk revert'.\n"
#~ msgstr "%1 已排程,請用「svk revert」"

#~ msgid "--relocate: relocate the mirror to another URI"
#~ msgstr "--relocate: 將映射路徑指向另一個網址"

#~ msgid "-P [--patch] path: instead of commit, save this change as a patch"
#~ msgstr "-P [--patch] arg: 將更動儲存為補綴,但不送交更動"

#~ msgid "-b [--base] number: use revision ARG as the merge point"
#~ msgstr "-b [--base] arg: 使用指定的更動當作合併點"

#~ msgid ""
#~ "-r [--revision] number: act on revision ARG instead of the head revision"
#~ msgstr "-r [--revision] arg: 指定要處理的更動編號;預設為最新版本"

lib/SVK/Mirror.pm  view on Meta::CPAN

    open my $fh, '<', \$buf;
    my $feedback = '';
    open my $fstream, '>', \$feedback;
    my $ret = SVN::Repos::load_fs2( $self->repos, $fh, $fstream, $SVN::Repos::load_uuid_default, undef, 0, 0, undef, undef, $pool );
    # (repos,dumpstream,feedback_stream,uuid_action,parent_dir,use_pre_commit_hook,use_post_commit_hook,cancel_func,cancel_baton,pool);
    # XXX: display $feedback if we are in verbose / debug mode.
    # and provide progress feedback in caller
    return $ret;
}

=item relocate($newurl)

=item with_lock($code)

=cut

sub with_lock {
    my ( $self, $lock, $code ) = @_;

    $self->lock;
    eval { $code->() };

lib/SVK/Mirror.pm  view on Meta::CPAN


=cut

sub get_svkpath {
    my ($self, $path) = @_;
    return SVK::Path->real_new( { depot => $self->depot, path => $path || $self->path } )
      ->refresh_revision;
}

for my $delegate
    qw( find_rev_from_changeset find_changeset sync_changeset traverse_new_changesets mirror_changesets get_commit_editor refresh change_rev_prop fromrev source_path relocate )
{
    no strict 'refs';
    *{$delegate} = sub {
        my $self   = shift;
	Carp::cluck $delegate unless $self->_backend;
        my $method = $self->_backend->can($delegate);
        unshift @_, $self->_backend;
        goto $method;
    };
}

lib/SVK/Mirror/Backend/SVNRa.pm  view on Meta::CPAN

	next if $self->source_root ne $mirror->_backend->source_root;
	# XXX: check overlap with svk::mirror objects.

	my ($me, $other) = map { Path::Class::Dir->new_foreign('Unix', $_) }
	    $self->source_path, $mirror->_backend->source_path;
	die "Mirroring overlapping paths not supported\n"
	    if $me->subsumes($other) || $other->subsumes($me);
    }
}

=item relocate($newurl)

=cut

sub relocate {
    my ($self, $source, $options) = @_;

    $source =~ s{/+$}{}g;
    my $ra = $self->_new_ra(url => $source);
    my $ra_uuid = $ra->get_uuid;
    my $mirror = $self->mirror;
    die loc("Mirror source UUIDs differ.\n")
	unless $ra_uuid eq $mirror->server_uuid;
    my $source_root = $ra->get_repos_root;
    my $source_path = $source;
    die "source url not under source root"
	if substr($source_path, 0, length($source_root), '') ne $source_root;

    die loc( "Can't relocate: mirror subdirectory changed from %1 to %2.\n",
        $self->source_path, $source_path )
        unless $self->source_path eq $source_path;

    $self->source_root( $ra->get_repos_root );
    $mirror->url($source);

    $self->_do_relocate;
}

sub _do_relocate {
    my ($self) = @_;
    my $mirror = $self->mirror;
    my $t = $mirror->get_svkpath;

    my ( $editor, %opt ) = $t->get_dynamic_editor(
        ignore_mirror => 1,
        message       => loc( 'Mirror relocated to %1', $mirror->url ),
        author        => $ENV{USER},
    );
    $opt{txn}->change_prop( 'svm:headrev', join(':', $mirror->server_uuid, $self->fromrev ) );
    $opt{txn}->change_prop( 'svm:incomplete', '*');

    $editor->change_dir_prop( 0, 'svm:source', $self->source_root.'!'.$self->source_path );
    $editor->adjust;
    $editor->close_edit;
}

lib/SVK/Mirror/Backend/SVNSync.pm  view on Meta::CPAN

        die loc( "%1 is already a mirror of %2.\n",
            "/" . $mirror->depot->depotname . "/", $from );
    }
    $fs->change_rev_prop( 0, 'svn:svnsync:from-url',  $mirror->url );
    $fs->change_rev_prop( 0, 'svn:svnsync:from-uuid', $mirror->server_uuid );

    #    $fs->change_rev_prop(0, 'svn:svnsync:last-merged-rev', 0);
    return $self;
}

sub _do_relocate {
    my ($self) = @_;
    $self->mirror->depot->repos->fs->change_rev_prop( 0, 'svn:svnsync:from-url',  $self->mirror->url );
}

sub find_rev_from_changeset { $_[1] }

sub find_changeset { $_[1] }

sub _revmap_prop { }

t/01depotmap.t  view on Meta::CPAN

is_output ($svk, 'depotmap', ['--detach', $repospath],
	   ["Depot '' detached."], 'depotpath - detach with repospath');
is_output_like ($svk, 'depotmap', ['--detach', $repospath],
           qr/Depot '.+' does not exist in the depot map/,
           'depotpath - detach with repospath again');
is_output ($svk, 'depotmap', ['//', $repospath],
	   ['New depot map saved.'], 'depotpath - add again');
is_output ($svk, 'depotmap', ['//', $repospath],
	   ["Depot '' already exists; use 'svk depotmap --detach' to remove it first."], 'depotpath - add again');

is_output ($svk, 'depotmap', ['--relocate', '//'],
	   ["Need to specify a path name for depot."]);

$answer = 'n';
is_output ($svk, 'depotmap', ['--relocate', '//', "$repospath.new"],
	   [__("Depot '' relocated to '$repospath.new'.")], 'depotpath - relocate');
ok (!-e "$repospath.new", '... did not create a new repospath');
is_output ($svk, 'depotmap', ['--relocate', '//', $repospath],
	   [__("Depot '' relocated to '$repospath'.")], 'depotpath - relocate back');

is_output ($svk, 'depotmap', ['--relocate', $repospath => "$repospath.new"],
	   [__("Depot '' relocated to '$repospath.new'.")], 'depotpath - relocate from path');
ok (-e "$repospath.new", '... did create a new repospath');
is_output ($svk, 'depotmap', ['--relocate', "$repospath.new" => $repospath],
	   [__("Depot '' relocated to '$repospath'.")], 'depotpath - relocate back');
is_output ($svk, 'depotmap', ['--relocate', $repospath => catdir($repospath, 'db')], [
            __("Cannot rename $repospath to $repospath/db; please move it manually."),
            __("Depot '' relocated to '$repospath/db'."),
           ], 'depotpath - relocate impossibly');

rmtree [$repospath];
rmtree ["$repospath.new"];

t/11checkout.t  view on Meta::CPAN

            ]);

is_output ($svk, 'checkout', ['--detach', __("$corpath/boo")], [
            __("Checkout path '$corpath/boo' detached."),
            ]);

is_output ($svk, 'checkout', ['--detach', __("$corpath/boo")], [
            __("'$corpath/boo' is not a checkout path."),
            ]);

is_output ($svk, 'checkout', ['--relocate', "//V-3.1", $corpath], [
            "'//V-3.1' is not a checkout path."
            ]);

is_output ($svk, 'checkout', ['--relocate', "//V-3.1/A/Q", $corpath], [
            "'//V-3.1/A/Q' maps to multiple checkout paths."
            ]);

is_output ($svk, 'checkout', ['--relocate', "//V-3.1-non", __("$corpath/co-root-a")], [
            __("Overlapping checkout path is not supported ($corpath/co-root-a); use 'svk checkout --detach' to remove it first.")
            ]);

chdir ('co-root-a') or die $!;
is_output ($svk, 'checkout', ['--relocate', "//V-3.1"],
	   ["Do you mean svk switch //V-3.1?"],
	  );
chdir ('..');
is_output($svk, 'update', [-r3 =>'co-root-a'],
	  ['Syncing //V/A(/V/A) in '.__("$corpath/co-root-a").' to 3.',
	   __('A   co-root-a/P'),
	   __('A   co-root-a/P/pe')]);
is_output($svk, 'co', ['//V/A' =>'co-root-a'],
	  ['Syncing //V/A(/V/A) in '.__("$corpath/co-root-a").' to 6.',
	   __('D   co-root-a/P')]);

t/11checkout.t  view on Meta::CPAN


SKIP: {
chmod (0555, '.');
skip 'no working chmod', 1 if -w '.' || chmod_probably_useless();
is_output ($svk, 'checkout', ['//V/A', 'co-root-a'],
	   ["Syncing //V/A(/V/A) in ".__"$corpath/co-root-a to 6.",
	    "Can't create directory co-root-a for checkout: Permission denied."]);

chmod (0755, '.');
}
is_output ($svk, 'checkout', ['--relocate', "//V-3.1-non", __("$corpath/foo")], [
            "Checkout '//V-3.1-non' ".__("relocated to '$corpath/foo'.")
            ]);

is_output ($svk, 'checkout', ['--relocate', "//V-3.1-non", __("$corpath/bar")], [
            "Checkout '//V-3.1-non' ".__("relocated to '$corpath/bar'.")
            ]);

ok (!-e "$corpath/bar", '... did not create a new copath');

is_output ($svk, 'checkout', ['--relocate', __("$corpath/just-q"), __("$corpath/baz/boo")], [
            __("Checkout '$corpath/just-q' relocated to '$corpath/baz/boo'.")
            ]);

ok (-e "$corpath/baz", '... did create a new copath');

is_output ($svk, 'checkout', ['--relocate', __("$corpath/just-q"), __("$corpath/baz/boo")], [
            __("'$corpath/just-q' is not a checkout path.")
            ]);

is_output ($svk, 'checkout', ['--relocate', __("$corpath/baz/boo"), __("$corpath/baz")], [
            __("Cannot rename $corpath/baz/boo to $corpath/baz; please move it manually."),
            __("Checkout '$corpath/baz/boo' relocated to '$corpath/baz'."),
            ]);

$svk->checkout (-r5 => '//V-3.1', "3.1");
SKIP: {
chmod 0500, "3.1/B";
skip 'no working chmod', 4 if -w "3.1/B" || chmod_probably_useless();

is_sorted_output ($svk, 'up', ["3.1"],
	   ["Syncing //V-3.1(/V-3.1) in ".__"$corpath/3.1 to 6.",
	    __('D   3.1/A/P'),

t/11checkout.t  view on Meta::CPAN


chdir("$corpath/co-root-deep/there");
$svk->mkdir("newdir");
is_output($svk, 'st', [], ['A   newdir']);

chdir($corpath);
rename("$corpath/co-root-deep/there", "$corpath/tmp");
rmtree ["$corpath/co-root-deep"] or die $!;
rename("$corpath/tmp", "$corpath/co-root-deep");

is_output ($svk, 'checkout', ['--relocate', __("$corpath/co-root-deep/there"), __("$corpath/co-root-deep")], [
            __("Checkout '$corpath/co-root-deep/there' relocated to '$corpath/co-root-deep'."),
            ]);

chdir("$corpath/co-root-deep");
is_output($svk, 'st', [], ['A   newdir']);


t/50dav.t  view on Meta::CPAN

	    'Commit into mirrored path: merging back directly.',
	    "Merging back to mirror source $uri/A.",
	    qr'Commit message saved in (.*)\.',
	    qr"RA layer request failed: OPTIONS.*/svn/A.*",
           ]);

($filename) = $output =~ m/saved in (.*)\./s;
is_file_content ($filename, "from editor\n");

$uri = "file://$srepospath/A";
is_output ($svk, 'mi', ['--relocate', $uri, '//remote'],
	   ['Mirror relocated.']);

is_output ($svk, 'commit', [-m => 'go'],
	   ['Commit into mirrored path: merging back directly.',
	    "Merging back to mirror source $uri.",
	    'Merge back committed as revision 6.',
	    'Syncing '.$uri,
	    'Retrieving log information from 5 to 6',
	    'Committed revision 10 from revision 5.',
	    'Committed revision 11 from revision 6.']);

t/mirror/relocate.t  view on Meta::CPAN

my ($srepospath2) = $xd->find_repos('/test2/A', 1);
rmtree [$srepospath2];
symlink($srepospath, $srepospath2);

my $uri = uri($srepospath.($spath eq '/' ? '' : $spath));
my $uri2 = uri($srepospath);

is_output($svk, mirror => ['//m', $uri],
          ["Mirror initialized.  Run svk sync //m to start mirroring."]);

is_output($svk, 'mirror', ['--relocate', '//m', "$uri2/B"],
	  ["Can't relocate: mirror subdirectory changed from /A to /B."]);

is_output($svk, 'mirror', ['--relocate', '//m', "$uri2/A"],
	  ['Mirror relocated.']);

is_output($svk, 'mirror', ['--relocate','//bogus_mirror', "$uri2/B"],
      ['//bogus_mirror is not a mirrored path.']);

is_output($svk, 'mirror', ['--relocate','//m/bogus_mirror', "$uri2/B"],
      ['//m/bogus_mirror is inside a mirrored path.']);

t/mirror/sync-rebase.t  view on Meta::CPAN

my ($xd, $svk) = build_test('test');

our $output;

$svk->mkdir(-pm => 'init', '/test/foo/proj/trunk');
$svk->mkdir(-pm => 'init', '/test/foo/proj/branches');
my $tree = create_basic_tree ($xd, '/test/foo/proj/trunk');

$svk->cp('-m' => 'branch', '/test/foo/proj/trunk' => '/test/foo/proj/branches/branchA');

$svk->mv(-m => 'relocate proj base', '/test/foo/proj' => '/test/proj');

$svk->cp(-m => 'branch2', '/test/proj/trunk' => '/test/proj/branches/branchB');

my ($srepospath, $spath, $srepos) = $xd->find_repos ('/test/proj', 1);
my $uri = uri($srepospath.($spath eq '/' ? '' : $spath));


$svk->mi('//mirror/proj', $uri);

is_output($svk, 'sync', ['--follow-anchor-copy','//mirror/proj'],

t/mirror/sync-replicate.t  view on Meta::CPAN

	   "Merging back to mirror source $uri.",
	   'Merge back committed as revision 8.',
	   "Syncing $uri",
	   'Retrieving log information from 8 to 8',
	   'Committed revision 8 from revision 8.']);

SKIP: {
skip 'No symlinks on win32', 2 if $^O eq 'MSWin32';
symlink($srepospath, $rorpath);

is_output($svk, 'mi', ['--relocate', '//', uri($rorpath)],
	  ['Mirror relocated.']);
is_output($svk, 'sync', ['//'],
	  ['Syncing '.uri($rorpath)]);
}



( run in 1.749 second using v1.01-cache-2.11-cpan-5511b514fd6 )