aboutsummaryrefslogtreecommitdiff
path: root/delta_write_select.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-02-20 12:40:45 +0800
committerGravatar Runxi Yu2026-02-20 12:57:31 +0800
commit86d95962ec8f2329aa591c00031bde68b0bab777 (patch)
tree3c870bd356f0094d077cabe223e512c5f7e003aa /delta_write_select.go
parentRevert "README: Clarify pack/delta/thin features" (diff)
signatureNo signature
Revert "packed, delta: Some improvements for base selection"
This reverts commit c1f17baa57bad0f61e639fc39c8cd5e4872142f6.
Diffstat (limited to 'delta_write_select.go')
-rw-r--r--delta_write_select.go50
1 files changed, 0 insertions, 50 deletions
diff --git a/delta_write_select.go b/delta_write_select.go
index db6fc022..2911867d 100644
--- a/delta_write_select.go
+++ b/delta_write_select.go
@@ -6,11 +6,9 @@ type objectToPack struct {
id Hash
ty ObjectType
body []byte
- size int
offset uint64
deltaDepth int
inPack bool
- preferred bool
}
type deltaContext struct {
@@ -38,8 +36,6 @@ func pickDeltaBase(ctx *deltaContext, obj *objectToPack, seed uint64, minSavings
}
var bestBase *objectToPack
var bestDelta []byte
- var bestPreferred *objectToPack
- var bestPreferredDelta []byte
for i := len(ctx.candidates) - 1; i >= 0; i-- {
base := ctx.candidates[i]
if base.ty != ObjectTypeBlob {
@@ -48,60 +44,14 @@ func pickDeltaBase(ctx *deltaContext, obj *objectToPack, seed uint64, minSavings
if base.deltaDepth >= maxDepth {
continue
}
- if !deltaSizeOk(base, obj, maxDepth) {
- continue
- }
delta, ok := deltaTry(base.body, obj.body, seed, minSavings)
- if base.preferred {
- delta, ok = deltaTry(base.body, obj.body, seed, 0)
- }
if !ok {
continue
}
- if base.preferred {
- if bestPreferredDelta == nil || len(delta) < len(bestPreferredDelta) {
- bestPreferredDelta = delta
- bestPreferred = base
- }
- continue
- }
if bestDelta == nil || len(delta) < len(bestDelta) {
bestDelta = delta
bestBase = base
}
}
- if bestPreferred != nil {
- return bestPreferred, bestPreferredDelta
- }
return bestBase, bestDelta
}
-
-func deltaSizeOk(base, target *objectToPack, maxDepth int) bool {
- if base == nil || target == nil {
- return false
- }
- if base.size <= 0 || target.size <= 0 {
- return false
- }
- if maxDepth <= 0 {
- maxDepth = 1
- }
- if base.deltaDepth >= maxDepth {
- return false
- }
- if target.size < base.size/32 {
- return false
- }
- maxSize := target.size/2 - 32
- if maxSize <= 0 {
- return false
- }
- sizediff := 0
- if base.size < target.size {
- sizediff = target.size - base.size
- }
- if sizediff >= maxSize {
- return false
- }
- return true
-}