Write an empty commit (no file changes).
(
&self,
repo: &mut Repository,
parsed: &ParsedCommit,
header: ChangeHeader,
)
| 3206 | |
| 3207 | /// Write an empty commit (no file changes). |
| 3208 | fn write_empty_commit( |
| 3209 | &self, |
| 3210 | repo: &mut Repository, |
| 3211 | parsed: &ParsedCommit, |
| 3212 | header: ChangeHeader, |
| 3213 | ) -> CliResult<ImportedCommitInfo> { |
| 3214 | let commit_start = Instant::now(); |
| 3215 | let metadata = self.build_git_metadata(parsed, true, false); |
| 3216 | let write_outcome = repo |
| 3217 | .write_import_recorded(header, &[], metadata, &[], Default::default()) |
| 3218 | .map_err(|e| CliError::Internal(e.into()))?; |
| 3219 | // Index git SHA → Atomic change in GIT_SHA_INDEX |
| 3220 | let _ = repo.index_git_sha(&parsed.git_sha, &write_outcome.hash); |
| 3221 | |
| 3222 | trace_git_import(format!( |
| 3223 | "write {} files=0 recorded=0 add_batch=0ms record=0ms assemble={}ms save={}ms apply={}ms direct_graph={}ms direct_crdt={}ms commit={}ms cleanup=0ms total={}ms empty_commit=true", |
| 3224 | parsed.short_sha, |
| 3225 | write_outcome.timings.assemble_ms, |
| 3226 | write_outcome.timings.save_ms, |
| 3227 | write_outcome.timings.apply_ms, |
| 3228 | write_outcome.timings.direct_graph_ms, |
| 3229 | write_outcome.timings.direct_crdt_ms, |
| 3230 | write_outcome.timings.commit_ms, |
| 3231 | commit_start.elapsed().as_millis() |
| 3232 | )); |
| 3233 | |
| 3234 | Ok(ImportedCommitInfo { |
| 3235 | git_sha: parsed.git_sha.clone(), |
| 3236 | short_sha: parsed.short_sha.clone(), |
| 3237 | atomic_hash: write_outcome.hash, |
| 3238 | is_merge: parsed.is_merge, |
| 3239 | message: parsed.metadata.message.clone(), |
| 3240 | }) |
| 3241 | } |
| 3242 | |
| 3243 | /// Build git metadata for the change's unhashed field. |
| 3244 | fn build_git_metadata( |
no test coverage detected