Index: lib/src/source/git.dart |
diff --git a/lib/src/source/git.dart b/lib/src/source/git.dart |
index 452b6890e3d4054a8c8352f0bb6b019ea984bbb3..90f417777f39f93bfebad9dd9b7498c9d85be0fd 100644 |
--- a/lib/src/source/git.dart |
+++ b/lib/src/source/git.dart |
@@ -28,7 +28,7 @@ class GitSource extends Source { |
/// |
/// If passed, [reference] is the Git reference. It defaults to `"HEAD"`. |
PackageRef refFor(String name, String url, {String reference}) => |
- new PackageRef(name, "git", {'url': url, 'ref': reference ?? 'HEAD'}); |
+ new PackageRef(name, this, {'url': url, 'ref': reference ?? 'HEAD'}); |
/// Given a valid git package description, returns the URL of the repository |
/// it pulls from. |
@@ -56,7 +56,7 @@ class GitSource extends Source { |
"string."); |
} |
- return new PackageRef(name, this.name, { |
+ return new PackageRef(name, this, { |
"url": description["url"], |
"ref": description["ref"] ?? "HEAD" |
}); |
@@ -86,7 +86,7 @@ class GitSource extends Source { |
"must be a string."); |
} |
- return new PackageId(name, this.name, version, { |
+ return new PackageId(name, this, version, { |
"url": description["url"], |
"ref": description["ref"] ?? "HEAD", |
"resolved-ref": description["resolved-ref"] |
@@ -132,6 +132,12 @@ class GitSource extends Source { |
return true; |
} |
+ |
+ int hashDescription(description) { |
+ // Don't include the resolved ref in the hash code because we ignore it in |
+ // [descriptionsEqual] if only one description defines it. |
+ return description['url'].hashCode ^ description['ref'].hashCode; |
+ } |
} |
/// The [BoundSource] for [GitSource]. |
@@ -165,7 +171,7 @@ class BoundGitSource extends CachedSource { |
var pubspec = await _describeUncached(ref, revision); |
return [ |
- new PackageId(ref.name, source.name, pubspec.version, { |
+ new PackageId(ref.name, source, pubspec.version, { |
'url': ref.description['url'], |
'ref': ref.description['ref'], |
'resolved-ref': revision |
@@ -257,7 +263,7 @@ class BoundGitSource extends CachedSource { |
packages.sort(Package.orderByNameAndVersion); |
for (var package in packages) { |
- var id = new PackageId(package.name, source.name, package.version, null); |
+ var id = new PackageId(package.name, source, package.version, null); |
log.message("Resetting Git repository for " |
"${log.bold(package.name)} ${package.version}..."); |