出于某种原因,我看了看,/usr/bin/hg
看到了一段奇怪的代码:
libdir = '@LIBDIR@'
if libdir != '@' 'LIBDIR' '@':
...
if 语句看起来像重言式/矛盾,在 Python 中'@LIBDIR@'
应该总是相等'@' 'LIBDIR' '@'
,所以代码永远不会运行。在什么条件下会'@LIBDIR@'
变成别的东西?
出于某种原因,我看了看,/usr/bin/hg
看到了一段奇怪的代码:
libdir = '@LIBDIR@'
if libdir != '@' 'LIBDIR' '@':
...
if 语句看起来像重言式/矛盾,在 Python 中'@LIBDIR@'
应该总是相等'@' 'LIBDIR' '@'
,所以代码永远不会运行。在什么条件下会'@LIBDIR@'
变成别的东西?
我对 Mercurial本身并不熟悉,但对我@LIBDIR@
来说,很明显它打算通过自动搜索和替换来替换为其他字符串,例如在安装脚本中。该if
语句检查这实际上是否已经完成:搜索不会找到@LIBDIR@
,'@' 'LIBDIR' '@'
因此这是一种将变量的值与其原始占位符值if
进行比较的方法,而不会触发语句中占位符的替换。
换句话说,该if
语句是在询问“如果在安装时指定了库路径,则对其进行验证并将其添加到 Python 模块搜索路径中”。
我个人会将这些信息放在配置文件中,因为这对用户来说更容易编辑并且不太可能被更新破坏,但看起来 Mercurial 正在使用源代码修改方法进行配置。
提交消息说
setup/hg:总是从安装位置加载 Mercurial。
这提供了两个新功能:
- Mercurial 可以安装到非标准位置,而无需设置 PYTHONPATH。
- 多个安装可以从不同的位置使用 Mercurial。
我想你可以给 Dan 发电子邮件以获得更详细的答案