firstsun-dev_git-files-sync/tests/services
ClaudiaFang 114a5759a7 perf(push): GitHub batch push/delete via GraphQL createCommitOnBranch
GitHubService.pushBatch/deleteBatch previously created each file's blob
with a REST POST .../git/blobs call before the tree/commit/ref sequence,
so an N-file batch still cost N/8 rounds of latency-bound round trips even
with concurrency. Switched to GitHub's createCommitOnBranch GraphQL
mutation, which carries file content directly in the request body,
cutting an N-file batch to 2-3 HTTP calls total.

- Extracted BaseGitService.getLatestCommitSha from resolveGitHubStyleBaseTree,
  which is still used by pushSymlink (GraphQL's FileAddition has no file-mode
  field) and Gitea's batch methods (no GraphQL API).
- Added explicit handling for GraphQL's 200-status-with-errors-array failure
  mode, which REST's status-code check can't catch.
- Verified against a live GitHub repo: pushBatch/deleteBatch each produced
  one commit with correct content and blob shas.
2026-07-14 11:52:58 +00:00
..
git-service-base.test.ts perf(push): batch-commit push-all files + SHA-based diffing 2026-07-14 09:58:06 +00:00
gitea-service.test.ts perf(delete): batch-commit remote-only file deletion 2026-07-14 10:24:22 +00:00
github-service.test.ts perf(push): GitHub batch push/delete via GraphQL createCommitOnBranch 2026-07-14 11:52:58 +00:00
gitlab-service.test.ts perf(delete): batch-commit remote-only file deletion 2026-07-14 10:24:22 +00:00
service-test-helpers.ts fix(sync): clearer branch-not-found errors and connection test 2026-07-05 04:57:47 +00:00