2012年9月6日木曜日

SVNで機械的に生成されるファイルの管理

Doxygen等で生成されるドキュメントをSVNレポジトリに突っ込んでおこうとすると、意外と面倒くさい。最初のコミットはまあいいのだが、2度目以降、再生成したドキュメントで更新しようと思うと、その都度ファイルの増減に対応しなければならない。

SVNはサブディレクトリ毎に管理情報を持っているので、何も考えずにサブディレクトリを丸ごと削除してから再生成するわけにも行かない。で、結局

  1. 通常ファイルを全部消す
    Zshなら
    zsh% rm -f xx/**/*(.)
    こんな感じ。うっかり
    % find xx -type f -exec rm {} \;
    とかやると.svn/の中のファイルも削除対象になってしまうので、これは絶対NG。
  2. 再生成
    DoxygenなりRDocなり、目的のツールを実行
  3. 増えたファイルを追加登録
    svn statusで?印が付いているファイルをsvn add
    % svn add `svn status | gawk '/^\?/{print $2}'`
  4. 減ったファイルを登録削除
    svn statusで!印が付いているファイルをsvn remove
    % svn remove `svn status | gawk '/^!/{print $2}'`
  5. コミット
    % svn commit

全自動化は怖いので1ステップずつ目視確認しながらやってるんだが、めんどいね。どいね。レポジトリに置いておくのは生成ツールの設定ファイルと実行バッチくらいにして、機械的に生成できるものはレポジトリに置かないのが正解なんだろうけど、誰もが生成ツールをインストールしているとは限らないから、これまためんどいんだ。

0 件のコメント:

コメントを投稿