gitextensions / gitextensions.pluginmanager

Package manager for downloading and installing Git Extensions plugins.
MIT License
13 stars 10 forks source link

Search by tags #30

Closed maraf closed 5 years ago

maraf commented 5 years ago

Resolves #27.

All searching is now in form of id: {searchTerm} tags:GitExtensions. This pre-filters packages marked as GitExtensions, than it loads a dependency graph (one query per package) and checks if dependency on GitExtensions.Extensibility exists.

Searching using nuget.org search syntax (https://docs.microsoft.com/en-us/nuget/consume-packages/finding-and-choosing-packages#search-syntax) is not ideal.

When search term is "g", it won't find "GitExtensions.SVN"; the user must type "git", or "extensions". This behavior can be even seen on the web:

It seems it doesn't work well on MyGet.

It doesn't work at all when source is a folder on disk.

Solution

mast-eu commented 5 years ago

Few questions / comments:

  1. How did you solve #27? E.g. do you append tags: GitExtensions to all search terms? Do you first filter for tags and afterwards for dependency on GitExtensions.Extensibility?

  2. When search term is "g", it won't find "GitExtensions.SVN"; the user must type "git", or "extensions".

MS is testing a new search on nuget.org these days. Might be the reason for some strange results. https://devblogs.microsoft.com/nuget/new-and-improved-nuget-search/

  1. It doesn't work at all when source is a folder on disk.

What is the use case for this? Do you use it for debugging or is the PM internally doing this at some point?

  1. It seems it doesn't work well on MyGet.

Any idea why? If not, I'm inclined to take this behaviour as a normal bug - if it affects only not preconfigured feeds (i.e. any feed except nuget.org).

  1. A solution for the #27.

Please write Closes #27 or Resolves #27. This way the issue will be automatically closed when the PR is merged. More info: https://help.github.com/en/articles/closing-issues-using-keywords#about-issue-references

  1. Is this PR a draft because you're still working on it?
maraf commented 5 years ago

Sorry for being so brief in PR description...

  1. All searching is now in form of id: {searchTerm} tags:GitExtensions. This pre-filters packages marked as GitExtensions, than it loads a dependency graph (one query per package) and checks if dependency on GitExtensions.Extensibility exists.

  2. Not sure, it seems like they split package id by pascal-case and dots and that it needs to match whole word (just observation).

  3. A folder on disk is a valid NuGet feed. I'm using it during debugging.

  4. Today I'm going to investigate, don't have any clues yet.

  5. Ook.

  6. It's a draft because it only works on nuget.org, today I'm going to give it a bit more time.

mast-eu commented 5 years ago

it seems like they split package id by pascal-case and dots and that it needs to match whole word (just observation).

I made the same observation. Searching for GitExtensions.SVN or id:GitExtensions.SVN or id:"GitExtensions.SVN" always gives results similar to Git OR Extensions OR SVN. Resulting in >10000 hits, although there is a package with the very same ID. Pretty useless for our case. Anyhow, searching for id:{searchTerm} tags:GitExtensions seems to entirely avoid the flood of not matching packages :+1:

maraf commented 5 years ago

@mast-eu Last thing I'm considering is skipping id search on feeds and filter packages in PM. It's quite dirty, but until we have hundreds of plugins, it will work. Thoughts?

mast-eu commented 5 years ago

Getting all packages with tags:GitExtensions from all configured feeds directly on startup? IMHO that's ok.

RussKie commented 5 years ago

👍

On Wed, Aug 28, 2019, 10:19 PM Martin Steinisch notifications@github.com wrote:

Getting all packages with tags:GitExtensions from all configured feeds directly on startup? IMHO that's ok.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/gitextensions/gitextensions.pluginmanager/pull/30?email_source=notifications&email_token=ABBTEXQQEGHSYXF5RHMDOW3QG3FTVA5CNFSM4IQIHBUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5MF77A#issuecomment-525885436, or mute the thread https://github.com/notifications/unsubscribe-auth/ABBTEXUWX2LHVMTZU4GIGFTQG3FTVANCNFSM4IQIHBUA .

maraf commented 5 years ago

I still need to fix two tests...

maraf commented 5 years ago

I have removed NuGet.Client update, because the never version doesn't support reordering of feeds, which we currently use. We can do the update later...

RussKie commented 5 years ago

FilterAsync?

On Fri, Aug 30, 2019, 4:54 PM Marek Fišera notifications@github.com wrote:

@maraf commented on this pull request.

In src/PackageManager.NuGet/Services/INuGetPackageFilter.cs https://github.com/gitextensions/gitextensions.pluginmanager/pull/30#discussion_r319522819 :

using System.Threading.Tasks;

namespace PackageManager.Services { public interface INuGetPackageFilter {

  • NuGetPackageFilterResult IsPassed(IPackageSearchMetadata package);
  • Task IsPassedAsync(SourceRepository repository, IPackageSearchMetadata package, CancellationToken cancellationToken);

Any suggestions? Does GetFilterResultAsync sounds better?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/gitextensions/gitextensions.pluginmanager/pull/30?email_source=notifications&email_token=ABBTEXW2ZRJC7G25RIYATH3QHERBJA5CNFSM4IQIHBUKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCDH3BYQ#discussion_r319522819, or mute the thread https://github.com/notifications/unsubscribe-auth/ABBTEXR4AEXRQ2PLD7JEOJLQHERBJANCNFSM4IQIHBUA .

mast-eu commented 5 years ago

Thank you