サーバの設定ファイルをWebDAVとSubversionで管理する

  • 投稿日:
  • カテゴリ:

Linuxの設定ファイルをSubversionで管理したいと思います。
しかし、以下のようなケースで困った事が起こったのでその解決策としてのメモを残しておきます。

■ケース
 保存はファイル単位(Subversionはディレクトリ単位)
 普通のSubversionの使い方はimport → co → 変更 → commit
 でもファイル単位なので、例えばtomcatのserver.xmlだけを対象としたい場合に困る。
 サーバ側の設定ファイル置き場に.svnが出来てしまう。
 単純に保存するだけならimportで十分だが、上書きができない。

■理想
 importで上書きしてほしい
 →そんなん無理です。。

■解決策
 WebDAVと自動コミットを使って解決する

そうでした・・・。WebDAVを使えば自動コミットが出来るのでした。
つまりWebDAVクライアントからファイルをPUTすれば勝手にSVNにコピーされます。
というわけで、早速設定してみました。

まずwebdavのクライアントが必要です。Windowsでは標準でしょぼいクライアントがついてきますが、サーバはLinuxなのでLinuxのWebDAVクライアントを探しました。cadaverというのが有名みたいです。Fedora8ではyumからインストールできます。うむ。便利!
次にApache(WebDAV)の設定をします。

SVNAutoversioning on

を追加します。
設定全部をさらすと私の場合はこんな感じです。 (必要に応じて自分の設定に変更してください。)

<Location /svn>
    DAV svn
    SVNParentPath /data/svn
    SVNAutoversioning on

    Require SSL connection for password protection.
    SSLRequireSSL

    AuthType Basic
    AuthName "tamtam private repository"
    AuthUserFile /etc/svn-auth-file
    Require valid-user
</Location>

これで設定は完了です。Apacheの設定をreloadしてLinuxのcadaverからアクセスしてみたいと思います。

cadaver https://tamsvr01/svn/repos
WARNING: Untrusted server certificate presented for `tamsvr01':
Issued to: Admin, tamsvr01, Shinagawa, Tokyo, JP
Issued by: Admin, TripleKiss, Tokyo, JP
Certificate is valid from Sun, 15 Oct 2006 04:20:01 GMT to Mon, 15 Oct 2007 04:20:01 GMT
Do you wish to accept the certificate? (y/n) y
Authentication required for tamtam private repository on server `tamsvr01':
Username: tamtam
Password:
dav:/svn/repos/> help
Available commands:
 ls         cd         pwd        put        get        mget       mput
 edit       less       mkcol      cat        delete     rmcol      copy
 move       lock       unlock     discover   steal      showlocks  version
 checkin    checkout   uncheckout history    label      propnames  chexec
 propget    propdel    propset    search     set        open       close
 echo       quit       unset      lcd        lls        lpwd       logout
 help       describe   about
Aliases: rm=delete, mkdir=mkcol, mv=move, cp=copy, more=less, quit=exit=bye

SubversionのレポジトリがWebDAVとして公開してあるので、cadaverでURLを指定して実行します。
証明書がオレオレ証明書かつ有効期限が切れているので警告が出ています。
(会社からアクセスする時に中身を閲覧されたくないのでSSL暗号を使うためだけにHTTPSにしてます)
YESを選択して、ユーザー名とパスワードを入力します。認証が成功したらFTPのようにWebDAVプロンプトが出てきます。
とりあえず、どんなコマンドが使えるのか確認するためにhelpを実行してみました。
ふむふむ。コマンドがFTPに似ていますね。
ローカルファイルをリモートにアップロードするコマンドはputなので、putを実行してみます。

と、その前に、自動コミットで正しくリビジョンがあがるのか確認するために、一度ファイルをインポートしてみます。

svn import -m "tomcat default server.xml" server.xml https://tamsvr01/svn/repos/settings/tamsvr02/server.xml

次にWebDAVクライアントからputしてみます。

dav:/svn/repos/> cd settings
dav:/svn/repos/settings/> cd tamsvr02
dav:/svn/repos/settings/tamsvr02/> put server.xml
Uploading server.xml to `/svn/repos/settings/tamsvr02/server.xml':
Progress: [=============================>] 100.0% of 5623 bytes succeeded.
dav:/svn/repos/settings/tamsvr02/> ls
Listing collection `/svn/repos/settings/tamsvr02/': succeeded.
      > server.xml                          5623   2月 10 07:06
      > smb.conf                            7786   2月 10 05:57
      > smbusers                             114   2月 10 05:56

ふむ。成功したようです。ちなみにApacheの設定がきちんと出来ていないと、以下のようにエラーになります。

Progress: [=============================>] 100.0% of 1197 bytes failed:
409 Conflict

ログをWindowsのTortoiseSVNから見てみました。

問題なくコミット出来ていました。さて、ここのコメントはどうやって編集するのでしょう・・。
あと、やっぱりコメントをput時に指定できると嬉しかったりしますが、はてさて・・。

 

新しいサイトもよろしくお願いします!