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
virtualenvwrapper plugin fail to deactivate virtualenv when parent directory is a git repository #4603
Comments
Pull request: #4604 |
I think this is intended behavior. Git repos, even without venv-specific customizations, are considered to be project roots, so when this happens, it should switch you from the Have a look at the discussion in #4122, #4110, and #3918. There was a while when Maybe you'd want to add a setting that controls whether ordinary git repos are considered project roots? At any case, we should probably run this by the other |
In my case, gitrepo is not a virtualenv. Hence the annoying behaviour. But yes, it may be a change for some people, thanks for the headsup ! Pull request has been updated to add an option DEACTIVATE_VENV_ASAP to control that behaviour. Without setting that option, the behaviour is the same as previously. |
Cool. Maybe name it |
What's the status of this issue? It would appear that this is a problem not only when the parent directory is a git repo but any time the destination directory of the cd command is. (see referenced issue above) |
…ncluding fixes (#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses #4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue #4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
…ncluding fixes (ohmyzsh#5663) * Test only for the presence of a .git directory in virtualenvwrapper Instead of using both $(git rev-parse --show-toplevel) and a check for a .git directory, use just the latter. As well as being redundant the former does not work quite so well when using multiple worktrees; each worktree will be treated as a separate project. * Unset ENV_NAME & deactivate if no virtualenv found This addresses ohmyzsh#4603 without breaking current behaviour (where current behaviour is correct). When changing directories, if there is no environment matching ENV_NAME, ENV_NAME is emptied and deactivate called if there is a current environment active (based on CD_VIRTUAL_ENV). * Use path comparison not string comparison for paths This will solve part of issue ohmyzsh#4255 where WORKON_HOME is defined with a trailing slash or not normalised in some way, as well as instances where symlinks are used, and any other instances where constructed paths don't exactly match even though they go to the same file. Co-authored-by: Robby Russell <robby@planetargon.com>
Consider the following directory layout:
/home/src
/home/src/gitrepo => git repository
/home/src/gitrepo/adirwithvirtualenv => a repository with a virtualenv ( either a .venv or else ).
When going from adirwithvirtualenv to gitrepo ( cd .. ), deactivate is not called because $ENV_NAME is filled with the name of the directory, as it is a git repository.
The text was updated successfully, but these errors were encountered: