App-Git-Autofixup

 view release on metacpan or  search on metacpan

t/repo.pl  view on Meta::CPAN

    }
}

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 distribution
 view release on metacpan -  search on metacpan

( run in 1.107 second using v1.00-cache-2.02-grep-82fe00e-cpan-cec75d87357c )