SYNOPSIS

Arch::Changeset objects may be created directly if you got a changeset directory:

    use Arch::Changeset;
    my $changeset = Arch::Changeset->new(
        '[email protected]/arch-perl--devel--0--patch-6',
        '/tmp/,,changeset-6',
    );

But often are created indirectly by other objects:

use Arch::Session; $changeset = Arch::Session->new->get_revision_changeset( '[email protected]/arch-perl--devel--0--patch-6' );

use Arch::Library; $changeset = Arch::Library->new->get_revision_changeset( '[email protected]/arch-perl--devel--0--patch-6' );

print scalar $changeset->get_patch("perllib/Arch/Changeset.pm");

my $diff_file = ($changeset->get_patch("README", 1))[2]; print Arch::Util::load_file($diff_file);

DESCRIPTION

This class represents the changeset concept in Arch and provides some useful methods.

METHODS

The following methods are available:

new, get_patch, get_index, get_changes, get_all_diffs, join_all_diffs, ancestor.

new revision-spec dir-name

Construct the Arch::Changeset object associated with the given fully-qualified revision-spec and the existing directory dir-name.

get_patch file-path
get_patch file-path type
get_patch file-path type full-file-asis

Return the patch (or otherwise content) of the given file-path in the changeset. type is integer: 0 (unknown, try to autodetect, this is the default), 1 (modified file, or metadata change), 2 (new file), 3 (removed file). The default behaviour is to create a fake diff against /dev/null for non-binary new and removed files; the full-file-asis flag, if set to true, changes this behaviour and causes to return the content of such file as-is. Binary new and removed files are always returned as-is regardless of the flag. This flag is also ignored if type is 1. In the scalar content return the patch in diff\|(1) format (or the whole file content as described above). In the list content return 4 scalars: the patch, the file name on the disk containing this patch (or the whole file), the change type (that is \*(L"patch\*(R", \*(L"new\*(R" or \*(L"removed\*(R") and the as-is flag. The returned values that follow the first one (the patch/file content) share the order of the corresponding parameters; the parameters are more hints, while the returned values accurately describe the content.

get_index name

Returns the content of the index file name as an \s-1ID\s0 => path hash. Valid names are 'orig-dirs-index', 'orig-files-index', 'mod-dirs-index' and 'mod-files-index'.

get_changes

Returns a list of changes in the changeset.

get_all_diffs

Returns all diffs in the changeset (array or arrayref). This includes changes of types \s-1MODIFY\s0, \s-1ADD\s0 and \s-1DELETE\s0.

join_all_diffs

Returns concatenated output of all diffs in the changeset.

ancestor

Return the ancestor of the changeset. If =ancestor file is found (that is the case for library changesets) its content is returned, otherwise try to guess the ancestor of the revision using Arch::Util::adjacent_revision.

BUGS

Awaiting for your reports.

AUTHORS

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

RELATED TO Arch::Changeset…

For more information, see tla, Arch::Session, Arch::Library, Arch::Util.