Bruno Haible via Gnulib discussion list <bug-gnulib@gnu.org> writes: >> 1) Add a section to the gnulib manual describing what gnulib publish at >> ftp.gnu.org and that it is a Git bundle for archival purposes.
I've pushed the patch below to start this, what do you all think? >> 2) Upload a README to ftp.gnu.org/gnu/gnulib/ with a URL to that gnulib >> manual section. I suppose that to get a working URL, the gnulib manual on www.gnu.org needs to be refreshed -- is doc/README accurate? I can try those steps to see if they work for me. >> 3) Prepare and upload the PGP-signed Git bundle. There probably need to >> be a small shell script to do this. You wouldn't want to run this in >> your development gnulib git repository; I think git bundle may contain >> old forgotten 'git commit -a --amend' objects. I suggest something like >> this: > > Sure. Go ahead. If someone add me as administrator of the 'gnulib' project on Savannah, I can make the upload. /Simon
From 621614010a298724d561157feaff482726c31c22 Mon Sep 17 00:00:00 2001 From: Simon Josefsson <si...@josefsson.org> Date: Mon, 3 Mar 2025 21:08:01 +0100 Subject: [PATCH] doc: Document upcoming Gnulib Git Bundle. * doc/gnulib.texi (Miscellaneous Notes): Add sub-section "Gnulib Git Bundle". * doc/gnulib-git-bundle.texi: New file. --- ChangeLog | 6 ++++ doc/gnulib-git-bundle.texi | 61 ++++++++++++++++++++++++++++++++++++++ doc/gnulib.texi | 3 ++ 3 files changed, 70 insertions(+) create mode 100644 doc/gnulib-git-bundle.texi diff --git a/ChangeLog b/ChangeLog index d8730f5028..9b19d95cf7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2025-03-03 Simon Josefsson <si...@josefsson.org> + + doc: Document upcoming Gnulib Git Bundle. + * doc/gnulib.texi (Miscellaneous Notes): Add sub-section "Gnulib Git Bundle". + * doc/gnulib-git-bundle.texi: New file. + 2025-03-03 Bruno Haible <br...@clisp.org> vasprintf-posix, vasprintf-gnu: Fix module description. diff --git a/doc/gnulib-git-bundle.texi b/doc/gnulib-git-bundle.texi new file mode 100644 index 0000000000..70519deb42 --- /dev/null +++ b/doc/gnulib-git-bundle.texi @@ -0,0 +1,61 @@ +@node Gnulib Git Bundle +@section Gnulib Git Bundle + +To provide a serialized archival copy of the Gnulib Git repository we +publish Git Bundles (@url{https://git-scm.com/docs/git-bundle}) of +Gnulib at @url{ftp://ftp.gnu.org/gnu/gnulib/}. These may be useful if +Savannah happens to be offline or if you want to have a GnuPG signed +confirmation of the Gnulib content. + +The files are named like @code{gnulib-YYYYMMDD.bundle}, for example +@code{gnulib-20250303.bundle}, where @code{YYYYMMDD} corresponds to +the Git commit date (in UTC0) of the last commit on the @code{master} +branch in the bundle. + +Next to the Git Bundle is a PGP signature on the file, named +@code{gnulib-YYYYMMDD.bundle.sig}, which can be verified using GnuPG +as usual: + +@example +gpg --verify gnulib-20250303.bundle.sig +@end example + +Or using the simpler @code{gpgv} tool like this: + +@example +gpgv gnulib-20250303.bundle.sig gnulib-20250303.bundle +@end example + +After downloading the Git bundle you may use it to create a local +gnulib clone using normal Git commands: + +@example +git clone /path/to/your/gnulib-20250303.bundle gnulib +cd gnulib +@end example + +We desire that the Gnulib Git bundle is bit-by-bit reproducible, +however we do not know how to achieve this. Currently gnulib +maintainers may invoke the following commands to prepare and upload a +Gnulib git bundle. We appreciate ideas on how to improve these set of +commands (or the upstream Git tool) so that the bundle may be +bit-by-bit reproducible by anyone. + +@example +cd $(mktemp -d) +REV=2520437549b14f3785b4b3c32a0a3fc792d4a9c0 # master branch commit to package +git clone https://git.savannah.gnu.org/git/gnulib.git +cd gnulib +git fsck # attempt to validate input +# inspect that the new tree matches a trusted copy +git checkout -B master $REV # put $REV at master +for b in $(git branch -r | grep origin/stable- | sort --version-sort); do git checkout $@{b#origin/@}; done +git remote remove origin # drop some unrelated branches +git gc --prune=now # drop any commits after $REV +git -c 'pack.threads=1' bundle create gnulib.bundle --all +V=$(env TZ=UTC0 git show -s --date=format:%Y%m%d --pretty=%cd master) +mv gnulib.bundle gnulib-$V.bundle +gpg --detach-sign --armor gnulib-$V.bundle +gpg --verify gnulib-$V.bundle +build-aux/gnupload --to ftp.gnu.org:gnulib gnulib-$V.bundle +@end example diff --git a/doc/gnulib.texi b/doc/gnulib.texi index 31a206f8fb..3ffd5b88c2 100644 --- a/doc/gnulib.texi +++ b/doc/gnulib.texi @@ -900,6 +900,7 @@ better to share them. * A C++ namespace for gnulib:: A different way of using Gnulib in C++ * License Texinfo sources:: * Building gnulib:: +* Gnulib Git Bundle:: @end menu @include out-of-memory.texi @@ -916,6 +917,8 @@ better to share them. @include build-automation.texi +@include gnulib-git-bundle.texi + @node POSIX Substitutes Library @chapter Building the ISO C and POSIX Substitutes -- 2.48.1
signature.asc
Description: PGP signature