当通过GitHub API查询符号链接时,如果符号链接指向文件而不是目录,则会得到不同的结果。后者表现得更好,因为它返回"type": "symlink"
作为其JSON的一部分,而前者返回"type": "file"
。示例file symlink,示例directory symlink。
当符号链接将自己宣传为文件时,它非常令人困惑,因为获取其下载URL只会让您获得符号链接的目标而不是文件内容。
如何判断文件是否实际是符号链接,而不是真实文件?
此外,是返回类型的行为"文件"对于文件符号链接一个彻头彻尾的bug?它似乎不对。
答案 0 :(得分:0)
Git中的符号链接并不关心目标是文件还是目录。 (或者即使目标存在。)
API 不返回"文件" for symlink有问题的文件是不是符号链接。它是一个常规文件。克隆您的存储库后:
% ls -Flas muzhack/files/littleBitsMidiNotes.ino
4 -rw-r--r-- 1 user group 3247 Jun 7 12:00 muzhack/files/littleBitsMidiNotes.ino
% git ls-files --stage muzhack/files/littleBitsMidiNotes.ino
100644 08918243048ae4a4f57e69a34776e9a0bd1ec7af 0 muzhack/files/littleBitsMidiNotes.ino
模式100644
(由ls-files
返回的第一个字段)表示这是一个常规文件。相比之下,GitHub作为符号链接报告的条目实际上是一个符号链接:
% ls -Flas muzhack/files/adapter-board-files
4 lrwxr-xr-x 1 user group 25 Jun 7 12:00 muzhack/files/adapter-board-files@ -> ../../adapter-board-files
% git ls-files --stage muzhack/files/adapter-board-files
120000 ef17a5e7b4bef4e51f19dc6b4c360c95cbb223c8 0 muzhack/files/adapter-board-files
因此,GitHub API似乎正在正确报告此信息。
答案 1 :(得分:0)
不幸的是,答案是“您不”。 (使用API的当前状态)无法区分文件请求和符号链接。来自the documentation:
如果所请求的:path指向符号链接,并且符号链接的目标是存储库中的普通文件,则API会以文件的内容进行响应[...]
否则,API会以一个对象来描述符号链接本身:
我在GitHub支持下提出了这一点,他们确认没有办法做到这一点。他们提出要向内部团队提出要求,但我想这不太可能得到解决。
一种解决方法(并非在所有情况下都适用)是通过https://raw.githubusercontent.com/请求文件,如果它是真实文件,则返回文件内容,如果是符号链接,则仅返回文件路径。