goelhardik / ignore

.gitignore based parser implemented in C# according to the .gitignore spec 2.29.2.
MIT License
50 stars 5 forks source link

Fix issue with MiddleSlash replacer #17

Closed jairbubbles closed 3 years ago

jairbubbles commented 3 years ago

As replacers are applied one after the other, the / added from a previous replacer (NonLeadingSingleStar) was incorrectly being detected by the MiddleSlash replacer and it added a ^ at the beginning of the pattern.

before after
foo* => ^foo[^/]*(/.*)?$ foo* => foo[^/]*(/.*)?$
codecov[bot] commented 3 years ago

Codecov Report

Merging #17 (f303e6c) into main (968617f) will not change coverage. The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##             main      #17   +/-   ##
=======================================
  Coverage   95.55%   95.55%           
=======================================
  Files           4        4           
  Lines         135      135           
=======================================
  Hits          129      129           
  Misses          6        6           
Impacted Files Coverage Δ
src/Ignore/ReplacerStash.cs 98.33% <100.00%> (ø)
src/Ignore/Ignore.cs 82.14% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 968617f...85c8db5. Read the comment docs.

pull-request-quantifier-deprecated[bot] commented 3 years ago

Pull Request Quantified (Extra Small)

This PR has 7 quantified lines of changes. In general, a change size of 50 to 200 lines is ideal for the best PR experience!


Quantification details

``` Label : Extra Small Size : +5 -2 Percentile : 2.8% Total files changed: 3 Change summary by file extension: .cs : +5 -2 ``` > Change counts above are quantified counts, based on the [PullRequestQuantifier customizations](https://github.com/microsoft/PullRequestQuantifier/blob/main/docs/prquantifier-yaml.md).

Why proper sizing of changes matters

Optimal pull request sizes drive a better predictable PR flow as they strike a balance between between PR complexity and PR review overhead. PRs within the optimal size (typical small, or medium sized PRs) mean: - Fast and predictable releases to production: - Optimal size changes are more likely to be reviewed faster with fewer iterations. - Similarity in low PR complexity drives similar review times. - Review quality is likely higher as complexity is lower: - Bugs are more likely to be detected. - Code inconsistencies are more likely to be detetcted. - Knowledge sharing is improved within the participants: - Small portions can be assimilated better. - Better engineering practices are exercised: - Solving big problems by dividing them in well contained, smaller problems. - Exercising separation of concerns within the code changes. #### What can I do to optimize my changes - Use the PullRequestQuantifier to quantify your PR accurately - Create a context profile for your repo using the [context generator](https://github.com/microsoft/PullRequestQuantifier/releases) - Exclude files that are not necessary to be reviewed or do not increase the review complexity. Example: Autogenerated code, docs, project IDE setting files, binaries, etc. Check out the `Excluded` section from your `prquantifier.yaml` context profile. - Understand your typical change complexity, drive towards the desired complexity by adjusting the label mapping in your `prquantifier.yaml` context profile. - Only use the labels that matter to you, [see context specification](./docs/prquantifier-yaml.md) to customize your `prquantifier.yaml` context profile. - Change your engineering behaviors - For PRs that fall outside of the desired spectrum, review the details and check if: - Your PR could be split in smaller, self-contained PRs instead - Your PR only solves one particular issue. (For example, don't refactor and code new features in the same PR). #### How to interpret the change counts in git diff output - One line was added: `+1 -0` - One line was deleted: `+0 -1` - One line was modified: `+1 -1` (git diff doesn't know about modified, it will interpret that line like one addition plus one deletion) - Change percentiles: Change characteristics (addition, deletion, modification) of this PR in relation to all other PRs within the repository.


Was this comment helpful? :thumbsup:  :ok_hand:  :thumbsdown: (Email) Customize PullRequestQuantifier for this repository.

jairbubbles commented 3 years ago

Awesome! Could you publish a new version?

I have been looking for a good library for gitignore for a quite time so I was happy to find this one.

I stumbled on https://github.com/markashleybell/MAB.DotIgnore but the behavior differs from the git command line.

I really like that you're testing against libGit2Sharp ! It would be even better to test against git command line.

goelhardik commented 3 years ago

@jairbubbles it's published 0.1.36. https://www.nuget.org/packages/Ignore/

Yes I saw that one too, but at that point for some reason I didn't like it.

I assumed libGit2Sharp's behavior would match git command line. Have you noticed if that's not the case?

jairbubbles commented 3 years ago

@goelhardik For the .gitignore rules I can't tell but we stoppped using the status computing from libgit2sharp in favor of using git status directly.