0

I want to migrate a gitlab repository that contains LFS files from gitlab server A to gitlab server B.

Here're the steps I've done:

  1. Click Settings -> General -> Export project in the repository at gitlab server A. Then download the exported file repo.tar.gz.
  2. Create a new repository in server B using repo.tar.gz file.

The problem I have with the above steps is that I can't download the LFS files in server B.

When I click the download button of one of the LFS files, I get a 404 Page Not Found error.

enter image description here

Is this a bug of gitlab?

My gitlab version is 12.5.2.

I can successfully download the LFS files in server A.

If I use git clone https://... to download the repository at server B, I get the following error:

Cloning into 'repo-at-server-b'...
remote: Enumerating objects: 248971, done.
remote: Counting objects: 100% (248971/248971), done.
remote: Compressing objects: 100% (163634/163634), done.
remote: Total 248971 (delta 61741), reused 248971 (delta 61741)
Receiving objects: 100% (248971/248971), 1.60 GiB | 42.92 MiB/s, done.
Resolving deltas: 100% (61741/61741), done.
Checking out files: 100% (226626/226626), done.
Downloading lfs_files/art.tar.xz (7.0 MB)
Error downloading object: lfs_files/art.tar.xz (b0d6758): Smudge error: Error downloading lfs_files/art.tar.xz (b0d67582c9a992b4f8a01fdde0f96999385435b98763251e64520e263e76ac0d): [b0d67582c9a992b4f8a01fdde0f96999385435b98763251e64520e263e76ac0d] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it

Errors logged to /data-disk/debug_git_lfs/repo-at-server-b/.git/lfs/logs/20210220T110106.03414397.log
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: lfs_files/art.tar.xz: smudge filter lfs failed
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

It looks like that something went wrong when exporting the repository from server A, or when importing into server B.

I've tried the answer in this post, but fail at git lfs pull command.

The error message I get from git lfs pull is [c889004e16f35973ac3d695f7939e388060c425fd98d708e5076aefb67q15065] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it

Brian
  • 12,145
  • 20
  • 90
  • 153

1 Answers1

0

I can only speak about Atlassian's bitbucket - not gitlab, but I guess the principle behavior is the same, since LFS is a common git extension. LFS objects will be stored in a separate area on the file system (for bitbucket e.g /data/git-lfs/storage) whereas normal repositories are stored in a different place (bitbucket:/data/repositories) When a large file will be pushed to the repository, then the object itself will be stored in the git-lfs storage area, in the file in the repository itself only a pointer to the object using a SHA256 hash. When you now export your repository, only the repository will be exported as it is, which means only the reference to your LFS object but not the object itself.

For a procedure how to properly migrate, just google like 'moving GIT lfs between hosts' or 'git lfs migrate example' and check if there are solutions described for gitlab

TimTaylor
  • 146
  • 1
  • 4