Hello, Note 3 says
To see why Breaks is normally needed in addition to Replaces,
consider the case of a file in the package foo being taken over by
the package foo-data. Replaces will allow foo-data to be installed
and take over that file. However, without Breaks, nothing requires
foo to be upgraded to a newer version that knows it does not include
that file and instead depends on foo-data. Nothing would prevent
the new foo-data package from being installed and then removed,
removing the file that it took over from foo. After that operation,
the package manager would think the system was in a consistent
state, but the foo package would be missing one of its files.
This works for the foo/foo-data example in the text because these are
implied to be tightly coupled packages. But sometimes you do want
Replaces without Breaks, because the cost of Breaks is high.
bin:git-debpush is taking over /usr/bin/git-deborig from devscripts.
So devscripts is getting a "Recommends: git-debpush (>= 13.12)" and
git-debpush is getting a "Replaces: devscripts (<< 2.25.18)".
If we also add a Breaks, git-debpush won't be installable on older
Debian releases. Currently dgit and git-debpush are installable and
work all the way back to buster.
devscripts doesn't hard-depend on the functionality in git-deborig.
You can't even use it without installing some of devscript's Recommends,
like with other things in devscripts. Therefore it wouldn't make sense
to give up the high installability of git-debpush and trivial
backportability of src:dgit just so that if someone decides to install
devscripts and then install and remove git-debpush, they will be left
without git-deborig.
Ideally the text would reflect this but it's a significant task to work
it in without adding too much length.
I think many people in Debian mistakenly think you can't ever use
Replaces without Breaks; there is a Salsa CI 'missing-breaks' check that
enforces it that we are now having to disable for src:dgit.
--
Sean Whitton
signature.asc
Description: PGP signature

