Git:Windows 上的 Git 存储库中的 .git\HEAD 内容中使用的路径分隔符是什么?
Git: What's the path separator used in the content of the .git\HEAD in Git repositories on Windows?
标题说明了一切,但是例如,如果 Git 存储库的 HEAD
在任何 well-used Git 实现上指向 ref/heads/master
对于 Windows,以下哪项是文件 .git/HEAD
的内容...哎呀,.git\HEAD
:
ref: refs/heads/master
,或
ref: refs\heads\master
?
无论哪种方式,我都需要计算绝对路径<git project>\.git\refs\heads\master
,但我没有Windows环境,我无法知道使用的是哪种形式!不胜感激。
背景:我正在修改一个 Haskell 库来实现一个宏,该宏在编译时将 Haskell 项目的 Git 修订散列嵌入到它们的源代码中(非常适合实现--version
选项!)。当我们编译调用该宏的程序时,会调用 git
;然而甚至在此之前,当构建工具正在检查是否需要重新编译时,我们不能调用 git
并且所做的只是简单的文件更新检查!因此,每次编译时,我们都必须计算并保存HEAD
所指向的参考文件的路径,以便下次检查参考文件是否更新。问题是我想制作库 cross-platform 但我不知道如何计算 Windows 上的参考文件的路径,因为我不知道原始形式。
HEAD
使用引用名称而不是路径分隔符。 Git 始终在引用名称中使用正斜杠,即使在 Windows 上也是如此。在任何平台上的参考名称中都不允许使用反斜杠。
由于 Windows 也允许使用正斜杠路径分隔符(除非您使用的是 UNC 路径),因此通常在任何地方都使用正斜杠是安全的,除非您知道自己有特殊需要。
标题说明了一切,但是例如,如果 Git 存储库的 HEAD
在任何 well-used Git 实现上指向 ref/heads/master
对于 Windows,以下哪项是文件 .git/HEAD
的内容...哎呀,.git\HEAD
:
ref: refs/heads/master
,或ref: refs\heads\master
?
无论哪种方式,我都需要计算绝对路径<git project>\.git\refs\heads\master
,但我没有Windows环境,我无法知道使用的是哪种形式!不胜感激。
背景:我正在修改一个 Haskell 库来实现一个宏,该宏在编译时将 Haskell 项目的 Git 修订散列嵌入到它们的源代码中(非常适合实现--version
选项!)。当我们编译调用该宏的程序时,会调用 git
;然而甚至在此之前,当构建工具正在检查是否需要重新编译时,我们不能调用 git
并且所做的只是简单的文件更新检查!因此,每次编译时,我们都必须计算并保存HEAD
所指向的参考文件的路径,以便下次检查参考文件是否更新。问题是我想制作库 cross-platform 但我不知道如何计算 Windows 上的参考文件的路径,因为我不知道原始形式。
HEAD
使用引用名称而不是路径分隔符。 Git 始终在引用名称中使用正斜杠,即使在 Windows 上也是如此。在任何平台上的参考名称中都不允许使用反斜杠。
由于 Windows 也允许使用正斜杠路径分隔符(除非您使用的是 UNC 路径),因此通常在任何地方都使用正斜杠是安全的,除非您知道自己有特殊需要。