SVK

 view release on metacpan or  search on metacpan

CHANGES-1.0  view on Meta::CPAN


[Changes for 1.03 - 18 Aug 2005]

* "svk status" now accepts a --verbose (-v) switch which functions
  just like the svn clients switch of the same name.

* "svk log" and "svk revert" now accept a --quiet (-q) switch.

* "svk diff" now accepts a --non-recursive (-N) switch.

* Support --quiet in svk propdel and svk propset.

* Fix message when doing svk propdel --revprop.

* Allow svk update --sync --check-only to sync and then check what
  would be updated in your working copy.

* Fix a bug that that status and revert won't work on explicit
  command line targets that are replaced with history.

* Fix path encoding for replaced item in "svk add".

CHANGES-1.0  view on Meta::CPAN

* Make "svk revert" work in a few cases where it didn't before, with
  moved files in the working copy.

* "svk ci --import" now replace symlinks with files properly.

* "svk mv" is now more careful about making sure that the target path
  exists.

* "svk rm" across multiple depot paths could cause svk to hang.

* "svk propset" now works directly on mirrored paths.

* Various commands that would silently ignore excess arguments now
  raise errors.

* Specifying a revision for "svk propset" and "svk propedit" commands
  is now correctly disallowed on checkout paths.

* Using "svk smerge" without all of your mirrored paths up to date
  would try to merge too much if you merged components from those
  out-of-date paths.  This has been fixed.

* Various cosmetic fixes to make svk output more precise, for
  scriptability purposes.  This was mostly centred around removal of
  spurious blank lines.

CHANGES-1.0  view on Meta::CPAN


* Do proper eol translation per svn:eol on local (yours) node
  before textual merges are invoked.

* Proper io layer ordering, and force re-translation for merge text
  when needed.

* Reopen FH in prepare_fh when needed, since apply_textdelta already
  closed the fh for us.

* Propset now works on multiple overlapping copaths. [#8139]

* Fix a buglet that two props set on a added node will be reported
  as added and prop-modified.

* Make svk info work on removed path. [mathhewd]

* Reflect errors in bin/svk exit codes. [matthewd]

* Update various help messages [#7217] [#7877] [hcchien]

MANIFEST  view on Meta::CPAN

lib/SVK/Command/Log.pm
lib/SVK/Command/Merge.pm
lib/SVK/Command/Mirror.pm
lib/SVK/Command/Mkdir.pm
lib/SVK/Command/Move.pm
lib/SVK/Command/Patch.pm
lib/SVK/Command/Propdel.pm
lib/SVK/Command/Propedit.pm
lib/SVK/Command/Propget.pm
lib/SVK/Command/Proplist.pm
lib/SVK/Command/Propset.pm
lib/SVK/Command/Pull.pm
lib/SVK/Command/Push.pm
lib/SVK/Command/Resolved.pm
lib/SVK/Command/Revert.pm
lib/SVK/Command/Smerge.pm
lib/SVK/Command/Status.pm
lib/SVK/Command/Switch.pm
lib/SVK/Command/Sync.pm
lib/SVK/Command/Update.pm
lib/SVK/Command/Verify.pm

META.yml  view on Meta::CPAN

    version: v2.2.3
  SVK::Command::Propedit:
    file: lib/SVK/Command/Propedit.pm
    version: v2.2.3
  SVK::Command::Propget:
    file: lib/SVK/Command/Propget.pm
    version: v2.2.3
  SVK::Command::Proplist:
    file: lib/SVK/Command/Proplist.pm
    version: v2.2.3
  SVK::Command::Propset:
    file: lib/SVK/Command/Propset.pm
    version: v2.2.3
  SVK::Command::Pull:
    file: lib/SVK/Command/Pull.pm
    version: v2.2.3
  SVK::Command::Push:
    file: lib/SVK/Command/Push.pm
    version: v2.2.3
  SVK::Command::Resolved:
    file: lib/SVK/Command/Resolved.pm
    version: v2.2.3

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

		ren		move
		rename	    	move
		pd		propdel
		pdel		propdel
		pe		propedit
		pedit		propedit
		pg		propget
		pget		propget
		pl		proplist
		plist		proplist
		ps		propset
		pset		propset
		sm		smerge
		st		status
		stat		status
		sw		switch
		sy		sync
		up		update
		ver		version
	    );

use constant global_options => ( 'h|help|?'   => 'help',

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

	return ;
    }

    undef $self->{recursive};
    $self->{local}++ if ($target->_to_pclass("/local")->subsumes($target->path));
    push @arg, $self->dst_name($proj,$target->path);
    return map {$self->arg_co_maybe ($self->dst_path($proj,$_),'New mirror site not allowed here')} @arg;
}

package SVK::Command::Branch::setup;
use base qw( SVK::Command::Propset SVK::Command::Branch );
use SVK::I18N;
use SVK::Util qw( get_prompt );
use SVK::Logger;

sub can_write_remote_proj_prop {
    my ($self, $remote_depot, %arg) = @_;
    eval {
	for my $key (keys %arg) {
	    $self->do_propset($key,$arg{$key}, $remote_depot);
	}
    };
    return 1 if ($@);
    return 0;
}

sub parse_arg {
    my ($self, @arg) = @_;
    return if $#arg != 0;

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

	my $ret = $source_root ne $url or $self->can_write_remote_proj_prop($root_depot,
	    "svk:project:$project_name:path-trunk" => $trunk_path,
	    "svk:project:$project_name:path-branches" => $branch_path,
	    "svk:project:$project_name:path-tags" => $tag_path);
	if ($ret or $@) { # we have problem to write to remote
	    if ($source_root ne $url) {
		$logger->info( loc("Can't write project props to remote root. Save in local instead."));
	    } else {
		$logger->info( loc("Can't write project props to remote server. Save in local instead."));
	    }
	    $self->do_propset("svk:project:$project_name:path-trunk",$trunk_path, $local_root);
	    $self->do_propset("svk:project:$project_name:path-branches",$branch_path, $local_root);
	    $self->do_propset("svk:project:$project_name:path-tags",$tag_path, $local_root);
	    $self->do_propset("svk:project:$project_name:root",$preceding_path, $local_root);
	}
	$proj = SVK::Project->create_from_prop($target,$project_name);
	# XXX: what if it still failed here? How to rollback the prop commits?
	if (!$proj) {
	    $logger->info( loc("Project setup failed.\n"));
	} else {
	    $logger->info( loc("Project setup success.\n"));
	}
	return;
    }

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

# 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::Command::Cmerge;
use strict;
use SVK::Version;  our $VERSION = $SVK::VERSION;

use base qw( SVK::Command::Merge SVK::Command::Copy SVK::Command::Propset );
use SVK::XD;
use SVK::I18N;
use SVK::Logger;
use SVK::Editor::Combine;
use SVK::Inspector::Compat;

sub options {
    ($_[0]->SUPER::options);
}

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

    my $uuid = $fs->get_uuid;

    # give ticket to src
    my $ticket = SVK::Merge->new (xd => $self->{xd})->
	find_merge_sources ($src->new (revision => $newrev), 1, 1);
    $ticket->{"$uuid:$tmpbranch"} = $newrev;

    unless ($self->{check_only}) {
	my $oldmessage = $self->{message};
	$self->{message} = "cherry picking merge $self->{chgspec} to $dst->{path}";
	$self->do_propset_direct ($src, 'svk:merge',
				  join ("\n", map {"$_:$ticket->{$_}"} sort keys %$ticket));
	$self->{message} = $oldmessage;
    }

    my ($depot) = $src->depotname;
    ++$self->{auto};
    undef $self->{chgspec};
    undef $self->{revspec};
    $self->SUPER::run ($src->new (path => $tmpbranch,
				  depotpath => "/$depot$tmpbranch",

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

    $svn_ignore = '' unless defined $svn_ignore;

    my $current_ignore_re = $self->{xd}->ignore($svn_ignore);
    if ($filename =~ m/$current_ignore_re/) {
        $logger->info( "Already ignoring '$report'");
    } else {
        $svn_ignore .= "\n"
          if length $svn_ignore and substr($svn_ignore, -1, 1) ne "\n";
        $svn_ignore .= "$filename\n";

        $self->{xd}->do_propset
          ( $target,
           propname => 'svn:ignore',
           propvalue => $svn_ignore,
          );
    }
}

sub run {
    my ($self, @targets) = @_;
    $SVN::Error::handler = \&SVN::Error::confess_on_error;

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


    $target->refresh_revision;
    $self->command(
        copy => { direct  => 1, message => '' },
    )->run($target->new(revision => $rev) => $target->new);

    # XXX - race condition? should get the last committed rev instead
    $target->refresh_revision;

    $self->command(
        propset => { direct  => 1, revprop => 1 },
    )->run($_ => $props->{$_}, $target) for sort grep {m/^sv[nm]/} keys %$props;

    $logger->info( loc("Mirror state successfully recovered."));
    return;
}

sub recover_list_entry {
    my ($self, $target, $m) = @_;

    my %mirrors = map { ($_ => 1) } SVN::Mirror::list_mirror ($target->repos);

    return if $mirrors{$m->{target_path}}++;

    $self->command ( propset => { direct => 1, message => 'foo' } )->run (
        'svm:mirror' => join ("\n", (grep length, sort keys %mirrors), ''),
        $self->arg_depotpath ('/'.$target->depotname.'/'),
    );

    $logger->info( loc("%1 added back to the list of mirrored paths.\n", $target->report));
    return;
}

1;

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

    my $src = $_[0];
    my $ret = $self->SUPER::run(@_);
    if ($self->{post_process_mirror}) {
	# XXX: also should set svm:incomplete revprop
	# should be in SVK::Mirror as well
	my $mstring = $src->root->node_prop('/', 'svm:mirror');
	for (@{$self->{post_process_mirror}}) {
	    my ($from, $to) = @$_;
	    $mstring =~ s/^\Q$from\E$/$to/;
	}
	my $cmd = $self->command('propset', { revision => undef,
					      message => 'svk: fix-up for mirror move' });
	$cmd->run('svm:mirror', $mstring, $src->new(path => '/'));
    }
    return $ret;
}

__DATA__

=head1 NAME

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

# 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::Command::Propdel;
use strict;
use SVK::Version;  our $VERSION = $SVK::VERSION;
use base qw( SVK::Command::Propset );
use SVK::XD;
use SVK::I18N;

sub parse_arg {
    my ($self, @arg) = @_;
    return if @arg < 1;
    push @arg, ('') if @arg == 1;
    return ($arg[0], map {$self->_arg_revprop ($_)} @arg[1..$#arg]);
}

sub lock {
    my $self = shift;
    $self->lock_target (@_[1..$#_]);
}

sub run {
    my ($self, $pname, @targets) = @_;
    $self->do_propset ($pname, undef, $_) for @targets;
    return;
}

1;

__DATA__

=head1 NAME

SVK::Command::Propdel - Delete a property on files or dirs

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

# 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::Command::Propedit;
use strict;
use SVK::Version;  our $VERSION = $SVK::VERSION;

use base qw( SVK::Command::Propset );
use SVK::XD;
use SVK::I18N;
use SVK::Util qw(get_buffer_from_editor);

sub parse_arg {
    my ($self, @arg) = @_;
    return if @arg < 1 or @arg > 2;
    push @arg, ('') if @arg == 1;
    return ($arg[0], $self->_arg_revprop ($arg[1]));
}

sub lock {
    my $self = shift;
    $self->lock_target ($_[1]);
}

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

    die loc("-r not allowed for propset copath.\n")
	if $self->{rev} && $target->isa('SVK::Path::Checkout');

    my $pvalue = $self->_proplist ($target)->{$pname};

    $pvalue = get_buffer_from_editor (
        loc("property %1", $pname),
        undef,
        (defined($pvalue) ? $pvalue : ''),
        'prop'
    );

    $self->do_propset ($pname, $pvalue, $target);

    return;
}

1;

__DATA__

=head1 NAME

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

# 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::Command::Propset;
use strict;
use SVK::Version;  our $VERSION = $SVK::VERSION;
use base qw( SVK::Command::Commit SVK::Command::Proplist );
use constant opt_recursive => 0;
use SVK::Util qw ( abs2rel );
use SVK::XD;
use SVK::I18N;
use SVK::Logger;

sub options {

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

    return (@arg[0,1], map {$self->_arg_revprop ($_)} @arg[2..$#arg]);
}

sub lock {
    my $self = shift;
    my @paths = @_[2..$#_];
    return unless grep {$_->isa('SVK::Path::Checkout')} @paths;
    $self->lock_target ($self->{xd}->target_condensed(@_[2..$#_]));
}

sub do_propset_direct {
    my ($self, $target, $propname, $propvalue) = @_;

    if ($self->{revprop}) {
	my $fs = $target->repos->fs;
        my $rev = (defined($self->{rev}) ? $self->{rev} : $target->revision);
        $fs->change_rev_prop ($rev, $propname => $propvalue);
	unless ($self->{quiet}) {
	    if (defined $propvalue) {
		$logger->info(loc("Property '%1' set on repository revision %2.",
		    $propname, $rev));

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

	my $baton = $editor->open_file ($path, 0, $rev);
	$editor->change_file_prop ($baton, $propname, $propvalue);
	$editor->close_file ($baton, undef);
    }
    $self->adjust_anchor ($editor)
	unless $anchor eq $target->path;
    $self->finalize_dynamic_editor ($editor);
    return;
}

sub do_propset {
    my ($self, $pname, $pvalue, $target) = @_;

    if ($target->isa('SVK::Path::Checkout')) {
	die loc("-r not allowed for propset copath.\n")
	    if $self->{rev};
	# verify the content is not with mixed line endings.
	if ($pname eq 'svn:eol-style') {
	    my $fh = $target->root->file_contents($target->path);
	    binmode($fh, SVK::XD::get_eol_layer({ 'svn:eol-style' => $pvalue }, '<', 1));
	    eval {
		local $/ = \16384;
		while (<$fh>) { };
	    } if $fh;
	    if ($@ =~ m/Mixed/) {
		die loc ("File %1 has inconsistent newlines.\n", $target->report);
	    }
	    elsif ($@) {
		die $@;
	    }
	}

	$self->{xd}->do_propset
	    ( $target,
	      propname => $pname,
	      propvalue => $pvalue,
	      quiet => $self->{quiet},
	    );
    }
    else {
	# XXX: forbid special props on mirror anchor
	die loc ("Can't set svn:eol-style on depotpath.\n")
	    if $pname eq 'svn:eol-style';
	$self->get_commit_message () unless $self->{revprop};
	$self->do_propset_direct ( $target, $pname => $pvalue );
    }
}

sub run {
    my ($self, $pname, $pvalue, @targets) = @_;
    $self->do_propset ($pname, $pvalue, $_) for @targets;
    return;
}

1;

__DATA__

=head1 NAME

SVK::Command::Propset - Set a property on path

=head1 SYNOPSIS

 propset PROPNAME PROPVAL [DEPOTPATH | PATH...]

=head1 OPTIONS

 -R [--recursive]       : descend recursively
 -r [--revision] REV    : act on revision REV instead of the head revision
 --revprop              : operate on a revision property (use with -r)
 -m [--message] MESSAGE : specify commit message MESSAGE
 -F [--file] FILENAME   : read commit message from FILENAME
 --template             : use the specified message as the template to edit
 --encoding ENC         : treat -m/-F value as being in charset encoding ENC

lib/SVK/Editor/XD.pm  view on Meta::CPAN

	if $self->{added}{$path};
    return if $self->{check_only};

    my $copath = $path;
    $self->{get_copath}($copath);

    $self->{exe}{$path} = $value
        if $name eq 'svn:executable' && $self->{update};

    $self->{get_path}($path);
    $self->{xd}->do_propset(
        $self->{xd}->create_path_object(
            copath_anchor => $copath,
            path          => $path,
            repos         => $self->{repos}
        ),
        quiet     => 1,
        propname  => $name,
        propvalue => $value,
        adjust_only => $self->{update},
    );

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

msgstr ""

#: lib/SVK/Command.pod:335
msgid "-r [--revision] arg: ARG (some commands also take ARG1:ARG2 range)"
msgstr ""

#: lib/SVK/Command.pod:336
msgid "-r [--revision] arg: act on revision ARG instead of the head revision"
msgstr ""

#: lib/SVK/Command/Propedit.pm:74 lib/SVK/Command/Propset.pm:139
msgid "-r not allowed for propset copath.\n"
msgstr ""

#: lib/SVK/Command.pod:337
msgid "-s [--skipto] REV: start synchronization at revision REV"
msgstr ""

#: lib/SVK/Command.pod:338
msgid "-s [--summarize]: show summary only"
msgstr ""

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


#: 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/Command/Commit.pm:266
msgid "Can't use set-revprop with remote repository.\n"
msgstr ""

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


#: lib/SVK/Command.pm:1032
#. (loc($action)
msgid "Enter a depot path to %1 into: [%2] "
msgstr ""

#: lib/SVK/Command.pod:373
msgid "Environment variables:"
msgstr ""

#: lib/SVK/Command/Propset.pm:150
#. ($target->report)
msgid "File %1 has inconsistent newlines.\n"
msgstr ""

#: lib/SVK/Editor/InteractiveStatus.pm:531
#. ($self->{path})
msgid "File '%1' is marked for addition"
msgstr ""

#: lib/SVK/Editor/InteractiveStatus.pm:836

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

#: lib/SVK/Command/Proplist.pm:111
#. (length $target->report ? $target->report : '.')
msgid "Properties on %1:\n"
msgstr ""

#: lib/SVK/Editor/Merge.pm:939
#. ($propname, $path)
msgid "Property %1 of %2"
msgstr ""

#: lib/SVK/Command/Propset.pm:96
#. ($propname, $rev)
msgid "Property '%1' deleted from repository revision %2."
msgstr ""

#: lib/SVK/Command/Propset.pm:93
#. ($propname, $rev)
msgid "Property '%1' set on repository revision %2."
msgstr ""

#: lib/SVK/Editor/InteractiveStatus.pm:1015
#. ($path)
msgid "Property change on '%1' directory requested"
msgstr ""

#: lib/SVK/Editor/InteractiveStatus.pm:901

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

#. ($path)
#. ($copath)
msgid "path %1 already exists"
msgstr ""

#: lib/SVK/Editor/Checkout.pm:125
#. ($path)
msgid "path %1 does not exist"
msgstr ""

#: lib/SVK/Command/Diff.pm:122 lib/SVK/Command/Diff.pm:161 lib/SVK/Command/Diff.pm:97 lib/SVK/Command/Propset.pm:105
#. ($target->report)
#. ($target2->report)
#. ($target->path)
msgid "path %1 does not exist.\n"
msgstr ""

#: lib/SVK/.XD.pm.swp:46 lib/SVK/XD.pm:489 lib/SVK/XD.pm:492 lib/SVK/XD.pm:577
#. ($copath)
#. ($report)
msgid "path %1 is not a checkout path.\n"

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


#: lib/SVK/Command.pod:578
msgid "proplist - List all properties on files or dirs"
msgstr ""

#: lib/SVK/Command.pod:579
msgid "proplist PATH..."
msgstr ""

#: lib/SVK/Command.pod:580
msgid "propset - Set a property on path"
msgstr ""

#: lib/SVK/Command.pod:581
msgid "propset PROPNAME PROPVAL [DEPOTPATH | PATH...]"
msgstr ""

#: lib/SVK/Command.pod:582
msgid "pull - Bring changes from another repository"
msgstr ""

#: lib/SVK/Command.pod:583
msgid "pull DEPOTPATH"
msgstr ""

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

msgstr "-r [--revision] REV: 指定要处理的更动编号范围"

#: lib/SVK/Command.pod:335
msgid "-r [--revision] arg: ARG (some commands also take ARG1:ARG2 range)"
msgstr ""

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

#: lib/SVK/Command/Propedit.pm:74 lib/SVK/Command/Propset.pm:139
msgid "-r not allowed for propset copath.\n"
msgstr ""

#: lib/SVK/Command.pod:337
msgid "-s [--skipto] REV: start synchronization at revision REV"
msgstr "-s [--skipto] REV: 指定开始同步的更动编号"

#: lib/SVK/Command.pod:338
msgid "-s [--summarize]: show summary only"
msgstr "-s [--summarize]: 仅显示摘要信息"

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


#: 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/Command/Commit.pm:266
msgid "Can't use set-revprop with remote repository.\n"
msgstr ""

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

#. (loc($action)
#: lib/SVK/Command.pm:1032
msgid "Enter a depot path to %1 into: [%2] "
msgstr "要%1到的档案库路径名称:[%2]"

#: lib/SVK/Command.pod:373
msgid "Environment variables:"
msgstr "环境变数:"

#. ($target->report)
#: lib/SVK/Command/Propset.pm:150
msgid "File %1 has inconsistent newlines.\n"
msgstr "档案 %1 有不一致的换行符号。\n"

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:531
msgid "File '%1' is marked for addition"
msgstr ""

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:836

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

#: lib/SVK/Command/Proplist.pm:111
msgid "Properties on %1:\n"
msgstr "%1 的属性列表:\n"

#. ($propname, $path)
#: lib/SVK/Editor/Merge.pm:939
msgid "Property %1 of %2"
msgstr "%2 的 %1 属性"

#. ($propname, $rev)
#: lib/SVK/Command/Propset.pm:96
msgid "Property '%1' deleted from repository revision %2."
msgstr "已删除更动编号 %2 的属性‘%1’。"

#. ($propname, $rev)
#: lib/SVK/Command/Propset.pm:93
msgid "Property '%1' set on repository revision %2."
msgstr "已设定更动编号 %2 的属性‘%1’。"

#. ($path)
#: lib/SVK/Editor/InteractiveStatus.pm:1015
msgid "Property change on '%1' directory requested"
msgstr "已要求目录‘%1’的属性更动"

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:901

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


#. ($path)
#: lib/SVK/Editor/Checkout.pm:125
msgid "path %1 does not exist"
msgstr "路径 %1 不存在。"

#. ($target->report)
#. ($target2->report)
#. ($target->path)
#: lib/SVK/Command/Diff.pm:122 lib/SVK/Command/Diff.pm:161
#: lib/SVK/Command/Diff.pm:97 lib/SVK/Command/Propset.pm:105
msgid "path %1 does not exist.\n"
msgstr "路径 %1 不存在。\n"

#. ($copath)
#. ($report)
#: lib/SVK/.XD.pm.swp:46 lib/SVK/XD.pm:489 lib/SVK/XD.pm:492 lib/SVK/XD.pm:577
msgid "path %1 is not a checkout path.\n"
msgstr "路径 %1 不是已取出的路径。\n"

#. ($dst->report)

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


#: lib/SVK/Command.pod:578
msgid "proplist - List all properties on files or dirs"
msgstr "proplist - 列出档案或目录的所有属性"

#: lib/SVK/Command.pod:579
msgid "proplist PATH..."
msgstr "proplist 路径..."

#: lib/SVK/Command.pod:580
msgid "propset - Set a property on path"
msgstr "propset - 设定路径的某项属性"

#: lib/SVK/Command.pod:581
msgid "propset PROPNAME PROPVAL [DEPOTPATH | PATH...]"
msgstr "propset 属性名称 属性值 [档案库路径 | 路径...]"

#: lib/SVK/Command.pod:582
msgid "pull - Bring changes from another repository"
msgstr "pull - 拉取远程档案库里的更动"

#: lib/SVK/Command.pod:583
msgid "pull DEPOTPATH"
msgstr "pull 档案库路径"

#: lib/SVK/Command.pod:584

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

msgstr "-r [--revision] REV: 指定要處理的更動編號範圍"

#: lib/SVK/Command.pod:335
msgid "-r [--revision] arg: ARG (some commands also take ARG1:ARG2 range)"
msgstr ""

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

#: lib/SVK/Command/Propedit.pm:74 lib/SVK/Command/Propset.pm:139
msgid "-r not allowed for propset copath.\n"
msgstr ""

#: lib/SVK/Command.pod:337
msgid "-s [--skipto] REV: start synchronization at revision REV"
msgstr "-s [--skipto] REV: 指定開始同步的更動編號"

#: lib/SVK/Command.pod:338
msgid "-s [--summarize]: show summary only"
msgstr "-s [--summarize]: 僅顯示摘要資訊"

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


#: 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/Command/Commit.pm:266
msgid "Can't use set-revprop with remote repository.\n"
msgstr ""

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

#. (loc($action)
#: lib/SVK/Command.pm:1032
msgid "Enter a depot path to %1 into: [%2] "
msgstr "要%1到的檔案庫路徑名稱:[%2]"

#: lib/SVK/Command.pod:373
msgid "Environment variables:"
msgstr "環境變數:"

#. ($target->report)
#: lib/SVK/Command/Propset.pm:150
msgid "File %1 has inconsistent newlines.\n"
msgstr "檔案 %1 有不一致的換行符號。\n"

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:531
msgid "File '%1' is marked for addition"
msgstr ""

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:836

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

#: lib/SVK/Command/Proplist.pm:111
msgid "Properties on %1:\n"
msgstr "%1 的屬性列表:\n"

#. ($propname, $path)
#: lib/SVK/Editor/Merge.pm:939
msgid "Property %1 of %2"
msgstr "%2 的 %1 屬性"

#. ($propname, $rev)
#: lib/SVK/Command/Propset.pm:96
msgid "Property '%1' deleted from repository revision %2."
msgstr "已刪除更動編號 %2 的屬性「%1」。"

#. ($propname, $rev)
#: lib/SVK/Command/Propset.pm:93
msgid "Property '%1' set on repository revision %2."
msgstr "已設定更動編號 %2 的屬性「%1」。"

#. ($path)
#: lib/SVK/Editor/InteractiveStatus.pm:1015
msgid "Property change on '%1' directory requested"
msgstr "已要求目錄「%1」的屬性更動"

#. ($self->{path})
#: lib/SVK/Editor/InteractiveStatus.pm:901

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


#. ($path)
#: lib/SVK/Editor/Checkout.pm:125
msgid "path %1 does not exist"
msgstr "路徑 %1 不存在。"

#. ($target->report)
#. ($target2->report)
#. ($target->path)
#: lib/SVK/Command/Diff.pm:122 lib/SVK/Command/Diff.pm:161
#: lib/SVK/Command/Diff.pm:97 lib/SVK/Command/Propset.pm:105
msgid "path %1 does not exist.\n"
msgstr "路徑 %1 不存在。\n"

#. ($copath)
#. ($report)
#: lib/SVK/.XD.pm.swp:46 lib/SVK/XD.pm:489 lib/SVK/XD.pm:492 lib/SVK/XD.pm:577
msgid "path %1 is not a checkout path.\n"
msgstr "路徑 %1 不是已取出的路徑。\n"

#. ($dst->report)

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


#: lib/SVK/Command.pod:578
msgid "proplist - List all properties on files or dirs"
msgstr "proplist - 列出檔案或目錄的所有屬性"

#: lib/SVK/Command.pod:579
msgid "proplist PATH..."
msgstr "proplist 路徑..."

#: lib/SVK/Command.pod:580
msgid "propset - Set a property on path"
msgstr "propset - 設定路徑的某項屬性"

#: lib/SVK/Command.pod:581
msgid "propset PROPNAME PROPVAL [DEPOTPATH | PATH...]"
msgstr "propset 屬性名稱 屬性值 [檔案庫路徑 | 路徑...]"

#: lib/SVK/Command.pod:582
msgid "pull - Bring changes from another repository"
msgstr "pull - 拉取遠端檔案庫裡的更動"

#: lib/SVK/Command.pod:583
msgid "pull DEPOTPATH"
msgstr "pull 檔案庫路徑"

#: lib/SVK/Command.pod:584

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


    # determine whether the path is binary
    my $bin = q{};
    if ( ref $newprop && $newprop->{'svn:mime-type'} ) {
        $bin = ' - (bin)' if !mimetype_is_text( $newprop->{'svn:mime-type'} );
    }

    $logger->info( "$st   $report$bin");
}

sub do_propset {
    my ($self, $target, %arg) = @_;
    my ($entry, $schedule) = $self->get_entry($target->copath);
    $entry->{'.newprop'} ||= {};

    if ( $schedule ne 'add' && !$arg{'adjust_only'} ) {
        my $xdroot = $target->create_xd_root;
        my ( $source_path, $source_root )
            = $self->_copy_source( $entry, $target->copath, $xdroot );
        $source_path ||= $target->path_anchor;
        $source_root ||= $xdroot;

t/04merge.t  view on Meta::CPAN

overwrite_file (copath ("/A/foo"), "foobar\n");
overwrite_file (copath ("/A/bar"), "foobarbazzz\n");
$svk->add (copath ('A'));
$svk->ps ('svn:keywords', 'Rev', copath ("A/foo"));

$svk->commit ('-m', 'commit message here (r1)', $copath);

$svk->copy ('-m', 'branch', '//A', '//B');

append_file (copath ('/A/foo'), "\nsome more foobar\nzz\n");
$svk->propset ('someprop', 'propvalue', copath ("A/foo"));
$svk->commit ('-m', 'commit message here (r3)', $copath);

$svk->update ('-r', 1, $copath);
overwrite_file (copath ("A/foo"), "some local mods\nfoobar\n");

is_output ($svk, 'update', [$copath],
	   ["Syncing //(/) in $corpath to 3.",
	    status_native ($copath,
			   'GU ', 'A/foo',
			   'A  ', 'B',

t/07smerge-multi.t  view on Meta::CPAN

$svk->commit ('-m', 'more change on trunk', "$copath");

append_file ("$copath/trunk/test.pl", q|
END {
}

|);

$svk->commit ('-m', 'more change on trunk', "$copath");

$svk->propset ('someprop', 'propvalue', "$copath/trunk/test.pl");
$svk->status ($copath);
$svk->commit ('-m', 'and some prop', "$copath");

$svk->copy ('-m', 'branch //work', '//trunk', '//work');
$svk->update ($copath);

system {$^X} ($^X, "-pi.bak", "-e", "s/is main/is local main/", "$copath/work/test.pl");

$svk->commit ('-m', 'local mod', "$copath/work");

t/07smerge.t  view on Meta::CPAN

	    'Empty merge.'], 'merge up - empty');
$svk->update ($scopath);
append_file ("$scopath/A/be", "more modification on trunk\n");
mkdir "$scopath/A/newdir";
mkdir "$scopath/A/newdir2";
overwrite_file ("$scopath/A/newdir/deepnewfile", "new file added on source\n");
overwrite_file ("$scopath/A/newfile", "new file added on source\n");
overwrite_file ("$scopath/A/newfile2", "new file added on source\n");
$svk->add (map {"$scopath/A/$_"} qw/newdir newdir2 newfile newfile2/);
append_file ("$scopath/A/Q/qz", "file appened on source\n");
$svk->propset ("bzz", "newprop", "$scopath/A/Q/qz");
$svk->propset ("bzz", "newprop", "$scopath/A/Q/qu");
$svk->commit ('-m', 'commit on trunk', $scopath);
$svk->sync ('//m');

$svk->update ($copath);
overwrite_file ("$copath/newfile", "new file added on source\n");
overwrite_file ("$copath/newfile2", "new file added on source\nalso on local\n");
mkdir ("$copath/newdir");
$svk->add ("$copath/newfile");
append_file ("$copath/be", "modification on local\n");
append_file ("$copath/Q/qu", "modified on local\n");

t/09cmerge.t  view on Meta::CPAN

$svk->commit ('-m', 'more change on trunk', "$copath");

append_file ("$copath/trunk/test.pl", q|
END {
}

|);

$svk->commit ('-m', 'more change on trunk', "$copath");

$svk->propset ('someprop', 'propvalue', "$copath/trunk/test.pl");
$svk->status ($copath);
$svk->commit ('-m', 'and some prop', "$copath");

$svk->copy ('-m', 'branch //work', '//trunk', '//work');
$svk->update ($copath);

replace_file("$copath/work/test.pl", 'is main' => 'is local main');

$svk->commit ('-m', 'local mod', "$copath/work");

t/20add.t  view on Meta::CPAN


unlink ('A/exe');
$svk->revert ('A/exe');
ok (_x('A/exe'));

mkdir ('Ai');
overwrite_file ("Ai/foo", "foobar");
overwrite_file ("Ai/bar", "foobar");
overwrite_file ("Ai/tilde~", "foobar");
$svk->add ('-N', 'Ai');
$svk->propset ('svn:ignore', 'f*', 'Ai');
is_output ($svk, 'add', ['Ai'],
	   [map __($_), 'A   Ai/bar']);
$svk->revert ('-R', 'Ai');

$svk->add ('-N', 'Ai');
$svk->propset ('svn:ignore', 'f*', 'Ai');
is_output ($svk, 'add', ['Ai/foo', 'Ai/tilde~', 'Ai/bar'],
	   [map __($_), 'A   Ai/bar', 'A   Ai/foo', 'A   Ai/tilde~']);
$svk->commit ('-m', 'commit');
is_output ($svk, 'ls', ['//Ai'], ['bar', 'foo', 'tilde~']);

# auto-prop
use File::Temp qw/tempdir/;
my $dir = tempdir ( CLEANUP => 1 );
overwrite_file (File::Spec->catfile ($dir, 'servers'), '');
overwrite_file (File::Spec->catfile ($dir, 'config'), << "EOF");

t/23commit-inter-nav.t  view on Meta::CPAN

is_deeply($answer, ['stop'], 'all answers used');

is_output ($svk, 'status', [],
   [__('A   A/deep'),
    __('A   A/deep/baz'),
    __('A   A/deep/la'),
    __('A   A/deep/la/no'),
    __('A   A/deep/mas')], 'skip subdirectory');

#our $show_prompt_output = 1;
$svk->propset('roch', 'miata', 'A/deep');
$answer = [[q{
[1/6] Directory 'A/deep' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory > }, 'a'],[q{
[2/6] File 'A/deep/baz' is marked for addition:
[a]ccept, [s]kip this change,
move to [p]revious change > }, 'a'],[q{
[3/6] Directory 'A/deep/la' is marked for addition:
[a]ccept, [s]kip this change,
[A]ccept changes to whole subdirectory,

t/23commit-inter-nav.t  view on Meta::CPAN

[1/3] File 'A/deep/mas' is marked for addition:
[a]ccept, [s]kip this change > }, 's'],[q{Property change on A/deep
___________________________________________________________________
Name: roch
 +miata

[2/2] Property change on 'A/deep' directory requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name,
move to [p]revious change > }, 'a'],'stop'];
$svk->propset('tada', 'bob', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
# XXX: this should show info about property
is_output ($svk, 'status', [],
   [__('A   A/deep/mas')], 'skip file with property');
is_output ($svk, 'diff', [],
   ['=== A/deep/mas',
    '==================================================================',
    "--- A/deep/mas\t(revision 3)",
    "+++ A/deep/mas\t(local)",

t/23commit-inter-nav.t  view on Meta::CPAN

[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name [k]> }, 's'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: tada
 +bob

[2/2] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name,
move to [p]revious change > }, 'a'],'stop'];
$svk->propset('bata', 'rob', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: bata',
    ' +rob',
    ''], 'skip only one property');

t/23commit-inter-nav.t  view on Meta::CPAN

[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name [a]> }, 'c'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: zoot
 +wex

[2/2] Property change on 'A/deep/mas' file requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name,
move to [p]revious change > }, 's'],'stop'];
$svk->propset('bata', 'koro', 'A/deep');
$svk->propset('zoot', 'wex', 'A/deep/mas');
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: A/deep/mas',
    '___________________________________________________________________',
    'Name: zoot',
    ' +wex',
    ''], 'skip all \'bata\' properties');

overwrite_file_raw ("A/deep/mas", "wy\nkra\nkal\n");
$svk->propset('parra', 'kok', 'A/deep/mas');
$answer = [[qq{--- A/deep/mas\t(revision 6)
+++ A/deep/mas\t(local)}.q{
@@ -0,2 +0,2 @@
-po
+wy
 kra
 czny
[1/4] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,

t/23commit-inter-nav.t  view on Meta::CPAN

[2/2] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('M   A/foo')], 'commit all changes to content and properties');

$svk->revert("A/foo");
$svk->propset('parra', 'kok', '.');
$answer = [[q{Property change on 
___________________________________________________________________
Name: parra
 +kok

[1/1] Property change on '.' directory requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 's'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'diff', [],
   ['',
    'Property changes on: ',
    '___________________________________________________________________',
    'Name: parra',
    ' +kok',
    ''], 'skip change to root directory');

$svk->propset('parra', 'kok', '.');
$answer = [[q{Property change on 
___________________________________________________________________
Name: parra
 +kok

[1/1] Property change on '.' directory requested:
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip changes to all properties with that name > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');

t/23commit-inter-nav.t  view on Meta::CPAN

   ['=== A/foo',
    '==================================================================',
    "--- A/foo\t(revision 9)",
    "+++ A/foo\t(local)",
    '@@ -1,2 +1,3 @@',
    '-foobar',
    '+za',
    ' grab',
    '+ione'], 'skiped content change to directly passed file');

$svk->propset('papa', 'mot', 'A/foo');
overwrite_file_raw ("A/foo", "za\ngrab\nione\n");
$answer = [[qq{--- foo\t(revision 9)
+++ foo\t(local)}.q{
@@ -0,1 +0,1 @@
-foobar
+za
 grab

[1/3] Modification to 'foo' file:
[a]ccept, [s]kip this change,

t/23commit-inter-nav.t  view on Meta::CPAN

[1/1] Modification to 'A/foo' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [],
    [__('C   A/deep/baz'),
     __('C   A/deep/mas')], 'multiple conflicts- skip');

$svk->revert('A/deep/baz', 'A/deep/mas');
$svk->propset('svn:mime-type', 'faked/type', 'A/deep/mas');
overwrite_file_raw ("A/deep/mas", "baran\nkoza\nowca\n");
$show_prompt=1;
$answer = [[q{
[1/2] Modifications to binary file 'A/deep/mas':
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip rest of changes to this file and its properties > }, 'c'],'stop'];
is_output($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['',                                     
     '[1/2] Modifications to binary file \'A/deep/mas\':',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip rest of changes to this file and its properties > ',
     'Committed revision 14.'],
     'replace file with binary one - output');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'replace file with binary one');

$svk->propset('svn:mime-type', 'text/plain', 'A/deep/mas');
overwrite_file_raw ("A/deep/mas", "krowa\nkoza\n");
$show_prompt=0;
$answer = [[q{
[1/2] Modifications to binary file 'A/deep/mas':
[a]ccept, [s]kip this change,
a[c]cept, s[k]ip rest of changes to this file and its properties > }, 'a'],[q{Property change on A/deep/mas
___________________________________________________________________
Name: svn:mime-type
 -faked/type
 +text/plain

t/23commit-inter-nav.t  view on Meta::CPAN


[3/3] Modification to 'A/deep/mas' file:
[a]ccept, [s]kip this change,
[A]ccept, [S]kip the rest of changes to this file,
move to [p]revious change > }, 'a'],'stop'];
$svk->commit('--interactive', '-m', 'foo');
is_deeply($answer, ['stop'], 'all answers used');
is_output ($svk, 'status', [], [], 'replace text file with text one');

#our $show_prompt_output=1;
$svk->propset('kox', 'ob', 'A/deep');
overwrite_file_raw ("A/deep/mas", "mleczna\nkrowa\n");
$answer = [[qq{--- A/deep/mas\t(revision 16)
+++ A/deep/mas\t(local)}.q{
@@ -0,4 +0,4 @@
-byk
+mleczna
 krowa
 bawol
 koza
 kaczka

t/23commit-inter-output.t  view on Meta::CPAN

overwrite_file ("A/aj", "foobar");
overwrite_file ("A/ow", "foobar");
is_output ($svk, 'commit', ['--interactive'], ['No targets to commit.'], 'commit - no target');

$answer = [('a') x 11];
$svk->add ('A');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Committed revision 1.'], 'initial commit');
    
overwrite_file ("A/foo",      "alfa\nbeta\nfoobar\ngamma\ndelta");
$svk->propset('one', "multi\nline", 'A/foo');
$svk->propset('two', "", 'A/foo');

overwrite_file ("A/foox",     "pies\nfoo\nkot");
$svk->propset('three', "multi\nline\n", 'A/foox');

overwrite_file ("A/bar",      "alfa\nfoobar\nbeta");

overwrite_file ("A/deep/baz", "");
$svk->propset('four', "max", 'A/deep/baz');
$svk->propset('five', "min", 'A/deep/baz');

overwrite_file ("A/deep/la/no", "\n");
$svk->propset('six', "re\n", 'A/deep/la/no');

overwrite_file ("A/deep/mas", "ten");

$svk->propset('seven', "wol", 'A/aj');
$svk->propset('eight', "wer", 'A/aj');

$svk->propset('nine', "owy", 'A/ow');

$answer = [('a') x 18];

#our $DEBUG = 1;
$show_prompt = 1; #Begin interactive mode.

is_output ($svk, 'commit', ['--interactive', '-m', 'foo2'],
    ['Property change on A/aj',
     '___________________________________________________________________',
     'Name: eight',

t/23commit-inter-output.t  view on Meta::CPAN

     ' +owy',
     '',
     '[18/18] Property change on \'A/ow\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name,',
     'move to [p]revious change > ',
     'Committed revision 2.'],
    'file modifications - output');

$svk->rm("A/deep/la");
$svk->propset('one', "multi\nline", 'A/deep');

$svk->rm("A/foox");

$svk->mkdir('A/deep/tra');
$svk->propset('one', "multi\nline", 'A/deep/tra');
$svk->propset('two', "", 'A/deep/tra');

$svk->mkdir('A/deep/tra/bant');
$svk->propset('one', "multi\nline", 'A/deep/tra/bant');

$svk->mkdir('A/deep/tra/per');
$answer = [('a') x 9];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo2'],
    ['',
     '[1/9] File or directory \'A/deep/la\' is marked for deletion:',
     '[a]ccept, [s]kip this change > ',
     '',
     '[2/9] Directory \'A/deep/tra\' is marked for addition:',
     '[a]ccept, [s]kip this change,',

t/23commit-inter-output.t  view on Meta::CPAN

     ' -multi',
     ' -line',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 11.'],
    'Prop del - no nl at end');

$answer = ['a'];
$svk->propset('one', 'zenum\n', 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Property change on A/foo',
     '___________________________________________________________________',
     'Name: one',
     ' +zenum\n',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 12.'],

t/23commit-inter-output.t  view on Meta::CPAN

     '___________________________________________________________________',
     'Name: one',
     ' -zenum\n',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 13.'],
    'Prop del - nl at end');

$svk->propset('one', "por\n", 'A/foo');
$svk->commit('-m', 'baz');

$answer = ['a'];
$svk->propset('one', "rapaport", 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Property change on A/foo',
     '___________________________________________________________________',
     'Name: one',
     ' -por',
     ' +rapaport',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 15.'],
    'Prop set - nl at end -> no nl at end');

$answer = ['a'];
$svk->propset('one', "mar\n", 'A/foo');
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Property change on A/foo',
     '___________________________________________________________________',
     'Name: one',
     ' -rapaport',
     ' +mar',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',

t/23commit-inter-output.t  view on Meta::CPAN

     '+0',
     '\ No newline at end of file',
     '',
     '[1/1] Modification to \'A/foo\' file:',
     '[a]ccept, [s]kip this change,',
     '[A]ccept, [S]kip the rest of changes to this file > ',
     'Committed revision 19.'],
    'File diff - change to "0"');
}

$svk->propset('one', "0", 'A/foo');
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Property change on A/foo',
     '___________________________________________________________________',
     'Name: one',
     ' -mar',
     ' +0',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 20.'],
    'Prop diff - change to "0"');

$svk->propset('one', "data", 'A/foo');
$answer = ['a'];
is_output ($svk, 'commit', ['--interactive', '-m', 'foo'],
    ['Property change on A/foo',
     '___________________________________________________________________',
     'Name: one',
     ' -0',
     ' +data',
     '',
     '[1/1] Property change on \'A/foo\' file requested:',
     '[a]ccept, [s]kip this change,',
     'a[c]cept, s[k]ip changes to all properties with that name > ',
     'Committed revision 21.'],
    'Prop diff - change from "0"');

# test for bug where svn:keywords or svn:eol-style could make svk revert
# skipped changes

is_output($svk, propset => ['svn:keywords', 'Id', 'A/bar'],
          [__(' M  A/bar')]);

overwrite_file("A/bar", "\$Id\$\nalfa\nfoobar\nbeta\n");

is_output($svk, commit => ['-m', 'set keywords', 'A/bar'], ['Committed revision 22.']);

overwrite_file("A/bar", "\$Id\$\nalfa\nskip this insert\nfoobar\naccept this insert\nbeta\n");

is_output($svk, diff => ['A/bar'],
          [__('=== A/bar'),

t/24diff.t  view on Meta::CPAN

chdir ($copath);
mkdir ('A');
overwrite_file ("A/foo", "foobar\nfnord\n");
overwrite_file ("A/bar", "foobar\n");
overwrite_file ("A/nor", "foobar\n");
$svk->add ('A');
$svk->commit ('-m', 'init');

overwrite_file ("A/binary", "foobar\nfnord\n");
$svk->add ('A/binary');
$svk->propset ('svn:mime-type', 'image/png', 'A/binary');
is_output ($svk, 'diff', ['//asdf-non'],
	   ['Revision required.']);
is_output ($svk, 'diff', ['//asdf-non', 'A/binary'],
	   ['path //asdf-non does not exist.']);
is_output ($svk, 'diff', ['A/binary', '//asdf-non'],
	   ['Invalid arguments.']);
is_output ($svk, 'diff', ['//asdf-non', '//'],
	   ['path //asdf-non does not exist.']);
is_output ($svk, 'diff', [],
           ['=== A/binary',

t/24diff.t  view on Meta::CPAN

            '',
	    '=== A/baz',
	    '==================================================================',
	    "--- A/baz\t(revision 3)",
	    "+++ A/baz\t(local)",
	    '@@ -1 +0,0 @@',
	    '-foobar'], 'recursive delete_entry');

$svk->revert ('-R', 'A');
$svk->update;
$svk->propset ('svn:mime-type', 'image/jpg', 'A/binary');
is_output ($svk, 'diff', [],
           ['',
            'Property changes on: A/binary',
            '___________________________________________________________________',
            'Name: svn:mime-type',
            ' -image/png',
            ' +image/jpg',
	    '']);
$svk->commit('-m', 'Property changes for A/binary.');
is_output ($svk, 'diff', ['-r4:3'],

t/29update-props.t  view on Meta::CPAN

        qr" \+>>>> YOUR VERSION Property prop of A \(/trunk\) \d+",
        qr" \+another-value==== ORIGINAL VERSION Property prop of A \d+",
        qr" \+==== THEIR VERSION Property prop of A \(/trunk\) \d+",
        qr" \+value<<<< \d+",
        " +",
        "",
    ] );
    # TODO: test resolved command, test ps command
}

# flush to required state: revert, update to revision before propset on //trunk
sub flush_co {
    $svk->revert('-R', $copath);
    $svk->up($copath);
    $svk->up('-r3', $copath);
    is_output($svk, 'up', ['-C', $copath], [
        #XXX, TODO: why it's corpath instead copath?
        "Syncing //trunk(/trunk) in $corpath to 4.",
        __(" U  $copath/me"),
    ] );
    is_output($svk, 'st', [$copath], [

t/34revprop.t  view on Meta::CPAN

is_output(
    $svk, 'propget', ['-r' => 1, '--revprop', 'svn:log'],
    ['log1']
);
is_output(
    $svk, 'propget', ['-r' => 2, '--revprop', 'svn:log'],
    ['log2']
);

is_output(
    $svk, 'propset', ['--quiet', '-r2', '--revprop', 'svn:log', 'log2.new'],
    [   ]
);
is_output(
    $svk, 'propset', ['-r2', '--revprop', 'svn:log', 'log2.new'],
    ["Property 'svn:log' set on repository revision 2."]
);
is_output(
    $svk, 'propget', ['-r2', '--revprop', 'svn:log'],
    ['log2.new']
);

is_output(
    $svk, 'propdel', ['-q', '-r2', '--revprop', 'svn:log'],
    [   ]

t/74chgspec.t  view on Meta::CPAN

$svk->commit ('-m', 'more change on trunk', "$copath");

append_file ("$copath/trunk/test.pl", q|
END {
}

|);

$svk->commit ('-m', 'more change on trunk', "$copath");

$svk->propset ('someprop', 'propvalue', "$copath/trunk/test.pl");
$svk->status ($copath);
$svk->commit ('-m', 'and some prop', "$copath");

$svk->copy ('-m', 'branch //work', '//trunk', '//work');
$svk->update ($copath);

replace_file("$copath/work/test.pl", 'is main' => 'is local main');

$svk->commit ('-m', 'local mod', "$copath/work");

t/bm/merge.t  view on Meta::CPAN


$svk->mirror('//mirror/MyProject', $uri);
$svk->sync('//mirror/MyProject');

my ($copath, $corpath) = get_copath ('bm-merge');
$svk->checkout('//mirror/MyProject/trunk',$copath);
chdir($copath);

is_output_like ($svk, 'branch', ['--create', 'feature/foo','--switch-to'], qr'Project branch created: feature/foo');
overwrite_file ('A/be', "\nsome more foobar\nzz\n");
$svk->propset ('someprop', 'propvalue', 'A/be');
$svk->commit ('-m', 'commit message here (r8)','');

my $branch_foo = '/mirror/MyProject/branches/feature/foo';
my $branch_bar = '/mirror/MyProject/branches/feature/bar';
my $trunk = '/mirror/MyProject/trunk';

is_output ($svk, 'smerge',
    ['-C', '//mirror/MyProject/branches/feature/foo', '//mirror/MyProject/trunk'], 
    ["Auto-merging (0, 8) $branch_foo to $trunk (base $trunk:6).",
     "Checking locally against mirror source $uri.", 'UU  A/be',

t/bm/prop-multiproject.t  view on Meta::CPAN


my ($copath, $corpath) = get_copath('prop-multiproject');

# set prop for project A
my $proppath = { 'trunk' => '/mirror/twoProject/projectA/trunk', 
    'branches' => '/mirror/twoProject/projectA/branches',
    'tags' => '/mirror/twoProject/projectA/tags',
    'hooks' => '/mirror/twoProject/projectA/hooks',
};

$svk->propset('-m', "- projectA trunk path set", 'svk:project:projectA:path-trunk',
    $proppath->{trunk}, "//"); 
$svk->propset('-m', "- projectA branches path set", 'svk:project:projectA:path-branches',
    $proppath->{branches}, "//");
$svk->propset('-m', "- projectA tags path set", 'svk:project:projectA:path-tags',
    $proppath->{tags}, "//");
is_output ($svk, 'propget', ['svk:project:projectA:path-trunk', '//'], [$proppath->{trunk}]);

$svk->checkout('//mirror/twoProject/projectB', $copath); # checkout project B

chdir($copath);

# in checkout of project B, list
is_output ($svk, 'branch', ['--list'], ['Bar']);



( run in 2.690 seconds using v1.01-cache-2.11-cpan-71847e10f99 )