Skip to main content

Scenario: lfs-upstream

Known bug, #407. This page shows what git-splice does today, bug included. See all known bugs.

The upstream stores a file in Git LFS, and clone fails: Git LFS looks for the file's content on the monorepo's LFS server, which doesn't have it. git-splice doesn't support Git LFS yet, #407. Cloning by hand works.

  • Monorepo, on main: one commit, pushed to its own remote, https://git.example.com/monorepo.git.
  • Upstream (file://$UPSTREAM): model.bin, stored in Git LFS, as its .gitattributes says.

Git LFS is installed, as git lfs install sets it up. The upstream is named by its file:// URL, as Git LFS transfers content to and from a local repository only through those.

Output​

setup.bash builds this state:

$ build_scenario scenario_lfs_upstream

clone fetches the upstream's commits, but not the content Git LFS keeps apart from them. The checkout asks the monorepo's LFS server for it, and fails:

$ git splice clone "file://$UPSTREAM" vendor/a
=== vendor/a: fetching file://$UPSTREAM
Downloading vendor/a/model.bin (19 B)
Error downloading object: vendor/a/model.bin (824c087): Smudge error: Error downloading vendor/a/model.bin (824c08711f4323285490080552966d5b256f5793cd45f70ce97878b7fa81e70a): error transferring "824c08711f4323285490080552966d5b256f5793cd45f70ce97878b7fa81e70a": [0] remote missing object 824c08711f4323285490080552966d5b256f5793cd45f70ce97878b7fa81e70a

Errors logged to '.*/monorepo/\.git/lfs/logs/.*\.log'\. (regex)
Use `git lfs logs last` to view the log.
error: external filter 'git-lfs filter-process' failed
fatal: vendor/a/model.bin: smudge filter lfs failed
!! vendor/a: clone failed
[1]

The failed clone leaves its files behind, untracked:

$ git status --short
?? vendor/