A Useful Git Post-Checkout Hook for Python Repos
Join the DZone community and get the full member experience.
Join For FreeEvery now and again, an innocent python developer checks out a new Git branch then proceeds to bang their head against a bug caused by an orphaned.pyc file from the previous branch. Since *.pyc files are typically in the repo's.gitignore file, they are not removed when switching branches and can cause issues if the corresponding .py is removed.
This can be neatly addressed through a 'post checkout' hook which deletes all such files. Here is such a script, which also removes empty folders and prints a summary:
#!/usr/bin/env bash # Delete .pyc files and empty directories from root of project cd ./$(git rev-parse --show-cdup) # Clean-up find . -name ".DS_Store" -delete NUM_PYC_FILES=$( find . -name "*.pyc" | wc -l | tr -d ' ' ) if [ $NUM_PYC_FILES -gt 0 ]; then find . -name "*.pyc" -delete printf "\e[00;31mDeleted $NUM_PYC_FILES .pyc files\e[00m\n" fi NUM_EMPTY_DIRS=$( find . -type d -empty | wc -l | tr -d ' ' ) if [ $NUM_EMPTY_DIRS -gt 0 ]; then find . -type d -empty -delete printf "\e[00;31mDeleted $NUM_EMPTY_DIRS empty directories\e[00m\n" fi
Sample output:

Inspiration:
The above version is a extension of the snippets in the referenced Stack Overflow question.
Published at DZone with permission of David Winterbottom, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Trending
-
Getting Started With the YugabyteDB Managed REST API
-
10 Traits That Separate the Best Devs From the Crowd
-
Integrate Cucumber in Playwright With Java
-
Five Java Books Beginners and Professionals Should Read
Comments