123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package fieldpath
- type APIVersion string
- type VersionedSet struct {
- *Set
- APIVersion APIVersion
- Applied bool
- }
- type ManagedFields map[string]*VersionedSet
- func (lhs ManagedFields) Difference(rhs ManagedFields) ManagedFields {
- diff := ManagedFields{}
- for manager, left := range lhs {
- right, ok := rhs[manager]
- if !ok {
- if !left.Empty() {
- diff[manager] = left
- }
- continue
- }
-
-
-
- if left.APIVersion != right.APIVersion {
- diff[manager] = right
- continue
- }
- newSet := left.Difference(right.Set).Union(right.Difference(left.Set))
- if !newSet.Empty() {
- diff[manager] = &VersionedSet{
- Set: newSet,
- APIVersion: right.APIVersion,
- }
- }
- }
- for manager, set := range rhs {
- if _, ok := lhs[manager]; ok {
-
- continue
- }
- if !set.Empty() {
- diff[manager] = set
- }
- }
- return diff
- }
|