在 AS_Only 里改、而不是直接在主仓 里改,主要好处有这些:
1. Android Studio 不会卡死
主仓 AS_Only
体量
几百 G,文件极多
只有 FactoryTest,几 MB~几十 MB
AS 索引
极慢,Windows+Samba 更慢
秒开,Diff/Merge 流畅
Git 扫描
变更检测、log 都慢
只关心 FactoryTest
主仓适合 SSH 编译;AS 专用工作区适合 可视化改代码、合并。
2. 不容易误提交无关东西
主仓里常有:
apk/、merged/ 等未跟踪目录
编译产物、临时脚本
同事改过的其它模块
在主仓改容易 git add 错文件、或 Commit 列表里混进一堆无关项(你之前就遇到过)。
AS_Only 里物理上只有 FactoryTest,Commit 列表干净,只看到自己改的。
3. 和编译主流程隔离
主仓 :完整源码,lunch、make、刷机
AS_Only:Git 工作副本,专门给 AS
在 AS 工作区改坏了、merge 乱了,可以 git reset --hard 重来,不影响主仓正在编译的状态。
你之前在主仓 staged 两个 strings.xml,直接 pull --rebase 都拉不了——这就是在主仓乱改的典型代价。
4. 职责清晰,和同事协作更清楚
同事 / CI / Gerrit → 完整仓库
你(AS 改 FactoryTest)→ AS_Only → commit → push
编译验证 → 回到 主仓 pull 最新
改完在 AS_Only commit
需要编 ROM 时,在 主仓 pull 同步
不会把 AS 的 .idea/、Samba 换行符改动带进主仓
5. Samba 副作用更小
Windows 通过 Samba 访问时,容易出现:
换行符 CRLF/LF 变化 → 根目录 BUILD、item*.sh 假修改
文件权限变化 → Git 认为 modified
稀疏工作区根本看不到这些文件,就不会误提交、也不会拦 pull。
6. 心理和操作成本更低
在主仓:每次 Commit 都要核对「这 16 个文件是不是只要 FactoryTest」。
在 AS_Only:改了什么,列表里就是什么,只勾 strings.xml 即可。
什么时候必须在主仓改?
要改 FactoryTest 以外 的模块(Framework、驱动等)
改完要 立刻全编,不想多一步 sync
不用 AS,纯 SSH + vim
只动 FactoryTest、且用 AS → AS_Only 更合适。
一句话
主仓 = 完整系统 + 编译;AS 工作区 = 轻量 Git 视图 + 只改 FactoryTest。
分开后:AS 快、Commit 干净、pull 不容易被无关改动卡住,主仓保持稳定可编。