BASHプロンプトで、次のことができます。
~/repo$ HISTORY_LOG=$(git log $(get_old_version)..$(get_new_version)); [[ ! -z ${HISTOR_LOG} ]] && ( echo "Some header"; echo "${HISTORY_LOG}" )
git log
私が実際に持っているものの明らかに単純化されたバージョンはどこにありますか。
makeファイルには、ターゲットの一部として次のコマンドがあります。
$(OUTPUT): $(INPUT)
...
echo "Some header" > $(LOG_FILE)
git log $(shell get_old_version)..$(shell get_new_version) >> $(LOG_FILE)
makeターゲットをbashコマンドのように動作するように書き直すにはどうすればよいですか?
次の行送りを行うと、フィードが削除されます。
$(OUTPUT): $(INPUT)
...
HISTORY_LOG="$(shell git log $(shell get_old_version)..$(shell get_new_version))" ; \
[ -z "$${HISTORY_LOG}" ] && \
true || \
(echo "Some header" ; echo "$${HISTORY_LOG}" )
実行すると次のようになります。
~/repo $ make
commit 2b4d87b0e64d129028c1a7a0b46ccde2f42c5e93 Author: Jamie <Jamie@mymail.com> Date: Mon Jun 25 18:46:27 2012 -0400 Issue #468: This sucker's been sped up.
そして私が好むのは:
~/repo $ make
commit 2b4d87b0e64d129028c1a7a0b46ccde2f42c5e93
Author: Jamie <Jamie@mymail.com>
Date: Mon Jun 25 18:46:27 2012 -0400
Issue #468: This sucker's been sped up.
問題は、ではなくmake
でコマンドを実行することだと思います。とにかく、ポータブルソリューションがあればそれを探しています。/bin/sh
/bin/bash