|
85 | 85 |
|
86 | 86 | Base.:(==)(r1::GitRepo, r2::GitRepo) = |
87 | 87 | r1.source == r2.source && r1.rev == r2.rev && r1.subdir == r2.subdir |
88 | | - |
| 88 | +Base.hash(r::GitRepo, h::UInt) = |
| 89 | + foldr(hash, [r.source, r.rev, r.subdir], init=h) |
89 | 90 |
|
90 | 91 | mutable struct PackageSpec |
91 | 92 | name::Union{Nothing,String} |
@@ -119,11 +120,15 @@ PackageSpec(name::AbstractString, uuid::UUID) = PackageSpec(;name=name, uuid=uui |
119 | 120 | PackageSpec(name::AbstractString, version::VersionTypes) = PackageSpec(;name=name, version=version)::PackageSpec |
120 | 121 | PackageSpec(n::AbstractString, u::UUID, v::VersionTypes) = PackageSpec(;name=n, uuid=u, version=v)::PackageSpec |
121 | 122 |
|
| 123 | +# XXX: These definitions are a bit fishy. It seems to be used in an `==` call in status printing |
122 | 124 | function Base.:(==)(a::PackageSpec, b::PackageSpec) |
123 | 125 | return a.name == b.name && a.uuid == b.uuid && a.version == b.version && |
124 | 126 | a.tree_hash == b.tree_hash && a.repo == b.repo && a.path == b.path && |
125 | 127 | a.pinned == b.pinned |
126 | 128 | end |
| 129 | +function Base.hash(a::PackageSpec, h::UInt) |
| 130 | + return foldr(hash, [a.name, a.uuid, a.version, a.tree_hash, a.repo, a.path, a.pinned], init=h) |
| 131 | +end |
127 | 132 |
|
128 | 133 | function err_rep(pkg::PackageSpec) |
129 | 134 | x = pkg.name !== nothing && pkg.uuid !== nothing ? x = "$(pkg.name) [$(string(pkg.uuid)[1:8])]" : |
|
0 commit comments