| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| Expand Up | @@ -17,17 +17,21 @@ | |
| from sumtypes import constructor, sumtype | ||
|
|
||
| from git import ( | ||
| BlobFilter, | ||
| Diff, | ||
| Git, | ||
| IndexFile, | ||
| Object, | ||
| Repo, | ||
| BlobFilter, | ||
| UnmergedEntriesError, | ||
| Tree, | ||
| Object, | ||
| Diff, | ||
| GitCommandError, | ||
| ) | ||
| from git.exc import ( | ||
| CheckoutError, | ||
| GitCommandError, | ||
| HookExecutionError, | ||
| InvalidGitRepositoryError, | ||
| UnmergedEntriesError, | ||
| ) | ||
| from git.exc import HookExecutionError, InvalidGitRepositoryError | ||
| from git.index.fun import hook_path | ||
| from git.index.typ import BaseIndexEntry, IndexEntry | ||
| from git.objects import Blob | ||
| Expand Down Expand Up | @@ -284,14 +288,6 @@ def add_bad_blob(): | |
| except Exception as ex: | ||
| assert "index.lock' could not be obtained" not in str(ex) | ||
|
|
||
| @pytest.mark.xfail( | ||
| os.name == "nt", | ||
| reason=( | ||
| "IndexFile.from_tree is broken on Windows (related to NamedTemporaryFile), see #1630.\n" | ||
| "'git read-tree --index-output=...' fails with 'fatal: unable to write new index file'." | ||
| ), | ||
| raises=GitCommandError, | ||
| ) | ||
| @with_rw_repo("0.1.6") | ||
| def test_index_file_from_tree(self, rw_repo): | ||
| common_ancestor_sha = "5117c9c8a4d3af19a9958677e45cda9269de1541" | ||
| Expand Down Expand Up | @@ -342,14 +338,6 @@ def test_index_file_from_tree(self, rw_repo): | |
| # END for each blob | ||
| self.assertEqual(num_blobs, len(three_way_index.entries)) | ||
|
|
||
| @pytest.mark.xfail( | ||
| os.name == "nt", | ||
| reason=( | ||
| "IndexFile.from_tree is broken on Windows (related to NamedTemporaryFile), see #1630.\n" | ||
| "'git read-tree --index-output=...' fails with 'fatal: unable to write new index file'." | ||
| ), | ||
| raises=GitCommandError, | ||
| ) | ||
| @with_rw_repo("0.1.6") | ||
| def test_index_merge_tree(self, rw_repo): | ||
| # A bit out of place, but we need a different repo for this: | ||
| Expand Down Expand Up | @@ -412,14 +400,6 @@ def test_index_merge_tree(self, rw_repo): | |
| self.assertEqual(len(unmerged_blobs), 1) | ||
| self.assertEqual(list(unmerged_blobs.keys())[0], manifest_key[0]) | ||
|
|
||
| @pytest.mark.xfail( | ||
| os.name == "nt", | ||
| reason=( | ||
| "IndexFile.from_tree is broken on Windows (related to NamedTemporaryFile), see #1630.\n" | ||
| "'git read-tree --index-output=...' fails with 'fatal: unable to write new index file'." | ||
| ), | ||
| raises=GitCommandError, | ||
| ) | ||
| @with_rw_repo("0.1.6") | ||
| def test_index_file_diffing(self, rw_repo): | ||
| # Default Index instance points to our index. | ||
| Expand Down Expand Up | @@ -555,12 +535,9 @@ def _count_existing(self, repo, files): | |
| # END num existing helper | ||
|
|
||
| @pytest.mark.xfail( | ||
| os.name == "nt", | ||
| reason=( | ||
| "IndexFile.from_tree is broken on Windows (related to NamedTemporaryFile), see #1630.\n" | ||
| "'git read-tree --index-output=...' fails with 'fatal: unable to write new index file'." | ||
| ), | ||
| raises=GitCommandError, | ||
| os.name == "nt" and Git().config("core.symlinks") == "true", | ||
|
Comment thread
Copy link
Copy Markdown
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityI'm unsure if this is the best way for the xfail condition to check the core.symlinks configuration variable. This will typically run with the CWD as the GitPython repository, thereby including the local scope, and maybe only the system and global scopes should be used. (I had thought to use GitConfigParser, which I think can omit the local scope since #950, but it looks like its use of the system scope is limited on Windows.)
Sorry, something went wrong.
All reactions
Copy link
Copy Markdown
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityI think GitPython has the same problem that gitoxide would have: It fails to see the configuration coming with the git installation itself, which has to be discovered by asking git itself. That's the configuration file that contains these values, on Windows at least. Maybe Windows will also put that value into the repository-local configuration file, which might be the reason this condition works at all. And since it works, I suppose it's good enough for now?
Sorry, something went wrong.
All reactions
Copy link
Copy Markdown
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality
At least in the more common false case, I've found that it is coped into the local repository's configuration. But using Git().config(...) doesn't rely on that. It works outside any repository and finds the system configuration: (.venv) C:\Users\ek\source\repos\GitPython [fromtree ≡]> pushd ~/tmp
(.venv) C:\Users\ek\tmp> python
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import git
>>> git.Git().config("core.symlinks", show_origin=True)
'file:C:/Users/ek/scoop/apps/git/2.43.0/etc/gitconfig\tfalse'
(This is the same GitPython as when I run it from the GitPython directory, since the virtual environment is activated and the package is installed in it using pip install -e ..) So I think the condition is working because config is not being treated specially--unlike if GitConfigParser is used, the command in that condition it really is running git config. (.venv) C:\Users\ek\tmp> python
Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import logging
>>> logging.basicConfig(level=logging.INFO)
>>> import git
>>> git.Git.GIT_PYTHON_TRACE = "full"
>>> git.Git().config("core.symlinks")
INFO:git.cmd:git config core.symlinks -> 0; stdout: 'false'
'false'
Sorry, something went wrong.
Byron reacted with thumbs up emoji
All reactions
|
||
| reason="Assumes symlinks are not created on Windows and opens a symlink to a nonexistent target.", | ||
| raises=FileNotFoundError, | ||
| ) | ||
| @with_rw_repo("0.1.6") | ||
| def test_index_mutation(self, rw_repo): | ||
| Expand Down Expand Up | @@ -772,7 +749,7 @@ def mixed_iterator(): | |
| # END for each target | ||
| # END real symlink test | ||
|
|
||
| # Add fake symlink and assure it checks-our as symlink. | ||
| # Add fake symlink and assure it checks out as a symlink. | ||
| fake_symlink_relapath = "my_fake_symlink" | ||
| link_target = "/etc/that" | ||
| fake_symlink_path = self._make_file(fake_symlink_relapath, link_target, rw_repo) | ||
| Expand Down Expand Up | @@ -806,7 +783,7 @@ def mixed_iterator(): | |
| os.remove(fake_symlink_path) | ||
| index.checkout(fake_symlink_path) | ||
|
|
||
| # On Windows, we will never get symlinks. | ||
| # On Windows, we currently assume we will never get symlinks. | ||
| if os.name == "nt": | ||
| # Symlinks should contain the link as text (which is what a | ||
| # symlink actually is). | ||
| Expand Down Expand Up | @@ -915,14 +892,6 @@ def make_paths(): | |
| for absfile in absfiles: | ||
| assert osp.isfile(absfile) | ||
|
|
||
| @pytest.mark.xfail( | ||
| os.name == "nt", | ||
| reason=( | ||
| "IndexFile.from_tree is broken on Windows (related to NamedTemporaryFile), see #1630.\n" | ||
| "'git read-tree --index-output=...' fails with 'fatal: unable to write new index file'." | ||
| ), | ||
| raises=GitCommandError, | ||
| ) | ||
| @with_rw_repo("HEAD") | ||
| def test_compare_write_tree(self, rw_repo): | ||
| """Test writing all trees, comparing them for equality.""" | ||
| Expand Down | ||
| Back | FazBrowse Home | New Git URL |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low QualityAbout time :D!
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.