API-GitForge
view release on metacpan or search on metacpan
lib/API/GitForge.pm view on Meta::CPAN
=head2 remote_forge_info $remote
Look at the URL for git remote C<$remote>, as returned by C<git remote
get-url>, assume that this remote is a git forge, and return the
domain name of that forge and the path to the repository.
system qw(git remote add salsa https://salsa.debian.org/spwhitton/foo);
my ($forge_domain, $forge_repo) = API::GitForge::remote_forge_info("salsa");
say $forge_domain; # outputs 'salsa.debian.org'
say $forge_repo; # outputs 'spwhitton/foo'
=head1 STATUS
Unstable. Interface may change.
=head1 AUTHOR
Sean Whitton <spwhitton@spwhitton.name>
=head1 COPYRIGHT AND LICENSE
lib/API/GitForge/Role/GitForge.pm view on Meta::CPAN
my $fork_uri = $self->_ensure_fork($_[0]);
my $temp = tempdir CLEANUP => 1;
my $git = Git::Wrapper->new($temp);
$git->init;
my @fork_branches
= map { m#refs/heads/#; $' } $git->ls_remote("--heads", $fork_uri);
return $fork_uri if grep /\Agitforge\z/, @fork_branches;
open my $fh, ">", catfile $temp, "README.md";
say $fh "This repository exists only in order to submit pull request(s).";
close $fh;
$git->add("README.md");
$git->commit({ message => "Temporary fork for pull request(s)" });
# We should be able to just say
#
# $git->push($fork_uri, "master:gitforge");
#
# but that hangs indefinitely when pushing to (at least) Debian's
# GitLab instance. So just bypass Git::Wrapper and do the push
lib/App/git/nuke_forge_fork.pm view on Meta::CPAN
} catch {
die "pwd doesn't look like a git repository ..\n";
};
#>>>
GetOptions "upstream=s" => \$upstream;
my @fork_branches
= grep !/\Agitforge\z/,
map { m#refs/heads/#; $' } $git->ls_remote(qw(--heads fork));
if (@fork_branches) {
say "Would delete the following branches:";
say " $_" for @fork_branches;
print "\n";
exit unless $term->ask_yn(prompt => "Are you sure?");
}
my ($forge_domain, $upstream_repo) = remote_forge_info $upstream;
my $forge = new_from_domain
domain => $forge_domain,
access_token => forge_access_token $forge_domain;
$forge->nuke_fork($upstream_repo);
$git->remote(qw(rm fork));
( run in 1.649 second using v1.01-cache-2.11-cpan-5623c5533a1 )