-
-
Notifications
You must be signed in to change notification settings - Fork 934
Test project on Windows with MINGW git (conda2.7&3.4/cpy-3.5) #519
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
@ankostis Totally awesome ! Even though I won't be of much help, I do hope that fixing the windows issues work out in the end. That would restore windows platform support and keep it, after all these years of supporting it just on a best-effort basis, which meant not to obviously use non-windows APIs. |
1774f98
to
d773d40
Compare
+ Del extra spaces, import os.path as osp
Yes, that's a start. |
5899c59
to
d12fdca
Compare
@Byron the |
+ Pump once, so when input larger than `mmap.PAGESIZE`, stream is not emptied.
+ Pump once, so when input larger than `mmap.PAGESIZE`, stream is not emptied.
+ Pump once, so when input larger than `mmap.PAGESIZE`, stream is not emptied.
+ Pump code reads only once streams per `_read_lines_from_fno()` invocation, so when input larger than `mmap.PAGESIZE`, bytes are forgotten in the stream.
+ The code in `_read_lines_from_fno()` was reading the stream only once per invocation, so when input was larger than `mmap.PAGESIZE`, bytes were forgotten in the stream. + Also set deamon-threads.
+ The code in `_read_lines_from_fno()` was reading the stream only once per invocation, so when input was larger than `mmap.PAGESIZE`, bytes were forgotten in the stream. + Replaced buffer-banging code with iterate-on-file-descriptors. + Also set deamon-threads.
+ The code in `_read_lines_from_fno()` was reading the stream only once per invocation, so when input was larger than `mmap.PAGESIZE`, bytes were forgotten in the stream. + Replaced buffer-building code with iterate-on-file-descriptors. + Also set deamon-threads.
@Byron that was a tough one! I replaced the buffer-assembly code with iterate-on-file-descriptors. Actually the code is so simple that it maybe worth to replace the select-poll with the 2-pumps code, for all OSs? Many A side question:
Is that possible? I would expect any language allowing such "gap" to be considered outright broken. |
…`assertRaisesRegexp`
…`assertRaisesRegexp`
Just pushed one last commit with those 3 TCs appropriately skipped.
Actually quite the contrary: I can only reproduce it when i run the full harness; if i launch these 2 TCs alone, they pass! So practically, I cannot enter debug-mode - I have to wait 2' just to reach this point.
Have not received an invitation yet. |
I have just re-invited you, maybe it comes through. Otherwise you would just have to visit https://github.com/gitpython-developers to see the invitation. Your last commit was not part of my merge, I will fetch it separately. |
+ Just to see Apveyor all green and merge; the TCs HAVE TO BE FIXED.
@ankostis I think it worked ! The last commit has been cherry-picked and AppVeyor is on its way to all-green ! Even though it's not the real thing just yet, I call it an impressive piece of work! Thanks so much ! Right now I wouldn't know how to tackle the smmap issue, just as it's hard to fix anything in a project that is installed as a dependency. Probably it would be easiest if it would be reproducible locally, which I can't even do. |
@Byron many of the fixes in this PR can be applied also on gitdb, and as you said (haven't checked) on smmp. Is there a chance to tackle these issues in these projects? Or are they "frozen" somehow? I mean, a lot of problems just go away if resource classes are retrofitted as What do you think, is it worth the effort (but cna't promise anything)? |
For reference, reporting the CORRECT Appveyor results after #521 fixes by yarikoptic & ankostis restored skipped TCs: PY27: 5 errors: |
…preferredencoding()` + On Windows, this is the default encoding (usually, the mate-encoding `mcbs' which points to the current code-page (i.e. `cp1252` for Europe).
@ankostis With the latest upgrade of gitdb and smmap to 2.0, it's finally possible again to make new releases. This would allow the changes you talk about to be retro-fitted indeed, and given all the subtle problems GitPython has, it would certainly be worth doing that. |
In the git.diff.Diff class, the _index_from_patch_format and _index_from_raw_format methods' docstrings had still described them as reading from streams, even though they have instead read from processes (and taken "proc", not "stream", arguments) since gitpython-developers#519 when the change was made in a5db3d3 to fix a freezing bug. This updates the docstrings to reflect that they read from processes.
In the git.diff.Diff class, the _index_from_patch_format and _index_from_raw_format methods' docstrings had still described them as reading from streams, even though they have instead read from processes (and taken "proc", not "stream", arguments) since gitpython-developers#519 when the change was made in a5db3d3 to fix a freezing bug. This updates the docstrings to reflect that they read from processes.
In the git.diff.Diff class, the _index_from_patch_format and _index_from_raw_format methods' docstrings had still described them as reading from streams, even though they have instead read from processes (and taken "proc", not "stream", arguments) since gitpython-developers#519 when the change was made in a5db3d3 to fix a freezing bug. This updates the docstrings to reflect that they read from processes.
In the git.diff.Diff class, the _index_from_patch_format and _index_from_raw_format methods' docstrings had still described them as reading from streams, even though they have instead read from processes (and taken "proc", not "stream", arguments) since gitpython-developers#519 when the change was made in a5db3d3 to fix a freezing bug. This updates the docstrings to reflect that they read from processes.
poll/select
buffer-assembly code with pump-threads (Win TCs faling 90-->20!) and rework unicode handling in many places.Popen()
procs it withsubprocess.CREATE_NEW_PROCESS_GROUP
so that they can be killed.git-daemon
(instead ofgit daemon
); otherwise it detaches (unix-ism here) from parent git cmd, and then CANNOT DIE!Popen().proc.stdout/stderr
from the launching-thread, it freezes due to GIL/buffering.+Rework GitCommandError.str() and add TCs on unicode handling.
with GitConfigarser()
more systematically in TCs..git
file prior overwrite; Windows denied otherwise!git add <file>
case, PY2 fails when args are unicode.Must encode them with
locale.getpreferredencoding()
AND use SHELL.shell
intoexecute()
kwds, for overriding USE_SHELL percommand.
communicate()
in_clone()
with thread-pumps (UNNECESSARY, see this later discussion).with...
construct (not complete).Popen()
calls, to collect cmd usage.Apveyor results