SYNOPSIS

    use Arch::Changes qw(:type);

    use Arch::Tree;
    my $changes = $tree->get_changes;
    print $changes->get_listing;

    use Arch::Log;
    my $changed = $log->get_changes->is_changed('to', "COPYING");
    die "License was compromised" if $changed && $changed->{&MODIFY};

DESCRIPTION

Arch::Changes contains a list of elements, each representing a single tree change. Each change element is described by a hash with the following fields:

type

The type of the change. Can be one of \s-1ADD\s0, \s-1DELETE\s0, \s-1MODIFY\s0, \s-1META_MODIFY\s0 or \s-1RENAME\s0.

is_dir

A boolean value indicating whether the affected tree element is a directory.

arguments

A list of arguments. The first element is always relative path of the affected tree element. For changes of type \s-1RENAME\s0 the first argument is the old path and the second argument the new path name.

The type constants can be conveniently imported using the tag \*(C`:type\*(C'.

use Arch::Changes qw(:type);

METHODS

The following methods are available:

new, add, count, get, get_listing, is_changed, dump, type_string, to_string.

new

Creates a new, initially empty, changes list. Typically it is called indirectly from method get_changes in Arch::Changeset, Arch::Tree or Arch::Log class.

add type is_dir arguments...

Adds a new change element to the list of changes. Typically it is called indirectly from method get_changes in Arch::Changeset, Arch::Tree or Arch::Log class.

count

Returns the number of change elements.

get num

Returns the num-th change element or all if num is undefined.

get_listing

Generates a textual changes listing as produced by \*(C`tla changes\*(C'.

is_changed to filepath [is_dir]

Verify whether the given filepath is modified by the changes. The to parameter may get boolean values \*(L"0\*(R", \*(L"1\*(R", \*(L"from\*(R" or \*(L"to\*(R", it only affects \s-1RENAME\s0 changes, and in some sense \s-1ADD\s0 and \s-1DELETE\s0 changes. If to is set, then the given filepath is taken as the destination of \s-1RENAME\s0 or \s-1ADD\s0, otherwise as the source of \s-1RENAME\s0 or \s-1DELETE\s0. The \s-1MODIFY\s0 and \s-1META_MODIFY\s0 changes are not affected, since the destination and the source is the same file/dir. If filepath is not modified by any changes, return undef. Otherwise, return hash with possible keys \s-1ADD\s0, \s-1DELETE\s0, \s-1MODIFY\s0, \s-1META_MODIFY\s0 and \s-1RENAME\s0. The hash values are 1 in all cases except for \s-1RENAME\s0, then the value is the file name on the opposite side (i.e., the source of \s-1RENAME\s0 if to is true, and the destination if false). Note, the valid return values for arch are: undef, hashref with one key (\s-1ADD\s0 or \s-1DELETE\s0) or hashref with combination of one-to-three keys (\s-1MODIFY\s0, \s-1META_MODIFY\s0 and \s-1RENAME\s0).

dump

Generates a dump of the changes list using Data::Dumper.

type_string change

Returns the change type string as produced by \*(C`tla changes\*(C'.

to_string change

Generates a changes line for change as produced by \*(C`tla changes\*(C'.

BUGS

Awaiting for your reports.

AUTHORS

Mikhael Goikhman ([email protected]\*(--Perl-GPL/arch-perl\*(--devel).

Enno Cramer ([email protected]/arch-perl\*(--devel).

RELATED TO Arch::Changes…

For more information, see tla, Arch::Changeset, Arch::Tree, Arch::Log.