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で管理しているファイルである必要があります。


ReadingCategory

grafi/Gitで管理している課題の提出用アーカイブを作成するスクリプト (最終更新日時 2013-05-20 19:48:11 更新者 grafi)