fix: fetch full git history instead of shallow clones

Previously, purgatory sync was using '--depth=1' when fetching OIDs from
remote servers. This created shallow clones with only 1-2 commits instead
of the complete git history.

The fix removes the '--depth=1' flag, allowing git to fetch the complete
commit history chain when fetching specific commit OIDs. This is the
correct behavior for GRASP - users cloning from our relay should get the
full repository history.

Changes:
- Remove '--depth=1' from git fetch command in RealSyncContext::fetch_oids
- Update comment to clarify that full history is fetched

Impact:
- Production repositories will now contain full git history
- Users cloning from the relay will get complete commit chains
- No more 'shallow' files in git repositories
- May be slightly slower due to fetching more data, but correctness is prioritized

Testing:
- All 564 tests pass (276 unit + 288 integration)
- No regressions in existing functionality

Fixes issue documented in work/active-issues/shallow-git-fetch.md
This commit is contained in:
DanConwayDev
2026-01-12 10:57:50 +00:00
parent 93227ce02e
commit f25eea8cc3
+2 -2
View File
@@ -361,8 +361,8 @@ impl SyncContext for RealSyncContext {
let naughty_list = self.git_naughty_list.clone();
tokio::task::spawn_blocking(move || -> Result<Vec<String>> {
// git fetch <remote> <sha1> <sha2> ... - fetch all OIDs in one command
let mut args = vec!["fetch", "--depth=1", &url];
// git fetch <remote> <sha1> <sha2> ... - fetch all OIDs with full history
let mut args = vec!["fetch", &url];
args.extend(missing_oids.iter().map(|s| s.as_str()));
let output = Command::new("git")