venv overwrites existing .gitignore
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Bug report
Bug description
I cloned a github project with an existing .gitignore file.
I created a new python venv inside the cloned project using python3 -m venv .venv .
After creating the new venv, I see that the .gitignore file has been modified.
diff --git a/.gitignore b/.gitignore
index d0258704..f514b74c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,2 @@
-.dev
-.idea/
-.hypothesis/
-__pycache__/
-db.sqlite3
-*.sw*
-*.pyc
-venv/
-.venv/
-environment_settings.py
-elm-stuff/
-.coverage
-media
-docker/.env
-node_modules
-package-lock.json
-.sass-cache
+# Created by venv; see https://docs.python.org/3/library/venv.html
+*
I found this documentation on the mentioned url added to the .gitignore file:
Changed in version 3.13: venv now creates a .gitignore file for Git by default.
Environment
- Arch linux 6.14.9
- Python 3.13.3
Expected behaviour
I would expect it to not overwrite an existing .gitignore file, so it only creates it if it isnt present already.
Update
Using
python3 -m venv .venvworks as expected, but I didpython3 -m venv .venv .(trailing dot) which creates a folder with a new venv named.venv, but also creates a venv inside the existing folder., and that's when it overwrites the.gitignore
Please let me know if I'm missing some details or you need further testing for triage the issue.
CPython versions tested on:
3.13
Operating systems tested on:
Linux
Linked PRs
- gh-139130
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the behavior with python3 -m venv .venv . in a project that already contains a .gitignore, then compare it with python3 -m venv .venv. Trace the python3 -m venv entry point and verify that creating the environment does not replace an existing .gitignore; confirm the behavior on Python 3.13.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100