ページへ戻る

− Links

 印刷 

git(github) のログを Wiki(PukiWiki) 書式に変換するシェルスクリプト :: XOOPS マニア

UsersWiki:nao-pon/blog/2012-06-21


RSS of nao-pon/blog[5]
2012 6月 21 (木)
 

git(github) のログを Wiki(PukiWiki[6]) 書式に変換するシェルスクリプト anchor.png[7]

Tag: git[8] github[9] プログラミング[10] シェルスクリプト[11]

このところ、xpWiki[12], HypCommonFunc[13]X-elFinder[14] の開発日記で一定のフォーマットで、github での更新履歴を載せているので気づいた人もいるかも知れませんが・・・

はい、シェルスクリプトで自動抽出&変換しています。

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-
!
-
|
|
|
|
|
|
!
-
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
!
|
|
|
|
!
#!/bin/sh
 
# git の log から 対象のコミットから最新までのログを PukiWiki[6] 書式で整形する
#
# GITDIR: ローカルgit の親ディレクトリ
# LOGDIR: ログを出力するディレクトリ
# GITBASE: ローカルgit のベースネーム
# GITHUB: github上のディレクトリ名
#
 
if [ ! "$1" -o ! "$2" ]; then
    echo "引数がありません。: makelog [xpwiki[12]|hypcommon|xelfinder] [対象の最古コミットの一つ前のコミットID]"
else
    GITDIR="/hoge/git"
    LOGDIR="/hoge/git/log"
    if [ $1 = "xpwiki[12]" ]; then
        GITBASE="xpwiki[12]-linked"
        GITHUB="nao-pon[3]/xpWiki[12]"
    elif [ $1 = "hypcommon" ]; then
        GITBASE="hyp_common-linked"
        GITHUB="nao-pon[3]/HypCommon"
    elif [ $1 = "xelfinder" ]; then
        GITBASE="xelfinder-git"
        GITHUB="nao-pon[3]/xelfinder"
    else
        echo "第一引数が変です。"
        exit 1
    fi
    cd $GITDIR/$GITBASE
    git log $2.. --reverse --pretty=format:'-[[%h:https://github.com/[15]'$GITHUB'/commit/%H]]: %s%n--%b' | sed 's/&/&/g' > $LOGDIR/$GITBASE.log
    sed -i ':loop; N; $!b loop; s/\n\([^-]\)/~\n\1/g' $LOGDIR/$GITBASE.log
    sed -i ':loop; N; $!b loop; s/~\n\n\([^-]\)/\n~\1/g' $LOGDIR/$GITBASE.log
fi

GITDIR, LOGDIR, GITBASE, GITHUB や $1 の if 文判定やメッセージなどは、適当に修正してください。 :-)



Last-modified: 2012-06-21 (木) 20:19:55 (JST) (4320d) by nao-pon