#2942: Formaline: preserve symlinks in git source snapshots
Reporter:Roland Haas
Status:new
Milestone:
Version:
Type:bug
Priority:major
Component:

@Zach Etienne reports:

Formaline currently warns and skips symbolic links when updating its git source snapshot because update-git-repo.pl only accepts regular files. This causes valid symlinks, including symlinks to directories, to be omitted from the stored source tree.

Allow symbolic links through the existing file-type check. When the temporary hard-link staging tree can represent the symlink, the existing bulk git add path continues to handle it. If hard-link staging fails, add a symlink-specific fallback that writes the link target as a Git blob and stages it with mode 120000, which is Git's native representation for symbolic links.

Broken symlinks are still refused with a warning and removed from the desired tracked set, matching the existing behavior for missing files while making the broken-link case explicit.

The fallback path also avoids shell-quoting the Cactus filename directly by passing paths and link targets through environment variables before feeding them to git hash-object / git update-index.

--
Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2942/formaline-preserve-symlinks-in-git-source