gitea/services/repository
Giteabot 6203ae764a
Distinguish LFS object errors to ignore missing objects during migration (#31702) (#31745)
Backport #31702 by @wolfogre

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.

Co-authored-by: Jason Song <i@wolfogre.com>
2024-07-31 23:06:37 +08:00
..
archiver Move context from modules to services (#29440) 2024-02-27 08:12:22 +01:00
commitstatus Fix automerge will not work because of some events haven't been triggered (#30780) (#31039) 2024-05-22 02:08:05 +00:00
files Make sure git version&feature are always prepared (#30877) (#30879) 2024-05-07 02:07:33 +00:00
adopt.go Fix incorrect default branch when adopt a repository (#30912) (#30928) 2024-05-10 12:00:01 +00:00
adopt_test.go Use more specific test methods (#24265) 2023-04-22 17:56:27 -04:00
avatar.go Improve avatar uploading / resizing / compressing, remove Fomantic card module (#24653) 2023-05-13 20:59:11 +02:00
avatar_test.go Use context parameter in services/repository (#23186) 2023-02-28 16:17:51 -06:00
branch.go Fix a branch divergence cache bug (#31659) (#31661) 2024-07-19 13:12:23 -04:00
cache.go Always enable caches (#28527) 2023-12-19 09:29:05 +00:00
check.go Update tool dependencies (#29030) 2024-02-02 19:11:39 -05:00
collaboration.go Add user blocking (#29028) 2024-03-04 08:16:03 +00:00
collaboration_test.go Add user blocking (#29028) 2024-03-04 08:16:03 +00:00
commit.go Move context from modules to services (#29440) 2024-02-27 08:12:22 +01:00
contributors_graph.go Enable more `revive` linter rules (#30608) 2024-04-22 11:48:42 +00:00
contributors_graph_test.go Refactor cache and disable go-chi cache (#30417) 2024-04-13 08:38:44 +00:00
create.go Move get/set default branch from git package to gitrepo package to hide repopath (#29126) 2024-03-08 15:30:10 +08:00
create_test.go bump to use go 1.22 (#29119) 2024-02-14 18:19:57 +00:00
delete.go Clarify permission "HasAccess" behavior (#30585) 2024-04-20 03:15:04 +00:00
delete_test.go Delete repos of org when purge delete user (#27273) 2023-10-19 13:16:11 +00:00
fork.go Add user blocking (#29028) 2024-03-04 08:16:03 +00:00
fork_test.go Add option to prohibit fork if user reached maximum limit of repositories (#21848) 2022-12-27 15:21:14 -06:00
generate.go Move get/set default branch from git package to gitrepo package to hide repopath (#29126) 2024-03-08 15:30:10 +08:00
generate_test.go Move generate from module to service (#29465) 2024-02-28 14:40:36 +01:00
hooks.go Simplify how git repositories are opened (#28937) 2024-01-27 21:09:51 +01:00
init.go Move generate from module to service (#29465) 2024-02-28 14:40:36 +01:00
lfs.go Use the database object format name but not read from git repoisitory everytime and fix possible migration wrong objectformat when migrating a sha256 repository (#29294) 2024-02-24 06:55:19 +00:00
lfs_test.go Remove GetByBean method because sometimes it's danger when query condition parameter is zero and also introduce new generic methods (#28220) 2023-12-07 15:27:36 +08:00
main_test.go make writing main test easier (#27270) 2023-09-28 01:38:53 +00:00
migrate.go Distinguish LFS object errors to ignore missing objects during migration (#31702) (#31745) 2024-07-31 23:06:37 +08:00
push.go Fix a branch divergence cache bug (#31659) (#31661) 2024-07-19 13:12:23 -04:00
repository.go Fix "force private" logic (#31012) (#31021) 2024-05-20 10:27:52 +08:00
repository_test.go refactor some functions to support ctx as first parameter (#21878) 2022-12-03 10:48:26 +08:00
review.go Use context parameter in services/repository (#23186) 2023-02-28 16:17:51 -06:00
review_test.go Use context parameter in services/repository (#23186) 2023-02-28 16:17:51 -06:00
setting.go Fix an actions schedule bug (#28942) 2024-01-31 14:55:12 +00:00
template.go Move generate from module to service (#29465) 2024-02-28 14:40:36 +01:00
transfer.go Clarify permission "HasAccess" behavior (#30585) 2024-04-20 03:15:04 +00:00
transfer_test.go Clarify permission "HasAccess" behavior (#30585) 2024-04-20 03:15:04 +00:00