The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

ShipIt::VC -- abstract base class for version control systems

SYNOPSIS

 # done for you, elsewhere
 ... ShipIt::VC->new($conf)

 # get your instance from your state handle:
 $vc = $state->vc;

 # then
 $vc->commit($msg);
 $vc->tag_version("1.25"[, $msg]);
 $vc->exists_tagged_version("1.25"); # 1
 $vc->local_diff("ChangeLog");       # returns diff of changelog

OVERVIEW

ShipIt::VC is an abstract base class, with a factory method 'new' to return a subclass instance for the version control system detected to be in use.

Rather than using 'new' directly, you should call your ShipIt::State $state's "vc" accessor method, which returns a memoized (er, singleton) instance of ShipIt::VC->new.

ABSTRACT METHODS

commit($msg);

Commit all outstanding changes in working copy to repo, with provided commit message.

tag_version($ver[, $msg]);

Tag the current version (already committed) as the provided version number.

exists_tagged_version($ver)

Returns true if the given version is already tagged.

local_diff($file)

Returns diff of $file from what's on the server compared to the local on-disk copy.

are_local_diffs

Returns bool, if any files on disk are uncommitted.