繁体   English   中英

致命:“webrtmt”似乎不是 git 存储库无法从远程读取

[英]fatal: 'webrtmt' does not appear to be a git repository could not read from remote

我有以下名为fetchGitRepo.sh的 shell 脚本:

#!/bin/bash

if [ -z $1 ]; then
        echo "Missing first argument (git repository path)"
        exit 1
fi
arg=$1
CHECKOUT_DIR=$(pwd)/$arg
BASE_DIR=$(pwd)
set -euo pipefail
basename=${1##*/}

if [[ $# -lt 1 ]]; then
    printf '%s: Clone the latest tag on remote.\n' "$basename" >&2
    printf 'Usage: %s [other args] <remote>\n' "$basename" >&2
    exit 1
fi
remote=${*: -1} # Get last argument
echo BASE_DIR: $(pwd)
echo $CHECKOUT_DIR
if [ "$arg" == "webrtmt" ]; then
        echo $arg >> ${arg}.txt
        GITREPO=git@github5.cisco.com:CUCM/"$arg".git
        # previousWebrtmtReleaseTag=$(git ls-remote --tags $GITREPO |grep "\."|grep -v -|grep -v {| sort -n -t. -k3 -k4)
        previousWebrtmtReleaseTag=$(git ls-remote --tags --exit-code --refs $remote \
  | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' | tail -n1)
echo "YYYYYYYYYYYY:"$previousWebrtmtReleaseTag
else
        GITREPO=git@github5.cisco.com:GoldenGate/"$arg".git
       # recentTag=$(git ls-remote --tags $GITREPO |grep "\."|grep -v -|grep -v {| sort -n -t. -k3 -k4)
       recentTag=$(git ls-remote --tags --exit-code --refs $remote \
  | sed -E 's/^[[:xdigit:]]+[[:space:]]+refs\/tags\/(.+)/\1/g' | tail -n1)
        echo "TTTTTTTTTTTTTTTTTTTTTTTTTT:"$recentTag
fi
echo $CHECKOUT_DIR
# Ensure that we can read the git repo location (NFS)
ls -l ${GITREPO} &> /dev/null

# Ensure that CHECKOUT_DIR exists
mkdir -p ${CHECKOUT_DIR}

# Jump into the checkout location so that we can perform the checkout/pull
 cd ${CHECKOUT_DIR}

function repoclone() {
if [ -n "$username" ]; then
        echo "Build through Jenkins job"
        echo $arg
        if [ "$arg" == "webrtmt" ]; then
                previousWebrtmtReleaseTag=$(git ls-remote --tags https://$username:$password@github5.cisco.com/CUCM/"$arg" |grep "\."|grep -v -|grep -v {| sort -n -t. -k3 -k4)
                tagNumber=${previousWebrtmtReleaseTag##*v}
                echo "webrtmt= v$tagNumber" >> "$arg.txt"
                echo "webrtmt= v$tagNumber" >> durlov.txt
                sh ${BASE_DIR}/git-clone-latest-tag.sh https://$username:$password@github5.cisco.com/CUCM/"$arg"
        else
                recentTag=$(git ls-remote --tags https://$username:$password@github5.cisco.com/GoldenGate/"$arg".git |grep "\."|grep -v -|grep -v {| sort -n -t. -k3 -k4)
                tag = ${recentTag##*v}
                echo "$arg= v$tag" >> "$arg.txt"
                sh ${BASE_DIR}/git-clone-latest-tag.sh https://$username:$password@github5.cisco.com/GoldenGate/"$arg".git
        fi
else
        echo $GITREPO
        if  [ "$arg" == "webrtmt" ]; then
         set -x
            echo "webrtmt= $previousWebrtmtReleaseTag" >> ${arg}.txt
            #git clone -b $ta ${GITREPO}
            echo Current working dir: ${BASE_DIR}
            git remote add ${arg} ${GITREPO}
            #sh ${BASE_DIR}/git-clone-latest-tag.sh ${GITREPO}
            # Ensure that we can read the git repo location (NFS)
            git clone ${GITREPO}
            git checkout tags/$previousWebrtmtReleaseTag
        else
        set -x
            echo "$arg= $recentTag" >> ${arg}.txt
            #git clone -b $tag --single-branch --depth 1 ${GITREPO}
            git remote add ${arg} ${GITREPO}
            #sh ${BASE_DIR}/git-clone-latest-tag.sh ${GITREPO}
            git clone ${GITREPO}
 git checkout tags/$recentTag
        fi
fi
}

if [ ! -d ${CHECKOUT_DIR}/.git ]; then
        cd ${CHECKOUT_DIR}
        # Clone the git repository
        echo "Cloning Git repository to ${CHECKOUT_DIR}"
        repoclone
else
        rm -rf $CHECKOUT_DIR
        echo $CHECKOUT_DIR
        echo "Directory deleted ,new one will be created"
        mkdir -p ${CHECKOUT_DIR}
        cd ${CHECKOUT_DIR}
        repoclone
fi

cd $CHECKOUT_DIR
echo "111111111111111111$CHECKOUT_DIR"
if [ "$arg" == "webrtmt" ]; then
 gradle -Pproduction=true build
else
        make all

fi

当我运行这个文件传递 webrtmt 作为这样的参数./fetchGitRepo.sh webrtmt ,我得到以下错误:

在此处输入图像描述

请帮助解决此问题。 谢谢

从问题中的脚本来看,当您运行./fetchGitRepo.sh webrtmt时,会出现一些问题。

remote=${*: -1} # Get last argument

这里remote被赋值为webrtmt 然后在git ls-remote --tags --exit-code --refs $remote中使用。 可以在 git 存储库之外使用git ls-remote ,但需要有效的 url。 这里$remotewebrtmt 这是一个未知的遥控器,也不是有效的 url。 所以git ls-remote抱怨并引发了致命错误。

我认为应该是git ls-remote --tags --exit-code --refs $GITREPO 管道命令检索预期的标签。

ls -l ${GITREPO} &> /dev/null

但是,这个命令很奇怪。 ${GITREPO}是 ssh 协议中的 url 到远程存储库,我们不能在其上使用ls

恐怕您没有将正确的参数传递给脚本,或者脚本需要修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM