mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-10 06:14:22 +00:00
Introduce back reflist merging without conflict removal. aptly db cleanup requires
full reference list collection. #217 Fixes bug with aptly db cleanup removing conflicting packages.
This commit is contained in:
+4
-3
@@ -270,8 +270,9 @@ func (l *PackageRefList) Diff(r *PackageRefList, packageCollection *PackageColle
|
||||
|
||||
// Merge merges reflist r into current reflist. If overrideMatching, merge
|
||||
// replaces matching packages (by architecture/name) with reference from r.
|
||||
// Otherwise, all packages are saved.
|
||||
func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool) (result *PackageRefList) {
|
||||
// If ignoreConflicting is set, all packages are preserved, otherwise conflciting
|
||||
// packages are overwritten with packages from "right" snapshot.
|
||||
func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching, ignoreConflicting bool) (result *PackageRefList) {
|
||||
var overriddenArch, overridenName []byte
|
||||
|
||||
// pointer to left and right reflists
|
||||
@@ -314,7 +315,7 @@ func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool) (result
|
||||
partsR := bytes.Split(rr, []byte(" "))
|
||||
archR, nameR, versionR := partsR[0][1:], partsR[1], partsR[2]
|
||||
|
||||
if bytes.Equal(archL, archR) && bytes.Equal(nameL, nameR) && bytes.Equal(versionL, versionR) {
|
||||
if !ignoreConflicting && bytes.Equal(archL, archR) && bytes.Equal(nameL, nameR) && bytes.Equal(versionL, versionR) {
|
||||
// conflicting duplicates with same arch, name, version, but different file hash
|
||||
result.Refs = append(result.Refs, r.Refs[ir])
|
||||
il++
|
||||
|
||||
Reference in New Issue
Block a user