私はgitlab
にhttps
プロトコルでいくつかの(22)プライベートレポジトリを持っています。そして、私はbashスクリプトから一度ユーザ名とパスワードを提供するすべてのリポジトリをチェックアウトしたいと思います。しかし、それを機能させるように見えることはできません。 (任意の編集/最適化がはるかに高く評価される):ここで私が得たどのくらいですクローン/プルバルクgitリポジトリのbashスクリプト
#!/bin/bash
read -p "gitlab username: " user
read -sp "gitlab password: " pass
echo
read -p "branch to checkout: " branch
echo
repo[0]='.' #dir
repo[1]='repo.myhost.com/project/app.git' #repo url
repo[2]='plugins'
repo[3]='repo.myhost.com/project/app-core.git'
repo[4]='plugins'
repo[5]='repo.myhost.com/project/plugin1.git'
repo[6]='plugins'
repo[7]='repo.myhost.com/project/plugin2.git'
repo[8]='api-plugins'
repo[9]='repo.myhost.com/project/api-plugin1.git'
repo[10]='api-plugins'
repo[11]='repo.myhost.com/project/api-plugin2.git'
# will add more repo
total=${#repo[*]}
echo "checking out repositories..."
mkdir -p plugins
mkdir -p api-plugins
for ((i=0; i<${total}; i+=2));
do
dir=${repo[$i]}
trepo="https://$user:[email protected]${repo[$i+1]}"
echo "checking out ${repo[$i+1]} to directory $dir"...
if cd $dir; then git pull; else git clone -b branch --single-branch $trepo $dir; fi
echo
done
編集: マイgit pull
任意のパスワードを提供しない、それを行う方法がわかりません。私のパスワードには@
が入っています。
このスクリプトの結果:ユーザ名を尋ねる/再び
[email protected] ~/dev/projects $ ./checkout.sh
git username: myuser
git password:
project branch: master
checking out repositories...
checking out repo.myhost.com/project/app.git to directory ....
Username for 'https://repo.myhost.com': ^C
エラーは何ですか? '$ user'や' $ pass'に特殊文字が含まれている場合は、それらを '%'でエンコードしなければなりません。 '@'は '%40'です。 – phd
それはユーザー名とパスワードをもう一度求めています。私は質問を編集させてください。 –
'http:// $ user:$ pass @ repo.myhost.com/project/app.git'をコマンドラインから複製できますか? – phd