Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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

I have the below shell script named as fetchGitRepo.sh:

#!/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

when I run this file passing webrtmt as the parameter like this ./fetchGitRepo.sh webrtmt,
I get the below error:

enter image description here

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Please help on how to fix this. Thanks

>Solution :

From the script in the question, when you run ./fetchGitRepo.sh webrtmt, there are some problems.

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

Here remote is assigned the value webrtmt. And then it’s used in git ls-remote --tags --exit-code --refs $remote. It’s okay to use git ls-remote outside of a git repository, but a valid url is needed. Here $remote is webrtmt. It’s an unknown remote and it’s not a valid url either. So git ls-remote complains and raises the fatal error.

I think it should be git ls-remote --tags --exit-code --refs $GITREPO instead. The pipeline commands retrieve the expected tags.

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

However, then this command is odd. ${GITREPO} is a url in ssh protocol to a remote repository, and we cannot use ls on it.

I’m afraid you don’t pass the right parameters to the script, or the script needs modification.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading