まあ、ちょっと変だと思います。
いくつかのコマンドを含む非常に単純な小さなstage.shスクリプトがあります。
if [ "$(whoami)" == 'David' ]; then
rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-0/modules/
rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-1/modules/
rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-7/modules/
rsync -a --delete-excluded --exclude-from=.rsyncrc $(pwd) ~/Sites/local-testing-2/modules/
echo "Checked out for David"
fi
現在ログインしているユーザーによっては、状況が異なる場合があります。ソースは現在のディレクトリです($(pwd)を参照)。現在のディレクトリをインポートして圧縮フォルダ出てください。フォルダを圧縮することはいいえを意味します。タール爆弾、zip形式でなければなりません。項目がフィルタリングされたので、rsync転送の出力を取得したいと思います。名前付きパイプを使ってみました。.rsyncrc
tar / zip圧縮中に除外するためにこのファイルを使用することもできます。次のように読みます。
# Meta
- stage.sh
- .rsyncrc
# Repo itself
- .git
- .gitignore
# Distribution Packages
- dist/
# Other files
- */.DS_Store
したがって、圧縮中にそのファイルを除外するために使用できることをお勧めします。実際にはテストしていませんが、可能であるかどうかはわかりません。出力は、rsync/zipping プロセスから除外された ./dist/ に配置する必要があります。
ボーナスポイント出力zipファイルの名前にバージョン番号(フォルダと同じ名前のファイルの中からインポートされ、「.php」が追加されたサフィックス)がある場合。バージョン番号のある行は常に次のようになります。$this->version = '0.0.1';
答え1
私はこのスクリプトを思い出しましたbuild.sh
。
foldername=$(dirname $(pwd))
projname=$(basename $(pwd))
rsync -a --exclude-from=.rsyncrc $(pwd) $TMPDIR
cd $TMPDIR
zip -rq $foldername/$projname/dist/$projname-latest.zip $projname
cd $foldername/$projname
このファイルはルートフォルダにあるので、プロジェクト全体をzipにパッケージ化したいときはいつでもそれを実行してsource build.sh
から距離/フォルダは商品名-最新.zip