Repository bloated (~100MB+ clone) by committed Rust native build artifacts
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 30/100
- Issue 类型
- 重构
- 描述清晰度
- 描述清楚
- 活跃度
- 冷清
- 技术栈
- git, rust
- 领域
- build-system, devops, mobile-dev
调研方向
从已跟踪的路径 ios/tc_helper.xcframework/、android/app/src/main/jniLibs/ 和 android/main/app/src/main/jniLibs/ 开始,然后阅读 rust/README.md、rust/build_android.sh 和 rust/build_ios.sh。在进行任何更改之前,检查待处理的清理工作。完成的标志是生成的二进制文件不再被跟踪或被意外重新生成,并且维护者已单独审查 git-filter-repo 的历史重写。
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Dart
- 星标
- 244
- 派生
- 180
- 平均合并
- 16 小时 19 分钟
- 30 天内合并 PR
- 4
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
CCExtractor/taskwarrior-flutter 的其他 Issue
-
Fix misaligned text "Select the directory" in settings tile可能重新可做 @alabeddev 于 199 天前认领,目前没有进行中的 PR。 未关闭bug
难度 2/5 1-3 小时 新手友好度 68/100
CCExtractor/taskwarrior-flutter#639 · 2 条评论 ·
-
bug
难度 1/5 1 小时以内 新手友好度 85/100
-
Drawer should close automatically when navigating to a new screen可能重新可做 关联的 PR 已关闭且未合并。 未关闭bug
难度 2/5 1-3 小时 新手友好度 68/100
-
Sensitive Credentials Stored in Plain Text Files Without Encryption可能重新可做 @sahu-virendra-1908 于 196 天前认领,目前没有进行中的 PR。 未关闭bug
难度 5/5 一周以上 新手友好度 45/100
CCExtractor/taskwarrior-flutter#645 · 1 条评论 ·
-
Data Inconsistency When Editing Task (Missing Transaction)可能重新可做 @aryanorastar 于 57 天前认领,目前没有进行中的 PR。 未关闭bug
难度 4/5 3-5 天 新手友好度 52/100
CCExtractor/taskwarrior-flutter#643 · 1 条评论 ·
查看 CCExtractor/taskwarrior-flutter 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
lugassawan/swe-workbench#799 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
epam/dmtools-dart#385 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
commetchat/commet#1085 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
first-timers-only good first issue
难度 2/5 1-3 小时 新手友好度 88/100
Raza-learner/Runmote#11 ·