@@ -90,7 +90,7 @@ type SafeWriter struct {
90
90
// - If oldLock is provided without newLock, error.
91
91
//
92
92
// - If vendor is VendorAlways without a newLock, error.
93
- func NewSafeWriter (manifest * Manifest , oldLock , newLock * Lock , vendor VendorBehavior , prune gps.CascadingPruneOptions ) (* SafeWriter , error ) {
93
+ func NewSafeWriter (manifest * Manifest , oldLock , newLock * Lock , vendor VendorBehavior , prune gps.CascadingPruneOptions , status map [ string ]verify. VendorStatus ) (* SafeWriter , error ) {
94
94
sw := & SafeWriter {
95
95
Manifest : manifest ,
96
96
lock : newLock ,
@@ -114,7 +114,18 @@ func NewSafeWriter(manifest *Manifest, oldLock, newLock *Lock, vendor VendorBeha
114
114
case VendorAlways :
115
115
sw .writeVendor = true
116
116
case VendorOnChanged :
117
- sw .writeVendor = sw .lockDiff .Changed (anyExceptHash & ^ verify .InputImportsChanged ) || (newLock != nil && oldLock == nil )
117
+ if newLock != nil && oldLock == nil {
118
+ sw .writeVendor = true
119
+ } else if sw .lockDiff .Changed (anyExceptHash & ^ verify .InputImportsChanged ) {
120
+ sw .writeVendor = true
121
+ } else {
122
+ for _ , stat := range status {
123
+ if stat != verify .NoMismatch {
124
+ sw .writeVendor = true
125
+ break
126
+ }
127
+ }
128
+ }
118
129
}
119
130
120
131
if sw .writeVendor && newLock == nil {
@@ -442,7 +453,7 @@ func NewDeltaWriter(oldLock, newLock *Lock, status map[string]verify.VendorStatu
442
453
if err != nil && os .IsNotExist (err ) {
443
454
// Provided dir does not exist, so there's no disk contents to compare
444
455
// against. Fall back to the old SafeWriter.
445
- return NewSafeWriter (nil , oldLock , newLock , behavior , prune )
456
+ return NewSafeWriter (nil , oldLock , newLock , behavior , prune , status )
446
457
}
447
458
448
459
sw .lockDiff = verify .DiffLocks (oldLock , newLock )
0 commit comments