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.