Repository bloated (~100MB+ clone) by committed Rust native build artifacts
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 30/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- git, rust
- Ambito
- build-system, devops, mobile-dev
Direzione di ricerca
Inizia dai percorsi tracciati ios/tc_helper.xcframework/, android/app/src/main/jniLibs/ e android/main/app/src/main/jniLibs/, quindi leggi rust/README.md, rust/build_android.sh e rust/build_ios.sh. Controlla il lavoro di pulizia in sospeso prima di modificare qualsiasi cosa. Il lavoro è completato quando i binari generati non sono più tracciati né rigenerati accidentalmente e il maintainer ha esaminato separatamente la riscrittura della cronologia di git-filter-repo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
A fresh clone of this repository is 100MB+, and .git alone is ~129MB. The
bloat comes almost entirely from compiled native libraries that are checked
into git. These are build outputs of the rust/ crate (tc_helper) and are
fully regenerable, so they should never have been committed.
Where the size comes from
Largest blobs across history (git rev-list --objects --all | git cat-file --batch-check):
| Blob | Approx size (per copy) | Copies in history |
|---|---|---|
ios/tc_helper.xcframework/.../ios-arm64_x86_64-simulator/.../tc_helper |
~48 MB | 3 |
android/app/src/main/jniLibs/arm64-v8a/libtc_helper.so |
~29–30 MB | 3 |
ios/tc_helper.xcframework/ios-arm64/.../tc_helper |
~23 MB | 3 |
android/app/src/main/jniLibs/armeabi-v7a/libtc_helper.so |
~21 MB | 2 |
android/main/app/src/main/jniLibs/arm64-v8a/libtc_helper.so (stray path) |
~9 MB | 1 |
android/app/src/main/jniLibs/**/libcrc_fast-*.so |
small | a few |
All of these are produced by building the rust/ crate (cargo ndk for
Android, an xcframework build for iOS). They are not source.
Proposed fix (two parts)
Part 1 — stop tracking them going forward (PR, mergeable now)
A PR is on the way that:
- removes the tracked binaries from the working tree,
- git-ignores
android/app/src/main/jniLibs/andios/tc_helper.xcframework/, - documents and scripts how to regenerate them (
rust/build_android.sh,
rust/build_ios.sh, plus updatedrust/README.md).
This stops future bloat but does not shrink existing clone size on its
own, because the old blobs still live in history.
Part 2 — reclaim existing history (maintainer action, force-push)
To actually shrink the repo, the historical blobs must be stripped, which
rewrites every commit SHA and requires a force-push to main. This cannot
be done via a normal PR — only a maintainer can do it. Recommended procedure
using git-filter-repo:
# Work on a fresh mirror clone so nothing local is at risk.
git clone --mirror https://github.com/CCExtractor/taskwarrior-flutter.git
cd taskwarrior-flutter.git
# Strip the build-artifact paths from ALL history.
git filter-repo \
--invert-paths \
--path ios/tc_helper.xcframework \
--path android/app/src/main/jniLibs \
--path android/main/app/src/main/jniLibs
# Inspect the result (repo size, history) before pushing.
git count-objects -vH
# Publish the rewritten history (overwrites all refs on the remote).
git push --force --mirror
A size-based alternative that catches any other stray binaries:
git filter-repo --strip-blobs-bigger-than 5M (verify it doesn't drop
legitimate assets such as fonts or app icons first).
Caveats for Part 2 — please read before running:
- Every commit SHA changes. All open PRs must be rebased/recreated, and every
fork diverges and must re-sync (or re-fork). - Best done right after the Part 1 PR is merged, and ideally announced to
contributors in advance. - GitHub keeps old objects reachable for a while; you may want to ask GitHub
Support to rungcafterward to fully reclaim space on the remote.
Happy to adjust the PR or the rewrite paths as needed.
- Lingua principale
- Dart
- Stelle
- 244
- Fork
- 179
- Merge medio
- 20m
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CCExtractor/taskwarrior-flutter
-
Fix misaligned text "Select the directory" in settings tileForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CCExtractor/taskwarrior-flutter#639 · 2 commenti ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Drawer should close automatically when navigating to a new screenForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Replica add-task silently drops due and wait dates (DateTime.toString is not RFC3339)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
CCExtractor/taskwarrior-flutter#662 · 3 commenti ·
-
bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 45/100
CCExtractor/taskwarrior-flutter#645 · 1 commento ·
Tutte le issue di CCExtractor/taskwarrior-flutter
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
bggRGjQaUbCoE/PiliPlus#3200 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
DarkFlippers/qUnleashed#240 ·
I maintainer di solito rispondono entro 1 giorno
-
feat: Order macOS versionsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
quickemu-project/quickgui#328 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
ApplETS/Notre-Dame#1393 ·
-
(fix) Wrong dateAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Solvro/mobile-topwr#1239 ·