Skip to content

Build archive includes files ignored by a .gitignore inside a dot-directory #4536

Open

Description

@AndrewSouthpaw

Build/Submit details page URL

No response

Summary

eas-cli skips .gitignore files inside dot-directories when it copies the project for the build archive, so files git ignores there get uploaded anyway. Ignore.initIgnoreAsync in packages/eas-cli/src/vcs/local.ts finds them with fg('**/.gitignore'), and fast-glob's ** doesn't descend into dot-directories unless you pass dot: true.

Managed or bare?

Managed (CNG)

Environment

eas-cli 22.0.0, Node 24.11.0, macOS 15.7. The same glob call is in 24.10.0. I skipped expo-env-info because the bug is in eas-cli's own copy step and doesn't depend on the SDK.

Error output

None. The archive is just bigger than it should be.

Reproducible demo or steps to reproduce from a blank project

mkdir repro && cd repro && git init
mkdir .cache
echo 'big-file' > .cache/.gitignore
echo x > .cache/big-file
git check-ignore -v .cache/big-file
# .cache/.gitignore:1:big-file	.cache/big-file

npm i --no-save eas-cli@24.10.0
node -e "
const { makeShallowCopyAsync } = require('eas-cli/build/vcs/local');
makeShallowCopyAsync(process.cwd(), '../out').then(() => console.log('copied'));"
ls -A ../out/.cache
# .gitignore  big-file

big-file should not be in ../out.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions