我已经编写了一套 Git 附加组件,供内部使用。它需要在全局模板目录中安装一些 Git 挂钩,但我无法以编程方式定位实际安装 Git 的目录。我在我们的开发服务器上找到了安装:
/usr/share/git-core
/usr/local/share/git-core
/usr/local/git/share/git-core
由于以前的安装,某些服务器在多个这些目录中安装了 Git。我正在寻找一种方法来找出将从中复制模板文件的真实模板目录。git init
有问题的git init
代码在copy_templates()
:
if (!template_dir)
template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
if (!template_dir)
template_dir = init_db_template_dir;
if (!template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
return;
DEFAULT_GIT_TEMPLATE_DIR
但是,此代码仅在实际要复制模板时运行,因此似乎没有办法事先找出真正的内容。
到目前为止,我最好的想法是(伪代码):
for each possible directory:
create a random_filename
create a file in the template directory with $random_filename
`git init` a new temporary repository
check for the existence of $random_filename in the new repo
if it exists, we found the real template directory
这仍然受到必须如上所述构建“可能”目录列表的限制。
有没有更好的办法?