Zypp - different and still the same
zypp makes sure that it not just randomly moves between repositories of different vendors. Vendors in this case can be the (open)SUSE base packages and different buildservice repositories. If you want to do it via
zypper dup --from <repoid>
You get a lot of questions for “do you really want to change the vendor?”.
When you do that e.g. to test the next GNOME major release from GNOME:Next, that is a lot of questions. Like a few hundred times. My manual way involved putting 1\n into the mouse cut buffer and pasting with my middle mouse button.
This is actually not needed. Recently we prepared the blender. Since we did some major packaging changes, we wanted to test the proper distribution upgrading.
We create a /etc/zypp/vendors.d/99-blender.conf with the following content:
[main]
vendors=openSUSE,obs://build.opensuse.org/home:darix:branches:graphics
Now the packages from my branch project, are treated the same as if they were an official openSUSE package. zypper dup updates the packages happily now.
For the GNOME:Next update you would add a 99-gnome.conf with
[main]
vendors=openSUSE,obs://build.opensuse.org/GNOME,openSUSE GNOME Team
This also show cases another thing. You can actually set custom vendor strings for your OBS project.
osc meta prjconf GNOME:Next
[snip]
%if 0%{?_is_in_project}
Macros:
%vendor openSUSE GNOME Team
:Macros
%endif
[snip]
Of course your vendor string should not contain a comma, as it is the separator in the config file. The 0%{?_is_in_project} is an OBS internal macro which ensures that this macro is only used for GNOME:Next or any of its subprojects. Without it any project building against GNOME:Next, would also suddenly have the vendor set to openSUSE GNOME Team.