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

bpo-37936: Systematically distinguish rooted vs. unrooted in .gitignore. #15823

Merged
merged 10 commits into from
Sep 11, 2019
103 changes: 55 additions & 48 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
# Two-trick pony for OSX and other case insensitive file systems:
# Ignore ./python binary on Unix but still look into ./Python/ directory.
/python
!/Python/
#####
# First, rules intended to apply in all subdirectories.
# These contain no slash, or only a trailing slash.

*.cover
*.iml
*.o
*.a
*.so*
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fwiw, this is causing a minor inconvenience in packaging for debian as this now matches debian/README.source

the original pattern was libpython*.so* could that be restored?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

debian/README.source does not exist in the cpython repo, so presumably you can unignore it wherever you're patching it in. I would think you would want to explicitly unignore anything added to avoid issues like this.

I prefer to keep *.so*, because we we don't want to accidentally check in any compiled extension modules (even though that shouldn't happen anyway and any *.so other than libpython* should theoretically only appear in the ignored build directory, ignoring them anyway seems better to me).

However, I could be persuaded to expand that rule to

*.so
*.so.*

If that works for you @asottile, please submit a PR and ping me.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will send a PR 👍

*.dylib
*.dll
*.orig
*.pyc
*.pyd
Expand All @@ -18,6 +21,31 @@
*.profraw
*.dyn
.gdb_history
.purify
__pycache__
.hg/
.svn/
.idea/
tags
TAGS
.vs/
.vscode/
gmon.out
.coverage
.mypy_cache/

*.exe
!Lib/distutils/command/*.exe

# Ignore core dumps... but not Tools/msi/core/ or the like.
core
!core/


#####
# Then, rules meant for a specific location relative to the repo root.
# These must contain a non-trailing slash (and may also have a trailing slash.)

Doc/build/
Doc/venv/
Doc/.venv/
Expand All @@ -29,7 +57,7 @@ Lib/lib2to3/*.pickle
Lib/test/data/*
!Lib/test/data/README
/Makefile
Makefile.pre
/Makefile.pre
Misc/python.pc
Misc/python-embed.pc
Misc/python-config.sh
Expand All @@ -38,12 +66,9 @@ Modules/Setup.local
Modules/config.c
Modules/ld_so_aix
Programs/_freeze_importlib
Programs/_freeze_importlib.exe
Programs/_testembed
Programs/_testembed.exe
PC/python_nt*.h
PC/pythonnt_rc*.h
PC/*/*.exe
PC/*/*.exp
PC/*/*.lib
PC/*/*.bsc
Expand All @@ -62,53 +87,35 @@ PCbuild/*-pgi
PCbuild/*-pgo
PCbuild/*.VC.db
PCbuild/*.VC.opendb
PCbuild/.vs/
PCbuild/amd64/
PCbuild/arm32/
PCbuild/arm64/
PCbuild/obj/
PCbuild/win32/
Tools/unicode/data/
.purify
__pycache__
autom4te.cache
build/
buildno
config.cache
config.log
config.status
config.status.lineno
core
!Tools/msi/core/
db_home
.hg/
.idea/
ipch/
libpython*.a
libpython*.so*
libpython*.dylib
libpython*.dll
platform
pybuilddir.txt
/autom4te.cache
/build/
/config.cache
/config.log
/config.status
/config.status.lineno
/platform
/pybuilddir.txt
/pyconfig.h
python-config
python-config.py
python.bat
python.exe
python-gdb.py
python.exe-gdb.py
reflog.txt
.svn/
tags
TAGS
.coverage
coverage/
externals/
htmlcov/
/python-config
/python-config.py
/python.bat
/python-gdb.py
/python.exe-gdb.py
/reflog.txt
/coverage/
/externals/
/htmlcov/
Tools/msi/obj
Tools/ssl/amd64
Tools/ssl/win32
.vs/
.vscode/
gmon.out
.mypy_cache/

# Two-trick pony for OSX and other case insensitive file systems:
# Ignore ./python binary on Unix but still look into ./Python/ directory.
/python
!/Python/
4 changes: 1 addition & 3 deletions Lib/test/libregrtest/runtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,9 +313,7 @@ def cleanup_test_droppings(test_name, verbose):
# since if a test leaves a file open, it cannot be deleted by name (while
# there's nothing we can do about that here either, we can display the
# name of the offending test, which is a real help).
for name in (support.TESTFN,
"db_home",
):
for name in (support.TESTFN,):
if not os.path.exists(name):
continue

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
The :file:`.gitignore` file systematically keeps "rooted", with a
non-trailing slash, all the rules that are meant to apply to files in a
specific place in the repo. Previously, when the intended file to ignore
happened to be at the root of the repo, we'd most often accidentally also
ignore files and directories with the same name anywhere in the tree.