From 89b581c6fa663d8a9db728d98e7f56c83c991444 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Tue, 11 Feb 2020 14:34:08 -0700 Subject: rework script into API::GitForge generic interface Signed-off-by: Sean Whitton --- bin/git-clean-forge-fork | 63 +++++++++++++++++++++++++++++++++++++++++ bin/git-clean-forge-repo | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ bin/git-nuke-forge-fork | 61 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100755 bin/git-clean-forge-fork create mode 100755 bin/git-clean-forge-repo create mode 100755 bin/git-nuke-forge-fork (limited to 'bin') diff --git a/bin/git-clean-forge-fork b/bin/git-clean-forge-fork new file mode 100755 index 0000000..bcfd592 --- /dev/null +++ b/bin/git-clean-forge-fork @@ -0,0 +1,63 @@ +#!/usr/bin/perl +# PODNAME: git-clean-forge-fork +# ABSTRACT: create tidy forks for pull requests +# +# Copyright (C) 2017, 2020 Sean Whitton +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +=head1 SYNOPSIS + +B [B<--upstream=>I] + +=head1 DESCRIPTION + +Creates a fork for proposing changes to a project hosted on a git +forge, like GitHub or GitLab. Also configures the fork to make it +obvious that it only exists for submitting changes, so that the fork +clutters up your git forge profile a bit less. Also adds a 'fork' +remote to which you can push your proposed changes. + +=head1 OPTIONS + +=over 4 + +=item B<--upstream=>I + +Specify the name of the upstream git remote, i.e., what you want to +fork. Defaults to "origin". + +=back + +=head1 FILES + +=over 4 + +=item $XDG_CONFIG_HOME/.config/gitforge/access_tokens/I + +Where I is the domain name of the git forge +(e.g. "github.com", "salsa.debian.org"), this file should contain an +API access token to log in to your account at the git forge. If +unset, $XDG_CONFIG_HOME defaults to ~/.config. + +=back + +=head1 SEE ALSO + +git-nuke-forge-fork(1), git-clean-forge-repo(1) + +=cut + +use App::git::clean_forge_fork; +exit App::git::clean_forge_fork->main; diff --git a/bin/git-clean-forge-repo b/bin/git-clean-forge-repo new file mode 100755 index 0000000..57afb14 --- /dev/null +++ b/bin/git-clean-forge-repo @@ -0,0 +1,74 @@ +#!/usr/bin/perl +# PODNAME: git-clean-forge-repo +# ABSTRACT: create repos on git forges with optional features disabled +# +# Copyright (C) 2017, 2020 Sean Whitton +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +=head1 SYNOPSIS + +B [B<--remote=>I] + +=head1 DESCRIPTION + +Creates repos on git forges like GitHub and GitLab, and disables all +optional features of those forges. Useful for when you want to use +the forge only as an ordinary git host, and nothing more. + +=head1 OPTIONS + +=over 4 + +=item B<--remote=>I + +Specify the name of the git remote you will use to push changes to the +repository created by this script. You should already have created +this git remote; see "EXAMPLE" below. Defaults to "origin". + +=back + +=head1 EXAMPLE + +=over 4 + + % git init + % # work on new project + % git remote add origin https://salsa.debian.org/spwhitton/foo + % git clean-forge-repo + % git push -u origin master + +=back + +=head1 FILES + +=over 4 + +=item $XDG_CONFIG_HOME/.config/gitforge/access_tokens/I + +Where I is the domain name of the git forge +(e.g. "github.com", "salsa.debian.org"), this file should contain an +API access token to log in to your account at the git forge. If +unset, $XDG_CONFIG_HOME defaults to ~/.config. + +=back + +=head1 SEE ALSO + +git-clean-forge-fork(1) + +=cut + +use App::git::clean_forge_repo; +exit App::git::clean_forge_repo->main; diff --git a/bin/git-nuke-forge-fork b/bin/git-nuke-forge-fork new file mode 100755 index 0000000..7690a87 --- /dev/null +++ b/bin/git-nuke-forge-fork @@ -0,0 +1,61 @@ +#!/usr/bin/perl +# PODNAME: git-nuke-forge-fork +# ABSTRACT: delete forks created by git-clean-forge-fork(1) +# +# Copyright (C) 2020 Sean Whitton +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +=head1 SYNOPSIS + +B [B<--upstream=>I] + +=head1 DESCRIPTION + +Deletes forks created by git-clean-forge-fork(1). Useful to clean up +your git forge profile after your proposed changes have been included +upstream. + +=head1 OPTIONS + +=over 4 + +=item B<--upstream=>I + +Specify the name of the upstream git remote, i.e., what you previously +forked. Defaults to "origin". + +=back + +=head1 FILES + +=over 4 + +=item $XDG_CONFIG_HOME/.config/gitforge/access_tokens/I + +Where I is the domain name of the git forge +(e.g. "github.com", "salsa.debian.org"), this file should contain an +API access token to log in to your account at the git forge. If +unset, $XDG_CONFIG_HOME defaults to ~/.config. + +=back + +=head1 SEE ALSO + +git-clean-forge-fork(1) + +=cut + +use App::git::nuke_forge_fork; +exit App::git::nuke_forge_fork->main; -- cgit v1.2.3