Gitで管理している課題の提出用アーカイブを作成するスクリプト
追記: echo -n
はOS Xの/bin/sh
で機能しなかったので、printfを用いるように修正しました。-- grafi 2013-05-20 19:48:11
#!/bin/sh id=051310XX #(自分の学生証番号を入れる) print_usage () { echo "usage: kadar <os|fl|hw> <number> {files}" >&2 exit 1 } if [ "x${2}" = "x" -o "x$(printf "${2}" | sed s/[0-9][0-9]*//)" != "x" ]; then print_usage fi case "${1}" in "os" ) comp=gzip ext=gz name=$(printf "report%d" "${2}");; "hw" ) comp=xz ext=xz name=$(printf "kadai%d_%s" "${2}" "${id}");; "fl" ) comp=gzip ext=gz name=$(printf "%d-%s" "${2}" "${id#??}");; * ) print_usage;; esac shift 2 git archive --prefix="${name}/" --format=tar HEAD "$@" | ${comp} > "${name}.tar.${ext}"
これに適当な名前をつけて、適当にパスの通ったところに入れる。ぼくはkadar
という実行ファイル名にしています。
まず課題を終えて、Gitでコミットします。カレントディレクトリを、提出しようとしている課題に関係するファイルを入れているディレクトリにした上で、
kadar (hwかosかfl) (レポートの回数)
を実行すると、カレントディレクトリ以下のGitで管理されているファイルが入った、各実験で要求されているファイル名やフォーマットに沿ったアーカイブが作成されます。
カレントディレクトリの一部のファイルだけを入れたい場合は、
kadar (hwかosかfl) (レポートの回数) {ファイル名一覧}
とすればいいです。ファイル名一覧に含めるファイルも、Gitで管理しているファイルである必要があります。