Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(pre-commit-hooks): set stages for destroyed-symlinks #1085

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

AdrianDC
Copy link

The 'destroyed-symlinks' hook runs upon 'commit-msg' hook, however when used in 'git submodules', repository scope breaks

pre_commit_hooks.util.CalledProcessError: (('git', 'status',
'--porcelain=v2', '-z', '--', '.../COMMIT_EDITMSG'), 0, 128, '',
b"fatal: .../COMMIT_EDITMSG: '...' is outside repository at '...'\n")



Related issues : Similar to #777


Test case using docker run --entrypoint sh --rm -it python:3.12 container for example (+ 4.6.0 workaround) :

# Configurations
if ! git config --global --get user.email; then
  git config --global user.email '[email protected]'
  git config --global user.name 'Your Name'
fi

# Prepare main
mkdir ./main/
cd ./main/
git init
echo '# Main' >./README.md
git add -v ./README.md
git commit -m 'docs(readme): initial commit'
cd ../

# Create submodule1
mkdir ./submodule1/
cd ./submodule1/
git init
echo '# Submodule 1' >./README.md
git add ./README.md
git commit -m 'docs(readme): initial commit'
cd ../

# Create submodule2
mkdir ./submodule2
cd ./submodule2
git init
echo '# Submodule 2' >./README.md
git add ./README.md
git commit -m 'docs(readme): initial commit'
cd ../

# Add submodules
cd ./main/
mkdir ./sources/
git -c protocol.file.allow=always submodule add file://$(pwd)/../submodule1 ./sources/submodule1
git -c protocol.file.allow=always submodule add file://$(pwd)/../submodule2 ./sources/submodule2
git add -v ./sources/submodule1 ./sources/submodule2
git commit -m 'test(sources): add submodule1 and submodule2'
git status
git submodule

# Configure pre-commit in submodule1
cd ./sources/submodule1/
cat >./.pre-commit-config.yaml <<EOF
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - id: destroyed-symlinks
  - repo: https://github.com/commitizen-tools/commitizen
    rev: v3.29.0
    hooks:
      - id: commitizen
EOF
ls -la
pwd

# Install pre-commit
pip install pre-commit==3.8.0 # latest

# Enable pre-commit
pre-commit install -t commit-msg -t post-checkout -t post-commit -t post-merge -t post-rewrite -t pre-commit -t pre-merge-commit -t pre-push -t pre-rebase -t prepare-commit-msg

# Create commit
git add -v ./.pre-commit-config.yaml
git commit -m 'test(pre-commit): initial configuration'

# Run pre-commit (FAILURE)
pre-commit run -a -v

# Workaround destroyed-symlinks stages
cat >./.pre-commit-config.yaml <<EOF
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.6.0
    hooks:
      - id: destroyed-symlinks
        stages: [commit, push, manual]
  - repo: https://github.com/commitizen-tools/commitizen
    rev: v3.29.0
    hooks:
      - id: commitizen
EOF

# Run pre-commit (SUCCESS)
pre-commit run -a -v

@asottile
Copy link
Member

we don't do conventional commits here

@AdrianDC
Copy link
Author

we don't do conventional commits here

Thanks for your feedback.

Commit title changed 👍.

@asottile
Copy link
Member

your commit message still doesn't make sense. look at the thing you linked to for inspiration maybe?

The 'destroyed-symlinks' hook runs upon 'commit-msg' hook,
however when used in 'git submodules', repository scope breaks

> pre_commit_hooks.util.CalledProcessError: (('git', 'status',
> '--porcelain=v2', '-z', '--', '.../COMMIT_EDITMSG'), 0, 128, '',
> b"fatal: .../COMMIT_EDITMSG: '...' is outside repository at '...'\n")
---

Signed-off-by: Adrian DC <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants