You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gitea/modules/repository
Jason Song 09b56fc069
Distinguish LFS object errors to ignore missing objects during migration (#31702)
Fix #31137.

Replace #31623 #31697.

When migrating LFS objects, if there's any object that failed (like some
objects are losted, which is not really critical), Gitea will stop
migrating LFS immediately but treat the migration as successful.

This PR checks the error according to the [LFS api
doc](https://github.com/git-lfs/git-lfs/blob/main/docs/api/batch.md#successful-responses).

> LFS object error codes should match HTTP status codes where possible:
> 
> - 404 - The object does not exist on the server.
> - 409 - The specified hash algorithm disagrees with the server's
acceptable options.
> - 410 - The object was removed by the owner.
> - 422 - Validation error.

If the error is `404`, it's safe to ignore it and continue migration.
Otherwise, stop the migration and mark it as failed to ensure data
integrity of LFS objects.

And maybe we should also ignore others errors (maybe `410`? I'm not sure
what's the difference between "does not exist" and "removed by the
owner".), we can add it later when some users report that they have
failed to migrate LFS because of an error which should be ignored.
6 months ago
..
branch.go Fix adopt repository has empty object name in database (#31333) 8 months ago
branch_test.go Make "sync branch" also sync object format and add tests (#30878) 9 months ago
collaborator.go Add user blocking (#29028) 11 months ago
collaborator_test.go Even more `db.DefaultContext` refactor (#27352) 1 year ago
commits.go Fix context cache bug & enable context cache for dashabord commits' authors (#26991) 1 year ago
commits_test.go Make offline mode as default to no connect external avatar service by default (#28548) 1 year ago
create.go Add user blocking (#29028) 11 months ago
create_test.go Move createrepository from module to service layer (#26927) 1 year ago
delete.go Even more `db.DefaultContext` refactor (#27352) 1 year ago
env.go Move database operations of merging a pull request to post receive hook and add a transaction (#30805) 9 months ago
fork.go Reduce usage of `db.DefaultContext` (#27073) 1 year ago
hooks.go Always write proc-receive hook for all git versions (#29287) 12 months ago
init.go Move generate from module to service (#29465) 11 months ago
init_test.go Make label templates have consistent behavior and priority (#23749) 2 years ago
license.go Move createrepository from module to service layer (#26927) 1 year ago
license_test.go Move createrepository from module to service layer (#26927) 1 year ago
main_test.go make writing main test easier (#27270) 1 year ago
push.go Improve ObjectFormat interface (#28496) 1 year ago
repo.go Distinguish LFS object errors to ignore missing objects during migration (#31702) 6 months ago
repo_test.go Don't remove all mirror repository's releases when mirroring (#28817) 1 year ago
temp.go Enable more `revive` linter rules (#30608) 9 months ago