2016-10-12 8 views
1

私は複数のバージョンを共有しているプロジェクトのディレクトリを持っていて、構成ごとに別々のファイルをチェックアウトしている簡単なスクリプトを作成しようとしました。bashスクリプトを使ってgit checkoutをパラメータ化するにはどうすればいいですか?

コンフィグファイルは次のようになります。

<module_name1> <branch_name1> 
<module_name2> <branch_name2> 

スクリプト:

編集

while read path branch; 
do 
    cd $path 
    echo 
    echo $path 
    echo "$branch" 
    git checkout "$branch" 
    cd .. 
done < 2.6 

残念ながらgitのブランチ名を認識していないようですが、エラーが生じ、このように渡さ:

' did not match any file(s) known to git.

私はこのようなスクリプトを修正する方法や、別の方法で作成する方法をアドバイスしたいと思いますか?

EDIT(または設定可能な質量checkoutingのためかもしれないいくつかのツール...?):

いくつかのテストの後、空の文字列として '$の枝' で渡された値のgitが考えているようだ(Iそれ以前にエコーで内容が確認済み)

+0

'echo git checkout "$ branch"によって手動で呼び出される値は正しく動作するので、手作業で渡されたパラメータをgitで解決する際の問題 –

答えて

0

、したがってトリミング後に作業を開始し、carriegeリターンを追加することによって、それらを破壊。

FIX(それははるかに厄介な、それはエコー出力を破損していたと私は唯一の代わりに、コンソールの別のファイルにその結果をストリーミングした後、それを見つけたということでした): 支店= $(エコー「$

0

git submodulesをご覧ください。

+0

残念ながら、それはgerritインフラストラクチャ/私の会社でのアクセスを許可して動作しません –

0

複数の変数への入力行を分割する使用readの能力:どうやら別のファイルから変数をこのように読ん

while read path branch; do 
    cd "$path" 
    git checkout "$branch" 
    ... 
+0

それは、スクリプトを短縮しかし、パラメータ自体が適切に渡された(私はこれをチェックした 'エコーチェックアウト "$ブランチ" 上記パラメータの実際の通過に問題があるようです –

関連する問題