Questo articolo richiede la lettura del suo predecessore, lo trovi qui: Mozilla Italia: migrazione di r2z, Dict e nuovo PYr2z.
Tolta di mezzo questa incombenza, ecco che puoi scoprire le novità che girano a oggi sotto il cofano della versione 2 di PYr2z e le stupide vicissitudini che ho passato per un banale errore di distrazione che mi ha impedito di vedere con chiarezza un dettaglio che mi avrebbe fatto risparmiare del tempo. Poco male, risultato comunque raggiunto e articolo ad-hoc per riepilogare le attività e i prossimi passi.
r2z: Public Archive
Ho definitivamente “spento” il vecchio repository di Release2Zip (per gli amici r2z). Ormai non aveva più senso alcuno continuare a mantenerlo aperto perché non riceve aggiornamenti da una vita e con l’arrivo di PYr2z questa cosa è andata assodandosi maggiormente. Ciò che rimane è il sito web mozillaitalia.github.io/r2z e chiaramente il repository ospitato all’interno dello spazio GitHub di Mozilla Italia, impostato in sola lettura come Public Archive: github.com/MozillaItalia/r2z.
È stato un bel progetto scritto insieme a Sandro, ci ha aiutato tantissimo in passato (soprattutto quando gestivamo manualmente i pacchetti portable da inserire nei download di Mozilla Italia) ed è tornato comodo anche ad altri, per questo sono contento di quanto fatto.
PYr2z: la v2, le release, la pulizia
Cambia il meccanismo, non la sostanza.
PYr2z è stato scritto per creare archivi 7z che contengono Mozilla Firefox e Mozilla Thunderbird privi del loro file di setup, così che chiunque possa utilizzarli sul proprio PC Windows anche senza diritti amministrativi, anche senza andare a “sporcare” più del dovuto l’AppData (perché Firefox – così come funziona per Chrome – può essere installato in ambiente utente con diritti non elevati).
Ciò che avrai forse notato è che ho tolto di mezzo tutti i vecchi archivi che prima occupavano lo stesso posto degli script all’interno del repository, iniziando a “scrivere” uno storico di rilasci direttamente accessibili dall’area release del progetto: github.com/MozillaItalia/pyr2z/releases.
È tutta questione di comportamento delle Actions di GitHub, il resto è rimasto più o meno identico.
Ora – prendendo a esempio l’azione di rilascio di Firefox stabile a 64 bit per Windows – questo è l’unico passaggio realmente nuovo:
- name: Release if: env.DIFF != 'None' uses: xresloader/upload-to-github-release@v1.3.11 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: file: "${{ env.FXZIPFILE }}" draft: false tag_name: 'fx-win64'
Questo permetterà di andare ad aggiungere il pacchetto portable di Firefox nel tag di rilascio fx-win64, questo: github.com/MozillaItalia/pyr2z/releases/tag/fx-win64.
Chiaramente ho già provveduto a modificare i puntamenti all’interno del sito web di Mozilla Italia affinché raggiungano il nuovo indirizzo e non più il vecchio che passava tramite il file HTML di caricamento dell’ultima release.
Ho potuto perciò lanciare una pulizia del repository per andare a spazzare via tutte le vecchie tracce dei file d’archivio precedentemente pubblicati. L’idea era quella di offrire anche un repository “come nuovo“, partendo dalla versione 2 del codice.
Per farlo ho “ucciso” tutta la cronistoria del repository GitHub:
git checkout --orphan latest_branch git add -A git commit -am "Pulizia" git branch -D main git branch -m main rm -Rf .git/refs/original rm -Rf .git/logs/ git gc --aggressive --prune=now git prune --expire now git push --force
Ma questo non basta perché su GitHub rimangono in conservazione i vecchi file affinché si possano sempre e comunque recuperare in caso di necessità. Vengono semplicemente compattati e conservati all’interno di archivi .pack
che trovano spazio nella cartella .git/objects/pack
(nella cartella del repository su server e in locale quando ne tieni una copia):
Questo comporta che – per qualsiasi nuovo fork del progetto – si vada a effettuare download dai server Microsoft (GitHub) circa 10 GB di dati, cosa tutt’altro che comoda. Per questo motivo, su suggerimento di Daniele, ho scaricato e utilizzato BFG Repo-Cleaner che permette di intervenire in maniera semplice e veloce sullo storico repository e sui file pack, permettendone una profonda pulizia (e sostituendosi così al comando di git-filter-branch
).
Seguendo la documentazione ufficiale del prodotto ho semplicemente pensato di lanciare la pulizia di tutti i file che superavano i 10MB di spazio disco (all’inizio ho filtrato per 50MB, poi sono sceso e ho fatto ulteriore pulizia). L’operazione è stata lanciata direttamente dall’interno della cartella del repository (via Terminale su macOS, ma la stessa cosa la ottieni su Windows o Linux):
git clone --mirror https://github.com/MozillaItalia/pyr2z.git java -jar bfg.jar --strip-blobs-bigger-than 10M git reflog expire --expire=now --all && git gc --prune=now --aggressive && git push --force
Al termine tutto il repository è arrivato a occupare circa 600 Kb su disco, per la mia (e – forse – di qualcun altro) felicità.
Extra: il download in locale
Paragrafo extra dedicato a un nuovo arrivo. La cartella “local” del progetto ospiterà eventuali script a uso locale, quindi pensati e scritti per vivere e funzionare sul tuo PC.
Il primo a fare la sua comparsa ha colmato una lacuna personale: scaricare e tenere aggiornata la cartella portable del mio Thunderbird Daily. Lo script r2ztb-nightly-win64.py richiede che ci sia installato sul PC Python (puoi usare quello presente sul Microsoft Store se vuoi percorrere la strada comoda) e che tu vada a modificare la variabile destfolder
che si trova a riga 8 dello stesso. Ricorda che su Windows – contrariamente al suo standard – le cartelle in Python vanno dichiarate con backslash (quindi \
) e non con lo slash classico (/
).
Dovrai inoltre installare alcune librerie necessarie (ammesso non siano già presenti sul sistema):
import hashlib import json import os import shutil import subprocess import urllib.request
Una volta fatta questa piccola modifica e installate le librerie necessarie potrai lanciare lo script e attendere che questo vada a popolare la cartella da te specificata con tutto il necessario per far funzionare un Thunderbird Daily (quindi la versione più instabile) per Windows a 64 bit.
Questo è quanto. Grazie per aver letto fino a qui, se hai dubbi in merito a questo articolo o alle modifiche apportate al repository sentiti libero di chiedere lumi nell’area commenti. Seguiranno certamente ulteriori modifiche al codice (sto pensando già ad alcuni miglioramenti per identificare più univocamente le release), ma quel giorno non è oggi 🍻
#StaySafe
Ringraziamenti:
github.com/18F/C2/issues/439
rtyley.github.io/bfg-repo-cleaner
github.com/rtyley/bfg-repo-cleaner/issues/278
stackoverflow.com/questions/38509127/how-do-i-get-rid-of-a-big-pack-file-in-my-git-repo
junyonglee.me/github/How-to-clean-up-git-repository
stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-commit-history-in-the-git-repository
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)