App-Git-Autofixup
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
}
}
sub create_commits {
my ($self, @commits) = @_;
for my $commit (@commits) {
$self->write_change($commit);
$self->commit_if_dirty("commit" . $self->{n_commits});
$self->{n_commits} += 1;
}
}
sub write_change {
my ($self, $change) = @_;
if (ref $change eq 'HASH') {
while (my ($file, $contents) = each %{$change}) {
Util::write_file($file, $contents);
}
} elsif (ref $change eq 'CODE') {
&{$change}();
}
}
sub commit_if_dirty {
my ($self, $msg) = @_;
my $is_dirty = qx(git status -s);
if ($is_dirty) {
Util::run('git add -A');
Util::run(qw(git commit -am), $msg);
}
}
sub log_since {
my ($self, $revision) = @_;
my $log = qx{git -c diff.noprefix=false log -p --format=%s ${revision}..};
if ($? != 0) {
croak "git log: $!\n";
}
return $log;
}
sub diff {
my ($self, $revision) = @_;
my $diff = qx{git -c diff.noprefix=false diff ${revision}};
if ($? != 0) {
croak "git diff $!\n";
}
return $diff;
}
sub current_commit_sha {
my ($self, $dir) = @_;
my $revision = qx{git rev-parse HEAD};
$? == 0 or croak "git rev-parse: $!";
chomp $revision;
return $revision;
}
sub autofixup {
my $self = shift;
local @ARGV = @_;
print "# git-autofixup ", join(' ', @ARGV), "\n";
return Autofixup::main();
}
sub switch_to_downstream_branch {
my ($self, $branch) = @_;
my $tracking_branch = qx(git rev-parse --abbrev-ref HEAD)
or croak "get tracking branch: $!";
chomp $tracking_branch;
Util::run(qw(git checkout -q -b), $branch, '--track', $tracking_branch);
}
sub set_upstream {
my ($self, $topic_branch, $upstream) = @_;
my $cmd = "git branch --set-upstream-to $upstream >/dev/null 2>&1";
print "# $cmd\n";
system($cmd);
if ($? >> 8 == 129) {
# If git detects a bad option it exits with 129. For old versions of
# git that don't have --set-upstream-to, fall back to --set-upstream,
# which was removed in 2017.
Util::run(qw(git branch --set-upstream), $topic_branch, $upstream);
} elsif ($? != 0) {
croak "`git branch --set-upstream-to` " . Util::child_error_desc($?);
}
return;
}
1;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.107 second using v1.00-cache-2.02-grep-82fe00e-cpan-cec75d87357c )