App-Git-Workflow
view release on metacpan or search on metacpan
lib/App/Git/Workflow/Command/BranchClean.pm view on Meta::CPAN
my $details = $workflow->commit_details($branch, branches => 0);
# don't delete young branches even if merged
next BRANCH if too_young_to_die($details);
$max = $details->{time} if $max < $details->{time};
$deleted += __PACKAGE__->$action($branch, $details);
$total++;
}
warn "Deleted $deleted of $total branches\nMax = " . (int $max/60/60/24) . "\n";
return;
}
sub do_delete {
my ($self, $branch, $details) = @_;
my $too_old = too_old($details);
my $in_master;
t/cmd-branch-clean.t view on Meta::CPAN
},
name => 'delete remote branches',
},
{
ARGV => [qw{--all --min-age 10 --max-age 30}],
ENV => {
GIT_WORKFLOW_MAX_AGE => 90,
},
mock => [
{ branch => [map {" $_"} qw{master origin/master young origin/old}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ push => undef },
{ log => (time - 60*60*24*5) . "\x{1}2222222222222222222222222222222222222222" },
],
STD => {
OUT => qr//,
ERR => qr/deleting \s old \s branch \s origin\/old/xms,
},
option => {
exclude => [],
min_age => 10,
max_age => 30,
tag_prefix => '',
t/cmd-branch-clean.t view on Meta::CPAN
},
name => 'delete only very old or old merged branches',
},
{
ARGV => [qw{--all --min-age 10 --max-age 0}],
ENV => {
GIT_WORKFLOW_MAX_AGE => 90,
},
mock => [
{ branch => [map {" $_"} qw{master origin/master young origin/old}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{origin/feature1}] },
{ log => (time - 60*60*24*5) . "\x{1}2222222222222222222222222222222222222222" },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 0 \s of \s 1 \s branches/xms,
},
option => {
exclude => [],
min_age => 10,
max_age => 0,
tag_prefix => '',
tag_suffix => '',
all => 1,
},
name => 'delete only old and merged branches',
},
{
ARGV => [qw{--tag --test}],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master feature old_project}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master feature}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 2 \s of \s 2 \s branches/xms,
},
option => {
exclude => [],
max_age => 120,
tag_prefix => '',
tag_suffix => '',
tag => 1,
test => 1,
},
name => 'test tag deleted branches',
},
{
ARGV => [qw{--tag --no-test}],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master feature old_project}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master feature}] },
{ tag => undef },
{ branch => undef },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ tag => undef },
{ branch => undef },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 2 \s of \s 2 \s branches/xms,
},
option => {
exclude => [],
max_age => 120,
t/cmd-branch-clean.t view on Meta::CPAN
tag => 1,
test => 0,
},
name => 'tag deleted branches',
},
{
ARGV => [qw{--exclude-file t/data/excludes.txt}],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master feature exclude_me}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master}] },
{ branch => undef },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 1 \s of \s 1 \s branches/xms,
},
option => {
exclude => [],
max_age => 120,
t/cmd-branch-clean.t view on Meta::CPAN
tag_suffix => '',
exclude_file => 't/data/excludes.txt',
},
name => 'don\'t deleete excluded branches',
},
{
ARGV => [qw{--tag}],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master feature}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master}] },
{ tag => undef },
{ branch => undef },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 1 \s of \s 1 \s branches/xms,
},
option => {
exclude => [],
t/cmd-branch-clean.t view on Meta::CPAN
tag_suffix => '',
tag => 1,
},
name => 'tag deleted branches',
},
{
ARGV => [qw{--tag --test}],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master feature project_master}] },
{ log => (time - 60*60*24*50) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{feature project_master}] },
{ log => (time - 60*60*24*5) . "\x{1}2222222222222222222222222222222222222222" },
{ branch => [map {" $_"} qw{project_master}] },
],
STD => {
OUT => qr//,
ERR => qr/Deleted \s 0 \s of \s 2 \s branches/xms,
},
option => {
exclude => [],
max_age => 120,
tag_prefix => '',
t/cmd-files.t view on Meta::CPAN
ERR => "Unknown option: unknown\n",
},
option => {age => 28},
name => 'Bad argument',
},
{
ARGV => [qw/garbage --since 2014-09-24/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ 'rev-list' => [
'1111111111111111111111111111111111111111',
'2222222222222222222222222222222222222222',
'3333333333333333333333333333333333333333',
'4444444444444444444444444444444444444444',
]},
{ show => [
'1111111 Message',
'file1',
t/cmd-files.t view on Meta::CPAN
ERR => '',
},
option => {age => 28, since => '2014-09-24'},
name => 'files changed',
},
{
ARGV => [qw/local/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ diff => [qw/file1 file2/] },
{ 'rev-list' => [
'1111111111111111111111111111111111111111',
'2222222222222222222222222222222222222222',
'3333333333333333333333333333333333333333',
'4444444444444444444444444444444444444444',
]},
{ show => [
'1111111 Message',
t/cmd-files.t view on Meta::CPAN
ERR => '',
},
option => {age => 28},
name => 'local',
},
{
ARGV => [qw/local/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ diff => [qw{file1 file2}] },
{ 'rev-list' => [] },
{ 'rev-parse' => 't/data/git-files' },
],
STD => {
OUT => '',
ERR => '',
},
workflow => {
GIT_DIR => 'git',
},
option => {age => 28},
name => 'local no changes',
},
{
ARGV => [qw/local/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ diff => [qw{file1 file2}] },
{ 'rev-list' => [
'1111111111111111111111111111111111111111',
'2222222222222222222222222222222222222222',
'3333333333333333333333333333333333333333',
'4444444444444444444444444444444444444444',
]},
{ show => [
'1111111 Message',
t/cmd-files.t view on Meta::CPAN
ERR => '',
},
option => {age => 28},
name => 'local no branch',
},
{
ARGV => [qw/local --verbose/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ diff => [qw{file1 file2}] },
{ 'rev-list' => [
'1111111111111111111111111111111111111111',
'2222222222222222222222222222222222222222',
'3333333333333333333333333333333333333333',
'4444444444444444444444444444444444444444',
]},
{ show => [
'1111111 Message',
t/cmd-files.t view on Meta::CPAN
ERR => "file1\nfile2\n",
},
option => {age => 28, verbose => 1},
name => 'local verbose',
},
{
ARGV => [qw/local -vv/],
mock => [
{ config => undef },
{ branch => [map {" $_"} qw{master origin/master}] },
{ log => (time - 60*60*24*5) . "\x{1}1111111111111111111111111111111111111111" },
{ branch => [map {" $_"} qw{master origin/master}] },
{ diff => [qw{file1 file2}] },
{ 'rev-list' => [
'1111111111111111111111111111111111111111',
'2222222222222222222222222222222222222222',
'3333333333333333333333333333333333333333',
'4444444444444444444444444444444444444444',
]},
{ show => [
'1111111 Message',
( run in 0.345 second using v1.01-cache-2.11-cpan-7add2cbd662 )