[resolve] Turn on version tag in lockfiles by default.

The format change of lockfile on Fuchsia is complete. This patch
turns on the version tag in lockfiles by default. After this patch,
if a version tag is absent in lockfile, jiri will report an error.

Test: CQ
Change-Id: Ib314435169318364af94cce84ed1266ecbdd4bba
diff --git a/cmd/jiri/resolve.go b/cmd/jiri/resolve.go
index ce9a3e6..70dca7a 100644
--- a/cmd/jiri/resolve.go
+++ b/cmd/jiri/resolve.go
@@ -63,7 +63,8 @@
 	flags.BoolVar(&resolveFlag.localManifestFlag, "local-manifest", false, "Use local manifest")
 	flags.BoolVar(&resolveFlag.enablePackageLock, "enable-package-lock", true, "Enable resolving packages in lockfile")
 	flags.BoolVar(&resolveFlag.enableProjectLock, "enable-project-lock", false, "Enable resolving projects in lockfile")
-	flags.BoolVar(&resolveFlag.enablePackageVersion, "enable-package-version", false, "Enable version tag for packages in lockfile")
+	// TODO: Remove this placeholder flag after all references are deleted.
+	flags.BoolVar(&resolveFlag.enablePackageVersion, "enable-package-version", true, "Enable version tag for packages in lockfile")
 	flags.BoolVar(&resolveFlag.allowFloatingRefs, "allow-floating-refs", false, "Allow packages to be pinned to floating refs such as \"latest\"")
 }
 
diff --git a/project/manifest.go b/project/manifest.go
index a4cb253..8aa781f 100644
--- a/project/manifest.go
+++ b/project/manifest.go
@@ -630,7 +630,7 @@
 			}
 			for _, pkg := range pkgs {
 				if pkgLock, ok := ld.PackageLocks[PackageLockKey(pkg)]; ok {
-					if pkgLock.VersionTag != "" && pkgLock.VersionTag != v.Version && !jirix.IgnoreLockConflicts {
+					if pkgLock.VersionTag != v.Version && !jirix.IgnoreLockConflicts {
 						// Package version conflicts detected. Treated it as an error.
 						s := fmt.Sprintf("package %q has conflicting version in manifest and jiri.lock: %s:%s", v.Name, v.Version, pkgLock.VersionTag)
 						jirix.Logger.Debugf(s)
diff --git a/project/project.go b/project/project.go
index 3285cde..d6f3ed2 100644
--- a/project/project.go
+++ b/project/project.go
@@ -327,7 +327,7 @@
 // PackageLock describes locked version information for a jiri managed package.
 type PackageLock struct {
 	PackageName string `json:"package"`
-	VersionTag  string `json:"version,omitempty"`
+	VersionTag  string `json:"version"`
 	InstanceID  string `json:"instance_id"`
 }
 
@@ -374,11 +374,7 @@
 			}
 			version, ok := entryMap["version"].(string)
 			if !ok {
-				// Either "version" is not found or not valid,
-				// treated it as empty.
-				// TODO: haowei, once all lockfiles contains
-				// versions, change this case into an error.
-				version = ""
+				return nil, nil, fmt.Errorf("package version %+v is not a valid string", entryMap["version"])
 			}
 			pkgLock := PackageLock{
 				PackageName: pkgName,
@@ -1021,14 +1017,6 @@
 		return err
 	}
 
-	// purge version tags if enablePackageVersion is false.
-	if !resolveConfig.EnablePackageVersion() {
-		for k, v := range pkgLocks {
-			v.VersionTag = ""
-			pkgLocks[k] = v
-		}
-	}
-
 	return writeLockFile(jirix, resolveConfig.LockFilePath(), projectLocks, pkgLocks)
 }
 
diff --git a/project/project_test.go b/project/project_test.go
index aa9f38d..84d79da 100644
--- a/project/project_test.go
+++ b/project/project_test.go
@@ -2217,6 +2217,7 @@
 	projectLock0 := project.ProjectLock{"https://dart.googlesource.com/web_socket_channel.git", "dart", "1.0.9"}
 	pkgLock0 := project.PackageLock{
 		PackageName: "fuchsia/go/mac-amd64",
+		VersionTag:  "git_revision:b8bd7d94a2ae6c80ab8b6ed5900d3eeba8a777c3",
 		InstanceID:  "3c33b55c1a75b900536c91181805bb8668857341",
 	}