Skip to content

Commit

Permalink
chore: normalize line endings and symlinks
Browse files Browse the repository at this point in the history
This makes it possible to do a fresh clone of this repo in Windows, and
be able to run the resetdeps command successfully and then have a clean
git status. We now check for a clean git status in during CI in Windows
which was previously excluded.

The changes required were to:
- Delete our workspace symlinks from node_modules and add a step to
  resetdeps that will do a platform dependent symlink before the initial
  reification
- Add line ending normalization to our `.gitattributes` file and commit
  the result. Git will store text with LF line endings automatically,
  except for some files like `cmd` scripts that need to be `crlf` and
  shell scripts that need to be `lf`.
- Update workflows to call `node scripts/resetdeps.js` directly since a
  fresh clone of the repo wont have any symlinks in place, so any
  `node .` command will fail due to missing workspaces.

Ref: npm/statusboard#562
  • Loading branch information
lukekarrys authored and wraithgar committed Jun 26, 2023
1 parent aef96c0 commit a2fa41e
Show file tree
Hide file tree
Showing 54 changed files with 339 additions and 246 deletions.
29 changes: 27 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,27 @@
/node_modules/** linguist-generated=false
/package-lock.json linguist-generated=false
# normalize all line endings by default
* text=auto

# our shell/bin scripts always need to be LF
/bin/* text eol=lf
/workspaces/arborist/bin/index.js text eol=lf
/configure text eol=lf

# our cmd scripts always need to be CRLF
/bin/*.cmd text eol=crlf

# ignore all line endings in node_modules since we dont control that
/node_modules/** -text

# the files we write should be LF so they can be generated cross platform
/node_modules/.gitignore text eol=lf
/workspaces/arborist/test/fixtures/.gitignore text eol=lf
/DEPENDENCIES.md text eol=lf
/AUTHORS text eol=lf

# fixture tarballs should be treated as binary
/workspaces/*/test/fixtures/**/*.tgz binary

# these hint to GitHub to show these files as not generated so they default to
# showing the full diff in pull requests
/node_modules/** linguist-generated=false
/package-lock.json linguist-generated=false
4 changes: 3 additions & 1 deletion .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps -- --package-lock
run: node scripts/resetdeps.js --package-lock
- name: Run Production Audit
run: node . audit --omit=dev
- name: Run Full Audit
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmaccess.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmaccess
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmaccess
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmdiff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmdiff
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmdiff
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmexec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmexec
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmexec
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmfund.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmfund
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmfund
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmhook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmhook
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmhook
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmorg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmorg
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmorg
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmpack.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmpack
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmpack
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmpublish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmpublish
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmpublish
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmsearch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmsearch
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmsearch
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmteam.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmteam
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmteam
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-libnpmversion.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w libnpmversion
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w libnpmversion
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
9 changes: 6 additions & 3 deletions .github/workflows/ci-npmcli-arborist.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ jobs:
with:
node-version: 18.x
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Lint
run: node . run lint --ignore-scripts -w @npmcli/arborist
- name: Post Lint
Expand Down Expand Up @@ -83,12 +85,13 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: npm
- name: Check Git Status
run: node scripts/git-dirty.js
- name: Reset Deps
run: node . run resetdeps
run: node scripts/resetdeps.js
- name: Add Problem Matcher
run: echo "::add-matcher::.github/matchers/tap.json"
- name: Test
run: node . test --ignore-scripts -w @npmcli/arborist
- name: Check Git Status
if: matrix && matrix.platform.os != 'windows-latest'
run: node scripts/git-dirty.js
Loading

0 comments on commit a2fa41e

Please sign in to comment.