Using repositories priorities

I’m confused about repositories priorities, I thought a repository with lower priority would be used only in case there’s no the same package in a repository with higher priority but this doesn’t seem to be the case.
For example, I need package “python-gnomekeyring” which can only be found in the GNOME Factory repository. I added it with priority 80 just to install that package, but I realized that a lot of other packages have been upgraded to a newer version from Factory, instead of keeping stable (and lower) versions from Main Repositories with priority 99.
I would like to keep my system stable and I don’t care to have the latest versions from Factory. After some search I understand that I should have removed GNOME Factory repository soon after the python-gnomekeyring install, but what if there’s an important update of that package and I cannot get it because I removed the repository?
Is there some config I’m missing so that all those packages that have been updated from Factory can be downgraded from Main repositories and keep staying updated ONLY from the stable Main repositories?

A higher priority number is a lower priority. You should give that factory repo a priority of 100 or higher. Or, better still, disable the factory repo. You can occasionally re-enable to check for updates, but it is best to normally leave it disabled.

Here, with Leap 42.1, I have most repos set to priority 99. I have packman set to priority 98, because I do want to give preference to packman when there’s a choice. And I have configure the update-test repo with a priority of 100, but I often leave that disabled.

Here’s the main story: Most of the time, priority is not important because the update usually won’t switch vendor. However, that doesn’t work with factory, because the factory packages have the same vendor information as the standard repo packages.

My giving a higher priority (lower priority number) to packman only has an effect when installing new software. It doesn’t affect updating, because of the vendor checking.

I configure the update-test repo mainly to occasionally peek at what updates are coming soon. But priority doesn’t work for that. The updates are patches, and priority seems to not be used when applying patches. So I usually makes sure that the update-test repo is disabled, except when I want to peek at what is coming soon (or if I want to install a patch early, as for the recent kernel update that fixed a problem I was having).

I hope this helped. If not, feel free to ask more questions.

Thanks so much, I was completely misunderstanding how priorities work! I gave my factory repo a priority of 100 followed by “zypper dup” and dozens of packages have been downgraded or “changed vendors”.
I will disable the factory repo as suggested, it’s only there for 1 package. Thanks again for your help, openSUSE rocks!

You made the right moves there.

Happy computing.