subversionの使い方についてご質問です。


subversionの使い方がまだよく分かっていないのですが、web開発でsvnを利用する場合、問題なく変更をcommitできた時点で自動的に作業ディレクトリから公開ディレクトリにソースをアップロードする、というようなことはできるのでしょうか?

まだ精通しておりませんので、分かりやすくご説明して頂けると有り難いです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/08/23 20:20:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:takabow No.1

回答回数51ベストアンサー獲得回数14

ポイント27pt

Subversionは処理の要所要所でフックといって割り込み処理をはさむことができます。

これらはスクリプトで与えられており、各リポジトリの中にあるhooksというディレクトリに、そのテンプレートファイルがあります。

コミット後に処理をはさむときは、post-commit.tmplというテンプレートがあるので、

これをpost-commitとリネームし、実行権限を与えれば、この中に書かれたスクリプトが実行されます。

ですからこの中に、cpなりrsyncでのバックアップ処理を書けばよいかと。

id:tomoyuki28jp

丁寧なご説明をどうもありがとうございます。

完璧に理解できました。

貴重な情報をどうもありがとうございます!

2007/08/16 20:44:10
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

fook を使えば出来ます。post-commit に手を入れればよいです。

Subversion

ただ、実行されるのはプログラムなので、多少のプログラムはかけないとしんどいです。

一応サンプルスクリプトは付属していますが。

id:tomoyuki28jp

どうもありがとうございます!

やってみます!

2007/08/16 20:44:31
id:kompiro No.3

回答回数15ベストアンサー獲得回数1

ポイント26pt

subversionのサーバーにはsvnプロトコルだけではなく、Apacheを介してWebDAVプロトコルを採用する事もできます。権限を適切に設定すれば、認証されているユーザーはコミットができるけれど、認証されていないユーザーは見るだけという設定をすることもできます。

設定に関してはApacheとsubversionで検索してみるといいと思います。

ただ、コミットをするだけで公開できる仕組み自体、あまりお勧めしません。理由は間違ってコミットすることもたくさんあるからです。サーバーにコミットした結果を認証されているユーザだけが確認できるようにし、問題がなければ本番へあげるようなスクリプトを用意したほうがいいのではないでしょうか。

id:tomoyuki28jp

参考になる情報をどうもありがとうございます。

頂いたキーワードで調査してみようかと思います。

2007/08/17 19:32:54
  • id:KUROX
    スクリプトかなにか組まない限り無理だと思う。
  • id:tomoyuki28jp
    僕の周りの人間は直接公開ディレクトリを編集して、1日に一回ぐらいバックアップとしてsvnを利用しているようなのですが、それではバージョン管理の意味があまりないように思われるのですが、これが本来の使い方なのでしょうか?
  • id:takabow
    いや~それだと単なる1日1回の差分バックアップですよね^^;
    一人で編集するならともかく、複数人でファイルをいじることがあったら、更新が衝突してしまいますよ。
     
    ちなみにWEBページならうちでもtomoyukiさんが質問された方法で公開してます。
  • id:tomoyuki28jp
    > takebowさん

    コメントどうもありがとうございます! ^^

    post-commitの処理内容ですが、
    /home/hoge/workで編集した内容をsvnにてcommitし、
    最新版を/var/www/htmlの公開ディレクトリに反映
    させたい場合、
    「/var/www/htmlに対してsvn update」
    という処理だけ行えば良いのでしょうか?

    またお時間があれば、ご回答頂ければ幸いです
    m(_ _)m
  • id:takabow
    そうですね基本的にはsvn updateをすれば/var/www/htmlに更新されます。

    注意点としては、
    ・/var/www/html にあらかじめcheckoutしておくのを忘れない
    ・実行はsvnユーザになる
    ・post-commitの実行権限
    ・/var/www/htmlの書き込み権限
    ・svnコマンドへのパスを通す (スクリプトにはフルパスで書くはやいですね)
    ・結構ハマるのでログをはかせましょう /usr/local/bin/svn update /var/www/html >> /tmp/hoge.log

    #リポジトリ内のファイルに日本語のファイル名が混じってると、変換できないエラーで結構はまったりします
  • id:tomoyuki28jp
    > takebowさん、

    本当に何から何までご親切にどうもありがとうございます。

    上記の情報も大変参考になりました。
    教えて頂いた注意点を参考にしながら設定をしたところ、
    目的の動作を実現することができました。

    本当にありがとうございます!

    今後とも宜しく御願いします m(_ _)m

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません