Rest GithubAPI-如何确定文件是否实际上是符号链接?

Rest GithubAPI-如何确定文件是否实际上是符号链接?,rest,github,github-api,Rest,Github,Github Api,当通过GitHub API查询符号链接时,如果符号链接指向的是文件而不是目录,则会得到不同的结果。后者的表现更好,因为它返回“type”:“symlink”,作为其JSON的一部分,而前者返回“type”:“file”。以身作则,以身作则 当一个符号链接作为一个文件进行广告时,这是非常令人困惑的,因为获取其下载URL只会获取符号链接的目标,而不是文件内容 我如何判断一个文件是否是一个符号链接,而不是一个真正的文件 此外,为文件符号链接返回类型“file”的行为是一个彻头彻尾的错误吗?这似乎并不正

当通过GitHub API查询符号链接时,如果符号链接指向的是文件而不是目录,则会得到不同的结果。后者的表现更好,因为它返回
“type”:“symlink”
,作为其JSON的一部分,而前者返回
“type”:“file”
。以身作则,以身作则

当一个符号链接作为一个文件进行广告时,这是非常令人困惑的,因为获取其下载URL只会获取符号链接的目标,而不是文件内容

我如何判断一个文件是否是一个符号链接,而不是一个真正的文件


此外,为文件符号链接返回类型“file”的行为是一个彻头彻尾的错误吗?这似乎并不正确。

Git中的符号链接并不关心目标是文件还是目录。(或者即使目标存在。)

API没有为符号链接返回“文件”,该文件不是符号链接。这是一个普通文件。克隆存储库后:

% 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似乎正确地报告了这些信息。

很遗憾,答案是“您没有”。在API处于当前状态时,无法区分文件请求和符号链接。发件人:

如果请求的:路径指向一个符号链接,并且符号链接的目标是存储库中的一个普通文件,那么API将使用文件的内容[…]进行响应

否则,API将使用描述符号链接本身的对象进行响应:

我在GitHub的支持下提出了这个问题,他们确认没有办法做到这一点。他们提出向内部团队提出这一要求,但我认为这不太可能被接受


一种解决方法(不适用于所有情况)是请求文件,如果它是真实文件,则通过该文件返回文件内容;如果它是符号链接,则仅返回文件路径。

抱歉,我临时将符号链接设置为普通文件,以解决此错误。很快就要把它改回符号链接了:)好的,把文件改回符号链接。去吧。如果你打开了,你应该会看到它被GitHub报告为一个符号链接。啊哈,谢谢你的澄清。显然,我完全错了,因为这里记录了这一预期行为……奇怪。问题是符号链接声称是一个文件,但如果您获得
下载url
,您将只收到符号链接指向的路径,而不是文件的实际内容。也就是说,它声称是一个文件,但不是。非常令人费解,我无法处理:/