2016-08-25 3 views
0

現在、私のgitにファイルを追加するのに役立つジェンキンズでbashコマンドを設定しています。特定の条件でファイルを圧縮しないようにします。

前回のコミット以降に変更されたファイルをチェックしています。これらのファイルを解凍し、ディレクトリに解凍してsshを使用してサーバーに移動します。私のコミットを介してファイルを削除しない限り、これは問題なく動作します。

ファイルを削除すると、このファイルをzipに追加しようとしますが、そのファイルはもはや存在しないためエラーが発生します(明らかに)。

が最初に私のコマンドはこのように見えた:

git archive --output=publish/update.zip HEAD $(git diff --name-only $PREVIOUS $CURRENT)

現在、それは次のようになります。

git archive --output=publish/update.zip HEAD $(git diff --diff-filter=d --name-only $PREVIOUS $CURRENT)

--diff-filter=d検索からすべて削除されたファイルを除外しています。

git archive --output=publish/update.zip HEAD

だから何が起こることは頭の後に指定されたファイルがないされてのgitにワークスペース全体を引き起こして:しかし、私はこれを行うと、私のarchiveコマンドをコミットして削除したファイルのみが次のようになりますがされている場合 zipされ、サーバーに転送されます。明らかにこれは私が望むものではありません。

これを修正する方法を知っている人はいますか?

私の全体のbashコマンドは、直接

+0

? – rubenvb

+0

私は何かサーバー側に触れたくないので。これは、私が望むだけの数のサイトやサーバーに適用できるソリューションです。私はホスティングとvpsを共有している人がいるので、これが最善の方法だと感じました – NoSixties

答えて

0

thisなどの使用gitの相対レフリーとのzipコマンドを探します。

スクリプト全体のようなものかもしれない:あなたは(あなたがコミットしていること?)ファイルを送信しているのはなぜ手動だけでなく、それぞれのコミットのGitのプッシュ/プルを使用しての

# Create remove.sh so it removes at least one file - itself 
printf "rm %q\n" remove.sh $(git diff --diff-filter=D --name-only HEAD~1) > remove.sh 
# Create update.zip so it contains at least one file - remove.sh 
zip update.zip remove.sh $(git diff --diff-filter=d --name-only HEAD~1) 
関連する問題