mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-04 05:10:40 +00:00
snapshot: first pass at newest-wins functionality.
This commit is contained in:
+3
-3
@@ -27,7 +27,7 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if repo.RefList() != nil {
|
if repo.RefList() != nil {
|
||||||
existingPackageRefs = existingPackageRefs.Merge(repo.RefList(), false)
|
existingPackageRefs = existingPackageRefs.Merge(repo.RefList(), false, false)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -41,7 +41,7 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if repo.RefList() != nil {
|
if repo.RefList() != nil {
|
||||||
existingPackageRefs = existingPackageRefs.Merge(repo.RefList(), false)
|
existingPackageRefs = existingPackageRefs.Merge(repo.RefList(), false, false)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -54,7 +54,7 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
existingPackageRefs = existingPackageRefs.Merge(snapshot.RefList(), false)
|
existingPackageRefs = existingPackageRefs.Merge(snapshot.RefList(), false, false)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func aptlySnapshotMerge(cmd *commander.Command, args []string) error {
|
|||||||
result := sources[0].RefList()
|
result := sources[0].RefList()
|
||||||
|
|
||||||
for i := 1; i < len(sources); i++ {
|
for i := 1; i < len(sources); i++ {
|
||||||
result = result.Merge(sources[i].RefList(), true)
|
result = result.Merge(sources[i].RefList(), true, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceDescription := make([]string, len(sources))
|
sourceDescription := make([]string, len(sources))
|
||||||
|
|||||||
+22
-3
@@ -219,9 +219,13 @@ func (l *PackageRefList) Diff(r *PackageRefList, packageCollection *PackageColle
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge merges reflist r into current reflist. If overrideMatching, merge replaces matching packages (by architecture/name)
|
// Merge merges reflist r into current reflist. If overrideMatching, merge
|
||||||
// with reference from r, otherwise all packages are saved.
|
// replaces matching packages (by architecture/name) with reference from r. If
|
||||||
func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool) (result *PackageRefList) {
|
// newestWins, compare versions between common packages and take the latest from
|
||||||
|
// the set. Otherwise, all packages are saved.
|
||||||
|
func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool,
|
||||||
|
newestWins bool) (result *PackageRefList) {
|
||||||
|
|
||||||
// pointer to left and right reflists
|
// pointer to left and right reflists
|
||||||
il, ir := 0, 0
|
il, ir := 0, 0
|
||||||
// length of reflists
|
// length of reflists
|
||||||
@@ -269,6 +273,21 @@ func (l *PackageRefList) Merge(r *PackageRefList, overrideMatching bool) (result
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if newestWins {
|
||||||
|
partsL := bytes.Split(rl, []byte(" "))
|
||||||
|
verL := string(partsL[2])
|
||||||
|
|
||||||
|
partsR := bytes.Split(rr, []byte(" "))
|
||||||
|
verR := string(partsR[2])
|
||||||
|
|
||||||
|
vres := CompareVersions(verL, verR)
|
||||||
|
if vres <= 0 {
|
||||||
|
result.Refs = append(result.Refs, r.Refs[ir])
|
||||||
|
il++
|
||||||
|
ir++
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// otherwise append smallest of two
|
// otherwise append smallest of two
|
||||||
if rel < 0 {
|
if rel < 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user