Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .githooks/check_duplicate_ipynb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

echo "Checking for duplicate .ipynb filenames..."

# Get all existing and staged .ipynb files
all_files=$(git ls-files | grep '\.ipynb$' || true)
staged_files=$(git diff --cached --name-only --diff-filter=A | grep '\.ipynb$' || true)

# Combine them to ensure we check for duplicates globally
combined_files=$(echo -e "$all_files\n$staged_files" | sort -u)

if [[ -z "$combined_files" ]]; then
exit 0 # No .ipynb files found, allow commit
fi

# Extract only filenames (ignore paths)
filenames=$(basename -a $combined_files)

# Check for duplicates
duplicates=$(echo "$filenames" | sort | uniq -d)

if [[ -n "$duplicates" ]]; then
echo "Duplicate .ipynb filenames detected in repository and staged changes:"
echo "$duplicates"
echo "Commit rejected! Ensure unique .ipynb filenames."
exit 1 # Prevent commit
fi

exit 0 # Allow commit
12 changes: 12 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
ci:
skip: [check-duplicate-ipynb]

repos:
- repo: local
hooks:
- id: check-duplicate-ipynb
name: Check for duplicate .ipynb filenames
entry: bash .githooks/check_duplicate_ipynb.sh
language: system
pass_filenames: false
stages: [pre-commit]