Use shortened SHA when displaying version to install (#31281)

This PR uses a shortened SHA when displaying the nightly version to
install in the update status, for nicer tooltip formatting.

Release Notes:

- N/A
This commit is contained in:
Joseph T. Lyons 2025-05-23 10:53:53 -04:00 committed by GitHub
parent 14d9a4189f
commit 3a1053bf0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 78 additions and 35 deletions

View file

@ -41,7 +41,7 @@ struct UpdateRequestBody {
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum VersionCheckType {
Sha(String),
Sha(AppCommitSha),
Semantic(SemanticVersion),
}
@ -510,7 +510,7 @@ impl AutoUpdater {
let fetched_release_data =
Self::get_latest_release(&this, "zed", OS, ARCH, release_channel, &mut cx).await?;
let fetched_version = fetched_release_data.clone().version;
let app_commit_sha = cx.update(|cx| AppCommitSha::try_global(cx).map(|sha| sha.0));
let app_commit_sha = cx.update(|cx| AppCommitSha::try_global(cx).map(|sha| sha.full()));
let newer_version = Self::check_for_newer_version(
*RELEASE_CHANNEL,
app_commit_sha,
@ -569,9 +569,9 @@ impl AutoUpdater {
if let AutoUpdateStatus::Updated { version, .. } = status {
match version {
VersionCheckType::Sha(cached_version) => {
let should_download = fetched_version != cached_version;
let newer_version =
should_download.then(|| VersionCheckType::Sha(fetched_version));
let should_download = fetched_version != cached_version.full();
let newer_version = should_download
.then(|| VersionCheckType::Sha(AppCommitSha::new(fetched_version)));
return Ok(newer_version);
}
VersionCheckType::Semantic(cached_version) => {
@ -590,7 +590,8 @@ impl AutoUpdater {
.flatten()
.map(|sha| fetched_version != sha)
.unwrap_or(true);
let newer_version = should_download.then(|| VersionCheckType::Sha(fetched_version));
let newer_version = should_download
.then(|| VersionCheckType::Sha(AppCommitSha::new(fetched_version)));
Ok(newer_version)
}
_ => Self::check_for_newer_version_non_nightly(
@ -1041,7 +1042,7 @@ mod tests {
assert_eq!(
newer_version.unwrap(),
Some(VersionCheckType::Sha(fetched_sha))
Some(VersionCheckType::Sha(AppCommitSha::new(fetched_sha)))
);
}
@ -1052,7 +1053,7 @@ mod tests {
let installed_version = SemanticVersion::new(1, 0, 0);
let status = AutoUpdateStatus::Updated {
binary_path: PathBuf::new(),
version: VersionCheckType::Sha("b".to_string()),
version: VersionCheckType::Sha(AppCommitSha::new("b".to_string())),
};
let fetched_sha = "b".to_string();
@ -1074,7 +1075,7 @@ mod tests {
let installed_version = SemanticVersion::new(1, 0, 0);
let status = AutoUpdateStatus::Updated {
binary_path: PathBuf::new(),
version: VersionCheckType::Sha("b".to_string()),
version: VersionCheckType::Sha(AppCommitSha::new("b".to_string())),
};
let fetched_sha = "c".to_string();
@ -1088,7 +1089,7 @@ mod tests {
assert_eq!(
newer_version.unwrap(),
Some(VersionCheckType::Sha(fetched_sha))
Some(VersionCheckType::Sha(AppCommitSha::new(fetched_sha)))
);
}
@ -1110,7 +1111,7 @@ mod tests {
assert_eq!(
newer_version.unwrap(),
Some(VersionCheckType::Sha(fetched_sha))
Some(VersionCheckType::Sha(AppCommitSha::new(fetched_sha)))
);
}
@ -1122,7 +1123,7 @@ mod tests {
let installed_version = SemanticVersion::new(1, 0, 0);
let status = AutoUpdateStatus::Updated {
binary_path: PathBuf::new(),
version: VersionCheckType::Sha("b".to_string()),
version: VersionCheckType::Sha(AppCommitSha::new("b".to_string())),
};
let fetched_sha = "b".to_string();
@ -1145,7 +1146,7 @@ mod tests {
let installed_version = SemanticVersion::new(1, 0, 0);
let status = AutoUpdateStatus::Updated {
binary_path: PathBuf::new(),
version: VersionCheckType::Sha("b".to_string()),
version: VersionCheckType::Sha(AppCommitSha::new("b".to_string())),
};
let fetched_sha = "c".to_string();
@ -1159,7 +1160,7 @@ mod tests {
assert_eq!(
newer_version.unwrap(),
Some(VersionCheckType::Sha(fetched_sha))
Some(VersionCheckType::Sha(AppCommitSha::new(fetched_sha)))
);
}
}