Git-LFS repository for external tarballs and sources served at https://dev-www.libreoffice.org/{extern,src}/. You probably want to check it out with only the metadata: GIT_LFS_SKIP_SMUDGE=1 git clone https://git.libreoffice.org/extern.git See https://git.libreoffice.org/extern#introduction for more details

Clone this repo:

Branches

  1. e51b38d Add sqlite-amalgamation-3500400.zip by Xisco Fauli · 25 hours ago master
  2. 5e24c3b Add ReemKufi-2.0.zip by Xisco Fauli · 30 hours ago
  3. 09ac85d Add libxml2-2.15.1.tar.xz by Xisco Fauli · 6 days ago
  4. 2a29566 Add nss-3.117-with-nspr-4.37.tar.gz by Xisco Fauli · 7 days ago
  5. 20cc393 Add Python-3.11.14.tar.xz by Xisco Fauli · 7 days ago

Introduction

This repository uses Git's Large File Storage extension for external sources and tarballs. All files in the extern and src directories, whether stored in Git itself or in the LFS storage, are publicly exposed at https://dev-www.libreoffice.org.

Uploading new files is done via gerrit, but the local clone needs to be made LFS-aware first.

Set up a local clone

Install the git-lfs package.

  • On Debian and derivatives: sudo apt install git-lfs
  • On RedHat and derivatives: sudo yum install git-lfs

Clone the repository.

Be sure to use to run git clone with GIT_LFS_SKIP_SMUDGE=1 in the environment, otherwise the command will happily download all Git LFS objects (over a dozen GiB).

$ GIT_LFS_SKIP_SMUDGE=1 git clone https://git.libreoffice.org/extern.git
Cloning into 'extern'...
remote: Counting objects: 8, done
remote: Finding sources: 100% (8/8)
remote: Total 2141 (delta 2), reused 2139 (delta 2)
Receiving objects: 100% (2141/2141), 495.75 KiB | 2.93 MiB/s, done.
Resolving deltas: 100% (190/190), done.

Setup Git LFS for the repository.

The --skip-smudge flag avoids automatically downloading new Git LFS objects on pull.

$ cd extern
$ git lfs install --local --skip-smudge
Updated Git hooks.
Git LFS initialized.
$ git config lfs.https://gerrit.libreoffice.org/extern.git/info/lfs.locksverify true

Setup an SSH push URL.

$ git config remote.origin.pushurl ssh://[email protected]:29418/extern.git

Setup gerrit's commit-msg hook.

$ curl -Lo .git/hooks/commit-msg https://gerrit.libreoffice.org/tools/hooks/commit-msg
$ chmod +x .git/hooks/commit-msg

Download assets from the LFS storage

To download a specific asset, in this case src/tdf-branding.tgz:

$ git lfs pull --include=src/tdf-branding.tgz

Upload a new asset to the LFS storage

Track new file extensions.

Common file extensions should already be set up for LFS: git add should automatically turn large files into LFS pointers rather than native Git objects. These extensions are defined in the .gitattributes file at the root of the repository.

Should the list be incomplete, use git lfs track "*.MY_NEW_EXTENSION" to track a new file extension.

Upload a new asset, the gerrit way.

$ git add src/my-new-file.tar.gz
$ git commit -m "Add my-new-file.tar.gz."
[master f244028] Add my-new-file.tar.gz.
 Date: Thu Apr 25 03:12:12 2024 +0200
 1 file changed, 3 insertions(+)
 create mode 100644 src/my-new-file.tar.gz
$ git push origin HEAD:refs/for/master
Uploading LFS objects: 100% (1/1), 4.2 MB | 0 B/s, done.
[…]
remote: SUCCESS
remote:
remote:   https://gerrit.libreoffice.org/c/extern/+/123456 Add my-new-file.tar.gz. [NEW]
remote:
To ssh://gerrit.libreoffice.org:29418/extern.git
 * [new reference]   HEAD -> refs/for/master

The new file will then shortly be available at https://dev-www.libreoffice.org/src/my-new-file.tar.gz once the changeset is submitted by a committer.