获取git子模块路径,基于url

lymnna71  于 2023-02-28  发布在  Git
关注(0)|答案(2)|浏览(156)

我感兴趣的是URL已知的特定子模块的路径。

[submodule "foo"]
  path = app/foo
  url = https://my-known-url
  branch = main

我可以使用hacky grep命令获得路径,但我不相信这不会在某一天中断。

cat .gitmodules | grep -B 1 -A 1 my-known-url | grep path | cut -d'=' -f 2 | xargs

我也尝试过使用git config --file .gitmodules ...,但没有成功,一个警告是,这必须与以git@ssh.dev.azure.com:v3开头的azure devops ssh一起使用,例如,--get-urlmatch似乎不喜欢这种格式。

gzszwxb4

gzszwxb41#

我想这就行了:

#!/bin/bash

git config --file .gitmodules --list |
  awk -vURL="$1" -F= '$2 == URL {print $1}' |
  sed 's/\.url$/.path/' |
  xargs -IKEY git config --file .gitmodules --get KEY
llmtgqce

llmtgqce2#

Shell脚本,循环遍历URL,找到一个并打印相应的.path

#! /bin/sh
set -e
find_url="$1"

git config -f .gitmodules --get-regexp '^submodule\..*\.url$' |
while read name url; do
    if [ "$url" = "$find_url" ]; then
        path_key="`echo $name | sed s/\.url$/.path/`"
        git config -f .gitmodules --get "$path_key"
        break
    fi
done

相关问题