#!/bin/bash while getopts m: OPT ; do case $OPT in m) message="$OPTARG" ;; \?) echo "Usage : -m 'コミットメッセージ' パス" 1>&2 exit 1 ;; esac done # オプション部分を切り捨てる。 shift `expr $OPTIND - 1` if [ "$1" ]; then path=$@ else # パスの指定がなければ、カレントフォルダ以下を path='./' fi if [ "$message" ]; then # 新規ファイルは svn add addstr=`svn st $path | grep -E '^\?' | sed -e s/"^?[ ]*"//` if [ $addstr ]; then svn add $addstr fi # syntax error がないかを確認 for f in `svn st $path | grep -E "(php|phtml)" | sed -e s/"^.[ ]*"//`;do php -l $f done str=`svn st $path | grep -E "(php|phtml)" | sed -e s/"^.[ ]*"//` # svn diff を表示 svn diff $str echo $str"をコミットしますか : ";read y if [[ $y = 'y' ]]; then echo "svn ci -m $message `echo $str`" svn ci -m "$message" `echo $str` fi else echo "コミットコメントを入力してください" exit 1 fi
2012年6月30日土曜日
[shell][svn]コミット前にすべてのファイルのシンタックスチェック
仕事で、phpを使うときがある。
自動テストフレームワークがないので、目視チェックのテスト。
とは言え、最低限シンタックスエラーだけは出さないようにしなければならない。
というわけで、 svn commit する前に phplintをしてくれるようにしたスクリプト。
[shell]特定フォルダ以下のファイルを自動add&commit
仕事でsvnを使うようになった。
フォルダによっては、svn addしたファイルは、そのままコミットしたいときがある。
たとえば画像フォルダは、基本的に自分の環境が最新状態なので、つねに最新版をコミットしてくれればいい。
そんなときは、このスクリプト。
あらたに追加されたファイルは自動で「svn add」して、変更があったファイルをコミットする。
フォルダによっては、svn addしたファイルは、そのままコミットしたいときがある。
たとえば画像フォルダは、基本的に自分の環境が最新状態なので、つねに最新版をコミットしてくれればいい。
そんなときは、このスクリプト。
あらたに追加されたファイルは自動で「svn add」して、変更があったファイルをコミットする。
#!/bin/bash # Usage : ciimage.sh "コメント名" if [ "$1" ]; then PROJ="/home/amachi/project" addstr=`svn st $PROJ/hoge/image/ | grep -E '^\?' | sed -e s/"^?[ ]*"//` addstr="$addstr `svn st $PROJ/fuga/fuga/image | grep -E '^\?' | sed -e s/"^?[ ]*"//`" addstr=`echo $addstr | sed 's/^ *//g'` if [ -n "$addstr" ];then svn add $addstr fi #念のため、phpファイルをはじく str=`svn st $PROJ/hoge/image/ | grep -vE "php" | sed -e s/"^.[ ]*"//` str="$str `svn st $PROJ/fuga/fuga/image | grep -vE "php" | sed -e s/"^.[ ]*"//`" str=`echo $str | sed 's/^ *//g'` if [ -n "$str" ];then svn ci -m "$1" $str echo 'commited!!' else echo 'コミットするファイルがありませんでした' fi else echo "コミットコメントを入力してください" exit 1 fi
[shell]ファイル名の一括置換
シェルスクリプトで、特定フォルダ以下のファイル名を一括置換したいとき、以下のようにすればいい。
for f in *;do newFile=`echo "$f" | sed -r s/[^0-9]//g` mv "$f" "`echo $newFile`" done
登録:
投稿 (Atom)