-
Notifications
You must be signed in to change notification settings - Fork 669
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
Regex excludes cause existing patterns to behave differently #6245
Comments
@sagamusix So it's now syncing some folder foo/.svn/pristine and its contents? |
Exactly, and previously these files were ignored as intended. |
@sagamusix It works for me. The pattern gets translated to Idea I have: You're on windows, and we're seeing a previous inconsistency between windows and linux. On linux we used FNM_PATHNAME so a * never matched a /. Maybe on windows a * (incorrectly!) did match a slash? Since we no longer rely on |
Two paths were matched before I realized and aborted the sync; one was |
I have changed the pattern to just |
@sagamusix changing too |
So do I understand correctly that what I wanted previously only worked by chance? |
Yes, unfortunately. But I don't think it's acceptable to break patterns windows users had added. I think we'll need to put in extra work to make sure that migrates nicely. And that performance issue you're seeing also definitely needs to be investigated. |
I'm looking at allowing |
Unfortunately matching behaved differently on Windows. This patch restores the previous matching behavior but still uses the new regular expression based matching. Further work will hopefully unify the behavior between platforms without breaking backwards compatibility.
Unfortunately matching behaved differently on Windows. This patch restores the previous matching behavior but still uses the new regular expression based matching. Further work will hopefully unify the behavior between platforms without breaking backwards compatibility.
Unfortunately matching behaved differently on Windows. This patch restores the previous matching behavior but still uses the new regular expression based matching. Further work will hopefully unify the behavior between platforms without breaking backwards compatibility.
@sagamusix I've adjusted the regex matching on windows to be backwards compatible. Could you check out the new 2.5 nightly when it becomes available? |
Judging from the timestamps, I guess the current nightly build doesn't have the fix yet, right? |
The patterns seem to work as intended again, although initial discovery still seems to have slowed down considerably. The discovery took almost exactly 5 hours, which used to be a matter of minutes. To make things worse, it ended with an "operation cancelled" error from the server. :) |
@sagamusix Ouch, that's horrible. Let's move back to the optimization task #5017. Thanks for testing. |
From @sagamusix #5017
Summary from investigation:
The client used
fnmatch
withFNM_PATHNAME
on unix andPathMatchSpec
on Windows. These had different behavior when expanding*
patterns:fnmatch
never expands it to/
, while that is allowed on windows. That means*/foo/bar
would matcha/b/foo/bar
on windows, but not on other oses.The new regex exclude matching code implements the
fnmatch
behavior on all platforms thereby changing the meaning of existing patterns on windows.The text was updated successfully, but these errors were encountered: