git的配置中是否可以组合多个条件incudeIf功能?

问题描述 投票:0回答:1
[includeIf "hasconfig:remote.*.url:[email protected]:**/**" && "gitdir:~/some/path/"]
    path = some/config

如何使用 git config 实现类似的行为?每个条件都可以分叉,但是如何使用逻辑“与”将它们组合起来?上面的代码片段不起作用,因为它在语法上破坏了 git 配置。

UPD:从技术上讲,可以通过省略一个条件并创建单独的文件,其中仅包含一个具有一个条件的

includeIf
,但它非常混乱,尤其是对于更大、更复杂的配置。我正在寻找更清晰的解决方案,逻辑上与我在代码片段中显示的更相似。

git git-config
1个回答
0
投票

在 Git 中,

includeIf
指令 旨在包含基于单个条件的指定路径的配置。我认为 Git 本身不支持在单个
includeIf
指令中使用“AND”等逻辑运算符来组合多个条件。

您提到的解决方法,在多个文件中使用嵌套的

includeIf
指令,是处理多个条件的一种方法,尽管有点麻烦。

更简洁的方法可能是使用脚本来管理 Git 配置。该脚本可以评估多个条件,并根据结果,符号链接或将适当的配置文件复制到所需位置。

#!/bin/bash

REMOTE_URL=$(git config --get remote.origin.url)
GIT_DIR=$(pwd)

# Check the conditions
if [[ "$REMOTE_URL" == "[email protected]:**/**" ]] && [[ "$GIT_DIR" == "$HOME/some/path/" ]]; then
    # If both conditions are true, symlink or copy the desired configuration
    ln -sf /path/to/some/config ~/.gitconfig
else
    # Otherwise, symlink or copy a default configuration
    ln -sf /path/to/default/config ~/.gitconfig
fi

该脚本将获取当前存储库的远程 URL 和工作目录路径。
它使用基本的

if
语句来评估条件。根据结果,它将所需的配置文件符号链接到
~/.gitconfig
路径。

您可以手动运行此脚本,或使用 Git 挂钩或其他自动化工具自动执行。这样,您就可以在 Git 的本机配置系统之外管理复杂的条件逻辑,并保持 Git 配置文件干净、简单。

© www.soinside.com 2019 - 2024. All rights reserved.