2017-01-23 20 views
2

git repo(github.com)からスパースチェックアウトを行いたいですか? 更新(このスクリプトが動作するようになりました - トリックは、このbashスクリプトメイドのpom.xml 前に「/」を追加しました:...私はエコー「のpom.xml」から行を削除した場合gitスパースチェックアウトとgithubによるシャロークローン問題

#!/bin/sh 

export baseUrl=https://github.com/ 
export repoAc=spring-projects 
export repo=spring-data-examples 

#export baseUrl=https://github.com/ 
#export repoAc=tgkprog 
#export repo=testGit 

echo "Cd change to correct dir like ~/u/w/s/github/" 
cd ~/u/w/s3/github/ 
if [ $? -eq 0 ]; then 
    echo OK 
else 
    echo"FAIL: bad dir to cd to " 
    exit 0 
fi 
echo "Have you edited this script? Else crl -c to stop now" 
echo "you are at dir:" 
pwd 
echo "If exists contents of $repoAc/$repo :" 
ls $repoAc/$repo 
echo "1/2 will delete folder $repoAc/$repo ctrl-c to cancel. Press enter to continue" 
read -rsp $'Press Ctrl-c to cancel or any other key to continue \n' -n1 key 
echo "2/2 will delete folder $repo ctrl-c to cancel. Press enter to continue " 
read -rsp $'Press Ctrl-c to cancel or any other key to continue \n' -n1 key 
mkdir $repoAc 
cd $repoAc 
rm -fR ./$repo 
git init $repo 
cd $repo 
if [ $? -eq 0 ]; then 
    echo OK 
else 
    echo"FAIL: bad dir to cd to " 
    exit 0 
fi 
# TODO if error stop here. 
git remote add origin $baseUrl$repoAc/$repo 
git config core.sparsecheckout true 
echo "elasticsearch/*" >> .git/info/sparse-checkout 
echo "/README.md" >> .git/info/sparse-checkout 
#echo "h/" >> .git/info/sparse-checkout 
#echo "s/" >> .git/info/sparse-checkout 
echo "web/*" >> .git/info/sparse-checkout 
echo "jpa/*" >> .git/info/sparse-checkout 
echo "map/*" >> .git/info/sparse-checkout 
echo "multi-store/*" >> .git/info/sparse-checkout 
echo "/pom.xml" >> .git/info/sparse-checkout 
#echo "!*/pom.xml" >> .git/info/sparse-checkout 
#paths we do not want 
echo "!no1/" >> .git/info/sparse-checkout 
echo "!neo4j/" >> .git/info/sparse-checkout 
echo "!cassandra/" >> .git/info/sparse-checkout 
echo "!solr/" >> .git/info/sparse-checkout 
git pull --depth=1 origin master 
# wget https://raw.githubusercontent.com/spring-projects/spring-data-examples/master/pom.xml 
echo "Done $repo" 
ls -al 

を、エコーまで」 Solrの/ *」>> .git /情報/

を除外する私はサブディレクトリを取得します:。 BOM elasticsearch JPAマップウェブ

しかしない親ポンポンを

私は エコー追加した場合、 "のpom.xmlを" >> .git/info/spa rse-checkout

次に、すべて(すべてのサブディレクトリ)を取得します。理由は分かりませんか?

アップデート2:

以前しようとしていた。パスを追加

echo "cassandra/*" >> .git/info/exclude 

意味は、私は除外/ファイル.git /情報をチェックアウトしないようにgitをしたいが、そのファイルには、追加のためであり、唯一ではないコミットチェックアウトのために。チェックアウトのために

ので、同じよう.git /情報/スパース・チェックアウトをファイルに追加する必要があります。

!カサンドラ/

コード行:

echo "!cassandra/" >>.git/info/sparse-checkout 

があることありません。

+1

は '.gitを充填/ info/exclude'はあなたのケースで意味をなさない。コミット/追加時には考慮されますが、チェックアウト時には考慮されません。 – max630

+1

'@echo off'はバッチファイル用です。シェルスクリプトには必要ないし有用ではありません。 –

+0

@ max630はい、あなたの権利。 .git/info/sparse-checkoutのパスの前にbang(!)を使用して、インクルードしないようにマークする必要があります。 – tgkprog

答えて

1

"/pom.xml"を使用します。そうでない場合は、solr/pom.xmlのようなファイルがチェックアウトされ、必要なディレクトリが作成されます。

チェックアウト時に無視すべきではないパスパターン、.git /情報/まばらなチェックアウトに入れたが、袋に先行し、例えばまた

(!):! カサンドラ/

+0

はい、あなたの権利。あなたの答えを編集して、負のパスを作る正しい方法を説明してください。 – tgkprog

+1

'sparse-checkout'に書き込まれていないものがあれば、デフォルトでIIRCはチェックアウトされません。しかし明示的であることはいつもより良い – max630

関連する問題