Android Studio项目中Mercurial未忽略src文件夹却不显示的问题咨询
这种情况确实挺让人困惑的——明明没在项目的.hgignore里配置规则,app/src却被Mercurial无视,重个名字就正常显示了。我之前碰到过类似的场景,给你几个具体的排查方向:
检查全局忽略配置:Mercurial不止会读项目根目录的
.hgignore,还有全局的忽略文件(通常在用户目录下的.hgrc或Mercurial.ini里)。你可以在终端运行hg config --show paths.hgrc找到全局配置文件的位置,打开后看看有没有匹配src的规则,比如glob:**/src或者正则表达式写的忽略规则。确认文件夹是否被Mercurial标记为忽略(无文件记录):有时候可能误操作执行了
hg forget或者其他命令,把app/src标记成了忽略状态,但没写到.hgignore里。你可以在项目根目录执行hg status --ignored,看看输出里有没有app/src的身影。如果有的话,直接运行hg add app/src强制把它加入仓库,之后提交应该就能正常识别了。排查大小写敏感问题(针对Windows/macOS):如果你的系统是大小写不敏感的(比如Windows或者开启了APFS大小写不敏感的macOS),有可能之前仓库里存在过
SRC/Src这类大小写不同的文件夹,并且被配置了忽略,导致现在小写的src也被牵连忽略。可以检查Mercurial的case.preserve配置,或者看看仓库历史提交里有没有相关的文件夹操作记录。检查是否存在嵌套仓库:有没有可能
app/src目录下自己是一个独立的Mercurial仓库?如果里面有.hg文件夹,外层的Mercurial仓库会自动把它当作子仓库忽略掉。你可以进入app/src目录看看有没有隐藏的.hg文件夹,如果有的话,要么把这个子仓库合并到主仓库,要么改用Mercurial子模块的方式管理。刷新Sourcetree的缓存:有时候是Sourcetree的本地缓存出了问题,Mercurial本身已经识别了
app/src,但Sourcetree没同步显示。你可以试试点击Sourcetree里的刷新按钮,或者直接重启软件,甚至在偏好设置里找到清除缓存的选项来重置一下。
内容的提问来源于stack exchange,提问作者rsc

