René's URL Explorer Experiment


Title: GitHub · Where software is built

Open Graph Title: gitpython-developers/GitPython

X Title: gitpython-developers/GitPython

Description: GitPython is a python library used to interact with Git repositories. - gitpython-developers/GitPython

Open Graph Description: GitPython is a python library used to interact with Git repositories. - gitpython-developers/GitPython

X Description: GitPython is a python library used to interact with Git repositories. - gitpython-developers/GitPython

Opengraph URL: https://github.com/gitpython-developers/GitPython

X: @github

direct link

Domain: redirect.github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangely","articleBody":"### Summary\r\n\r\nAs noted in #1697:\r\n\r\n\u003e The `HIDE_WINDOWS_KNOWN_ERRORS` and `HIDE_WINDOWS_FREEZE_ERRORS` variables are intended to be affected by the same-named environment variables, but this does not work properly. They are `True` by default, but the only way to use environment variables to set them to a false value is *to define the environment variable with an empty value* (since everything else, as a string, is truthy). In addition to being very unlikely to have been the intended behavior, this is also hard to do on Windows when using typical shells, because in both `cmd.exe` and PowerShell setting an environment variable as empty actually removes the variable altogether.\r\n\r\n### Details\r\n\r\nThe attributes have type `bool` outside native Windows systems (where they are `False`) and in native Windows systems where the environment variables don't exist (they are `True`):\r\n\r\nhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L122-L126\r\n\r\nOtherwise they are the `str` values of the same-named environment variables. They are always used as conditions, and as such, the only ways to set them `False` on a native Windows system--besides editing that code, which in practice seems to be what is done--is to write to the attributes with Python code or to set the environment variables to the empty string.\r\n\r\nIn `bash` on Windows, such as Git Bash, this is easy to do, though not at all obvious that it should be done and also very unintuitive. In shells meant for Windows, `cmd.exe` and PowerShell, setting an environment variable to the empty string causes it to be automatically *unset*, and extra effort is required to actually set the empty string.\r\n\r\n### The tricky part\r\n\r\n`HIDE_WINDOWS_KNOWN_ERRORS` is defined in `git.util` [**and listed in `__all__`**](https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L114). So it is a breaking change to remove or rename it. Because code that uses the GitPython library is explicitly allowed to assume the attribute will continue to exist, it's worth considering the subjective question of what, if anything, users can reasonably assume *about* it.\r\n\r\nAlthough comments shown above explains its original purpose, its semantics are not really documented anywhere, and nothing makes any statements about how it is set. Furthermore, if people are setting nonempty values that intuitively feel like they express falsehood--such as `0`--then they probably expect that this is setting it to `False` or some falsy value. Therefore, I think it's reasonable to regard the current behavior as a bug and fix it, even though actually removing or even officially deprecating the attribute should wait until later because it currently affects the behavior of `git.util.rmtree`, through [the callback](https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L185-L196) it passes to `shutil.rmtree`.\r\n\r\nIn contrast, `HIDE_WINDOWS_FREEZE_ERRORS` is not listed in `__all__` and could be renamed, removed, or arbitrarily changed at any time. But as long as `HIDE_WINDOWS_KNOWN_ERRORS` remains in `git.util`, I don't think the presence `HIDE_WINDOWS_FREEZE_ERRORS` should be seen as any special problem.\r\n\r\nAlthough I don't advocate formally deprecating the `HIDE_WINDOWS_KNOWN_ERRORS` *attribute* just yet, the environment variable is another story. In addition to being parsed differently, the presence of either environment variable could cause a warning to be printed when `git.util` is loaded (which happens when the `git` module is loaded).\r\n\r\n### Context\r\n\r\nThis relates to the deeper issue #790. Fixing this narrower issue won't solve the problem that raising `SkipTest` as a result of failing to delete files can produce unpredictable effects in production--because it signals a condition that would typically be signaled by `PermissionError` or some other exception derived from `OSError`, and would bypass exception handling meant for that--as well as masking bugs in applications or other libraries that use GitPython by causing their automated tests to be skipped. But solving that will carry its own challenge. The main problem is not how to provide the functionality to the test suite, but instead that there may be code using GitPython that has come to rely on exceptions from deleting files being wrapped in `SkipTest`.\r\n\r\nAlthough I definitely think #790 *should* be solved, and there are various approaches to mitigating disruption from doing so, I think it is worth fixing this narrower issue of how the environment variables are interpreted now. I've included such a fix in #1700 (which also would fix #1699).","author":{"url":"https://github.com/EliahKagan","@type":"Person","name":"EliahKagan"},"datePublished":"2023-10-09T11:11:17.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/1698/GitPython/issues/1698"}

route-pattern/:user_id/:repository/issues/:id(.:format)
route-controllerissues
route-actionshow
fetch-noncev2:a5efb8e3-b4ff-7c47-455c-e85fe6f7681f
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id8860:239A7F:3C1EC1B:51F7803:6972DBD3
html-safe-nonce62135e8b4cdfd5e11fb69348f0a98df3ea99ddd34892e088ef04be23dfbd74c5
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4ODYwOjIzOUE3RjozQzFFQzFCOjUxRjc4MDM6Njk3MkRCRDMiLCJ2aXNpdG9yX2lkIjoiNjg5MjM5ODQ0NTYxNjg4MDU5NSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac9412930722f2af6763056285932b542af1322b299f32d6c6e0ee158098cad65e
hovercard-subject-tagrepository:1126087
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///issues/show
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/gitpython-developers/GitPython/issues/1698
twitter:imagehttps://opengraph.githubassets.com/0a2fe260b289b5f1da6af37d11940d75309e45e27764d543a2eb24974f2905e3/gitpython-developers/GitPython
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/0a2fe260b289b5f1da6af37d11940d75309e45e27764d543a2eb24974f2905e3/gitpython-developers/GitPython
og:image:altGitPython is a python library used to interact with Git repositories. - gitpython-developers/GitPython
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None0b28c359b13f980b4fbede8da4d68e72b8e69a4837e7a70f5b5bd33f08875133
turbo-cache-controlno-cache
go-importgithub.com/gitpython-developers/GitPython git https://github.com/gitpython-developers/GitPython.git
octolytics-dimension-user_id503709
octolytics-dimension-user_logingitpython-developers
octolytics-dimension-repository_id1126087
octolytics-dimension-repository_nwogitpython-developers/GitPython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1126087
octolytics-dimension-repository_network_root_nwogitpython-developers/GitPython
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releasee59d75213c810b4a9ea72ce3aa89d45f5b2feb48
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://redirect.github.com/gitpython-developers/GitPython/issues/1698#start-of-content
https://redirect.github.com/
Sign in https://redirect.github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgitpython-developers%2FGitPython%2Fissues%2F1698
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://redirect.github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fgitpython-developers%2FGitPython%2Fissues%2F1698
Sign up https://redirect.github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fissues%2Fshow&source=header-repo&source_repo=gitpython-developers%2FGitPython
Reloadhttps://redirect.github.com/gitpython-developers/GitPython/issues/1698
Reloadhttps://redirect.github.com/gitpython-developers/GitPython/issues/1698
Reloadhttps://redirect.github.com/gitpython-developers/GitPython/issues/1698
gitpython-developers https://redirect.github.com/gitpython-developers
GitPythonhttps://redirect.github.com/gitpython-developers/GitPython
Please reload this pagehttps://redirect.github.com/gitpython-developers/GitPython/issues/1698
Notifications https://redirect.github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Fork 964 https://redirect.github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Star 5k https://redirect.github.com/login?return_to=%2Fgitpython-developers%2FGitPython
Code https://redirect.github.com/gitpython-developers/GitPython
Issues 170 https://redirect.github.com/gitpython-developers/GitPython/issues
Pull requests 8 https://redirect.github.com/gitpython-developers/GitPython/pulls
Discussions https://redirect.github.com/gitpython-developers/GitPython/discussions
Actions https://redirect.github.com/gitpython-developers/GitPython/actions
Security 3 https://redirect.github.com/gitpython-developers/GitPython/security
Insights https://redirect.github.com/gitpython-developers/GitPython/pulse
Code https://redirect.github.com/gitpython-developers/GitPython
Issues https://redirect.github.com/gitpython-developers/GitPython/issues
Pull requests https://redirect.github.com/gitpython-developers/GitPython/pulls
Discussions https://redirect.github.com/gitpython-developers/GitPython/discussions
Actions https://redirect.github.com/gitpython-developers/GitPython/actions
Security https://redirect.github.com/gitpython-developers/GitPython/security
Insights https://redirect.github.com/gitpython-developers/GitPython/pulse
New issuehttps://redirect.github.com/login?return_to=https://github.com/gitpython-developers/GitPython/issues/1698
New issuehttps://redirect.github.com/login?return_to=https://github.com/gitpython-developers/GitPython/issues/1698
#1700https://github.com/gitpython-developers/GitPython/pull/1700
HIDE_WINDOWS_*_ERRORS environment variables are interpreted strangelyhttps://redirect.github.com/gitpython-developers/GitPython/issues/1698#top
#1700https://github.com/gitpython-developers/GitPython/pull/1700
acknowledgedhttps://github.com/gitpython-developers/GitPython/issues?q=state%3Aopen%20label%3A%22acknowledged%22
https://github.com/EliahKagan
https://github.com/EliahKagan
EliahKaganhttps://github.com/EliahKagan
on Oct 9, 2023https://github.com/gitpython-developers/GitPython/issues/1698#issue-1932829369
#1697https://github.com/gitpython-developers/GitPython/pull/1697
GitPython/git/util.pyhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L122-L126
8107cbfhttps://redirect.github.com/gitpython-developers/GitPython/commit/8107cbfeb1d56b2587d347c7f3d509ebef079950
and listed in __all__https://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L114
the callbackhttps://github.com/gitpython-developers/GitPython/blob/8107cbfeb1d56b2587d347c7f3d509ebef079950/git/util.py#L185-L196
#790https://github.com/gitpython-developers/GitPython/issues/790
#790https://github.com/gitpython-developers/GitPython/issues/790
#1700https://github.com/gitpython-developers/GitPython/pull/1700
#1699https://github.com/gitpython-developers/GitPython/issues/1699
acknowledgedhttps://github.com/gitpython-developers/GitPython/issues?q=state%3Aopen%20label%3A%22acknowledged%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.