Compare commits
No commits in common. "master" and "1.0.0" have entirely different histories.
@ -1,40 +0,0 @@
|
|||||||
name: git-sync-with-mirror
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
git-sync:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: git-sync
|
|
||||||
env:
|
|
||||||
git_sync_source_repo: git@git.fridu.us:heckyel/git-snapsign.git
|
|
||||||
git_sync_destination_repo: ssh://git@c.fridu.us/software/git-snapsign.git
|
|
||||||
if: env.git_sync_source_repo && env.git_sync_destination_repo
|
|
||||||
uses: astounds/git-sync@v1
|
|
||||||
with:
|
|
||||||
source_repo: git@git.fridu.us:heckyel/git-snapsign.git
|
|
||||||
source_branch: "master"
|
|
||||||
destination_repo: ssh://git@c.fridu.us/software/git-snapsign.git
|
|
||||||
destination_branch: "master"
|
|
||||||
source_ssh_private_key: ${{ secrets.GIT_SYNC_SOURCE_SSH_PRIVATE_KEY }}
|
|
||||||
destination_ssh_private_key: ${{ secrets.GIT_SYNC_DESTINATION_SSH_PRIVATE_KEY }}
|
|
||||||
|
|
||||||
- name: git-sync-sourcehut
|
|
||||||
env:
|
|
||||||
git_sync_source_repo: git@git.fridu.us:heckyel/git-snapsign.git
|
|
||||||
git_sync_destination_repo: git@git.sr.ht:~heckyel/git-snapsign
|
|
||||||
if: env.git_sync_source_repo && env.git_sync_destination_repo
|
|
||||||
uses: astounds/git-sync@v1
|
|
||||||
with:
|
|
||||||
source_repo: git@git.fridu.us:heckyel/git-snapsign.git
|
|
||||||
source_branch: "master"
|
|
||||||
destination_repo: git@git.sr.ht:~heckyel/git-snapsign
|
|
||||||
destination_branch: "master"
|
|
||||||
source_ssh_private_key: ${{ secrets.GIT_SYNC_SOURCE_SSH_PRIVATE_KEY }}
|
|
||||||
destination_ssh_private_key: ${{ secrets.GIT_SYNC_DESTINATION_SSH_PRIVATE_KEY }}
|
|
||||||
continue-on-error: true
|
|
2
Makefile
2
Makefile
@ -47,7 +47,7 @@ install: info
|
|||||||
|
|
||||||
info:
|
info:
|
||||||
@cd docs && makeinfo git-snapsign.texi
|
@cd docs && makeinfo git-snapsign.texi
|
||||||
@cd docs && makeinfo --html --output=$(PROJECT_NAME) git-snapsign.texi
|
@cd docs && makeinfo --html git-snapsign.texi
|
||||||
|
|
||||||
tar.gz:
|
tar.gz:
|
||||||
@tar -czf $(PROJECT_NAME)-$(VERSION).tar.gz --transform "s|^|$(PROJECT_NAME)-$(VERSION)/|" --owner 0 --group 0 \
|
@tar -czf $(PROJECT_NAME)-$(VERSION).tar.gz --transform "s|^|$(PROJECT_NAME)-$(VERSION)/|" --owner 0 --group 0 \
|
||||||
|
26
README.md
26
README.md
@ -4,9 +4,7 @@ A small git-integrated script to sign a repository archive tarball for use with
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```console
|
git-snapsign [--dry-run] [--force] [-s <key-id>] [-F <fmt>] [-p <pfx>] -t <tag>
|
||||||
$ git-snapsign [--dry-run] [--force] [-s <key-id>] [-F <fmt>] [-p <pfx>] -t <tag>
|
|
||||||
```
|
|
||||||
|
|
||||||
`git-snapsign` will create a detached signature for archive output from
|
`git-snapsign` will create a detached signature for archive output from
|
||||||
`git-archive(1)` for `<tag>` and add it to the tag's notes in the
|
`git-archive(1)` for `<tag>` and add it to the tag's notes in the
|
||||||
@ -51,32 +49,18 @@ the snapshots it offers on the repository's summary page.
|
|||||||
|
|
||||||
Create a signature for the archive tarball at tag v1.0.0.
|
Create a signature for the archive tarball at tag v1.0.0.
|
||||||
|
|
||||||
```console
|
git-snapsign -t v1.0.0
|
||||||
$ git-snapsign -t v1.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Same as above but use the zip format.
|
Same as above but use the zip format.
|
||||||
|
|
||||||
```console
|
git-snapsign -F zip -t v1.0.0
|
||||||
$ git-snapsign -F zip -t v1.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Create a signature with the key corresponding to heckyel@hyperbola.info
|
Create a signature with the key corresponding to heckyel@hyperbola.info
|
||||||
|
|
||||||
```console
|
git-snapsign -s 4DF21B6A7C1021B25C360914F6EE7BC59A315766 -t v1.0.0
|
||||||
$ git-snapsign -s 4DF21B6A7C1021B25C360914F6EE7BC59A315766 -t v1.0.0
|
|
||||||
```
|
|
||||||
|
|
||||||
Use "linux-libre-lts" to create the archive prefix. Useful for when the repository
|
Use "linux-libre-lts" to create the archive prefix. Useful for when the repository
|
||||||
basename is not the canonical name of the project. For example, the
|
basename is not the canonical name of the project. For example, the
|
||||||
linux-libre-lts project may wish to set the prefix this way.
|
linux-libre-lts project may wish to set the prefix this way.
|
||||||
|
|
||||||
```console
|
git-snapsign -p linux-libre-lts -t v5.4.96
|
||||||
$ git-snapsign -p linux-libre-lts -t v5.4.96
|
|
||||||
```
|
|
||||||
|
|
||||||
## GPG Public Key
|
|
||||||
|
|
||||||
```console
|
|
||||||
72CFB264DFC43F63E098F926E607CE7149F4D71C
|
|
||||||
```
|
|
||||||
|
38
git-snapsign
Normal file → Executable file
38
git-snapsign
Normal file → Executable file
@ -15,7 +15,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
VERSION='1.0.2'
|
VERSION='1.0.0'
|
||||||
|
|
||||||
HELP_MESSAGE="\
|
HELP_MESSAGE="\
|
||||||
usage: $(basename "$0") [--dry-run] [--force] [-s <key-id>] [-F <fmt>] [-p <pfx>] -t <tag>
|
usage: $(basename "$0") [--dry-run] [--force] [-s <key-id>] [-F <fmt>] [-p <pfx>] -t <tag>
|
||||||
@ -90,17 +90,6 @@ check_format() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_notes() {
|
|
||||||
mapfile -d '\0' signatures < <(find .git/refs/notes -type f 2>/dev/null)
|
|
||||||
if [[ $(echo ${#signatures[@]}) != 0 ]]; then
|
|
||||||
git fetch >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
git config --add remote.origin.fetch "+refs/notes/*:refs/notes/*" >/dev/null 2>&1
|
|
||||||
git fetch origin refs/notes/*:refs/notes/* >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
unset signatures
|
|
||||||
}
|
|
||||||
|
|
||||||
#---------
|
#---------
|
||||||
# core
|
# core
|
||||||
#---------
|
#---------
|
||||||
@ -146,7 +135,6 @@ while getopts ":dfPhvF:s:p:t:" opt; do
|
|||||||
keyid="$OPTARG"
|
keyid="$OPTARG"
|
||||||
;;
|
;;
|
||||||
t)
|
t)
|
||||||
check_notes "$@"
|
|
||||||
if ! git rev-parse --verify "${OPTARG}" >/dev/null 2>&1; then
|
if ! git rev-parse --verify "${OPTARG}" >/dev/null 2>&1; then
|
||||||
echo -e "fatal: failed to verify tag: ${OPTARG}"
|
echo -e "fatal: failed to verify tag: ${OPTARG}"
|
||||||
exit 1
|
exit 1
|
||||||
@ -174,20 +162,16 @@ trap 'rm -rf "${tmpdir}"' EXIT HUP INT QUIT TERM
|
|||||||
if [[ -n "${tag}" ]]; then
|
if [[ -n "${tag}" ]]; then
|
||||||
archive="${tmpdir}/${prefix}-${tag#v}.${format}"
|
archive="${tmpdir}/${prefix}-${tag#v}.${format}"
|
||||||
|
|
||||||
case "${format}" in
|
if [ "$format" == "tar.lz" ]; then
|
||||||
tar.lz)
|
git archive --format=tar --prefix "${prefix}-${tag#v}/" \
|
||||||
git archive --format=tar --prefix "${prefix}-${tag#v}/" \
|
"${tag}" | lzip -c > "${archive}"
|
||||||
"${tag}" | lzip -c > "${archive}"
|
elif [ "$format" == "tar.xz" ]; then
|
||||||
;;
|
git archive --format=tar --prefix "${prefix}-${tag#v}/" \
|
||||||
tar.xz)
|
"${tag}" | xz -c > "${archive}"
|
||||||
git archive --format=tar --prefix "${prefix}-${tag#v}/" \
|
else
|
||||||
"${tag}" | xz -c > "${archive}"
|
git archive --format "${format}" --prefix "${prefix}-${tag#v}/" \
|
||||||
;;
|
--output "${archive}" "${tag}"
|
||||||
*)
|
fi
|
||||||
git archive --format "${format}" --prefix "${prefix}-${tag#v}/" \
|
|
||||||
--output "${archive}" "${tag}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if ! "${gpg:-gpg}" --output "${archive}.asc" --armor \
|
if ! "${gpg:-gpg}" --output "${archive}.asc" --armor \
|
||||||
--sign-with "${keyid}" --detach-sign <"${archive}"
|
--sign-with "${keyid}" --detach-sign <"${archive}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user