如何将符号链接添加到文件到gitlab存储库?
每次从gitlab运行管道时,本地符号链接都会被破坏。
关于如何为位于gitlab repo内部的文件夹创建符号链接的任何建议都会很棒。
答案 0 :(得分:2)
首先,要找出符号链接:
$ ln -s /Path/referenced/by/symlink symlink
Git还不知道这个文件。 git ls-files允许你检查你的索引(-s打印类似于stat的输出):
$ git ls-files -s ./symlink
$
现在,通过将符号链接的内容添加到索引,将其添加到Git对象库中。将文件添加到索引时,Git将其内容存储在Git对象库中。
$ git add ./symlink
那么,添加了什么?
$ git ls-files -s ./symlink
120000 1596f9db1b9610f238b78dd168ae33faa2dec15c 0 symlink
$
哈希是对在Git对象库中创建的压缩对象的引用。如果你查看.git / objects / 15 / 96f9db1b9610f238b78dd168ae33faa2dec15c,你可以检查这个对象。
120000是文件模式。对于常规文件,它将类似于100644,并且是链接的特殊模式。来自man git-config:
core.symlinks
如果为false,则将符号链接签出为包含链接文本的小型普通文件。 git-update-index(1)和git-add(1)不会将记录的类型更改为常规文件。
Use git cat-file -p
打印内容:
$ git cat-file -p 1596f9db1
/Path/referenced/by/symlink
那么,Git对符号链接做了什么:当你git checkout符号链接时,你要么得到一个文本文件,其中包含对完整文件系统路径的引用,要么是一个符号链接,具体取决于配置。 符号链接引用的数据不存储在存储库中。
答案 1 :(得分:0)
您可以在Git仓库中存储symlink (special entry 12000),但是,如this test所示,这会导致GitLab pipeline失败。
请参阅gitlab-ce issue 27542(尽管这是.gitlab-ci.yml
作为符号链接的特定情况)。
最好是管道首先重新创建符号链接,然后在后续步骤中使用正常构建进行处理:重新生成它似乎比存储它更好。