1と2のリビジョン間の差分
2013-05-01 19:45:29時点のリビジョン1
サイズ: 1789
編集者: grafi
コメント:
2013-05-20 19:48:11時点のリビジョン2
サイズ: 1966
編集者: grafi
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 5: 行 5:
~~~.sh
追記: `echo -n`はOS Xの`/bin/sh`で機能しなかったので、printfを用いるように修正しました。-- [[grafi]] <<DateTime(2013-05-20T19:48:11+0900)>>

~~~
:::sh
行 15: 行 19:
if [ "x${2}" = "x" -o "x$(echo -n "${2}" | sed s/[0-9][0-9]*//)" != "x" ]; then if [ "x${2}" = "x" -o "x$(printf "${2}" | sed s/[0-9][0-9]*//)" != "x" ]; then

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)