page_adsence

ラベル svn の投稿を表示しています。 すべての投稿を表示
ラベル svn の投稿を表示しています。 すべての投稿を表示

2011年4月25日月曜日

svnで衝突を解消するためのコマンド

なんか最近svnを使う機会が減ってきたのでメモ。

hoge.phpというファイルが衝突した場合の解消手順

1.衝突したファイルを開いて、衝突マーカの部分を修正し、保存。
$ vi hoge.php
<<<<<<< .mine
aaaa
bbbb
=======
bbbb
cccc
>>>>>>> .r2
.mimeとなっている部分はローカルで修正を加えたもの。
.rXXXとなっている部分はリビジョンXXXで修正が加えられたもの。

正しくマージして保存した後に、該当のファイルに対して解消のコマンドを打つ。
svn resolved hoge.php

2011年3月15日火曜日

キャッシュフォルダ等のフォルダをsvn管理下から除外する方法

なんか毎回ハマってる気がするのでメモ。
svnで編集する際に使用するエディタにviを指定(もともと指定している場合は不要)
$ export SVN_EDITOR="vi"

カレントディレクトリを開き、管理外にしたいディレクトリ名を記載する。
このコマンドを実行するとviが開く
$ svn propedit svn:ignore .

開いたviに管理外にしたいディレクトリ名を記載する。
例)カレントディレクトリにあるcacheディレクトリを除外したい場合
cache

で、保存して閉じる。
ちなみに、一度svn管理下に置いてしまった場合はsvn deleteで削除し、
svn管理外の状態にした状態で除外する必要がある。

2011年1月5日水曜日

svnでapache経由でコミットしようとしらたエラーになった

VMWare上に作ってあるリポジトリにApache経由でアクセスして使えるようにしたくていろいろとやっていた時のログ。

作業前の状態は以下の通り。
1.Apache経由ではリポジトリを見ることは可能
2.WindowsからTortoiseSVNを使ってチェックアウトすることは可能
3.フォルダを追加してコミットしようとしたらエラーになった。

TortoiseSVNが吐いたエラーは以下の通り。
コミットに失敗しました (詳しい理由は以下のとおりです):
サーバが、リクエストへのレスポンスとして予想外の戻り値 (403 Forbidden) を送信してきました (リクエスト: MKACTIVITY, URL: '/!svn/act/532009ea-04a9-8547-9597-23cc8ad9e5fe')

サーバ側のエラーログは以下の通り。
Access denied: 'ユーザー名' MKACTIVITY /:

ググってみたら結果、これの原因はauthzsvn.confのせいだとわかった。
よく見てみたら、ルートディレクトリ以下は誰も書き込みできないようになっていたので、
管理者は書き込みが可能なように修正して保存。

再度コミットしてみたら今度は別のエラーがでた。
Can’t create directory ‘~~~~~~’: Permission denied

サーバー側のエラーログは以下の通り。
Could not create activity /!svn/act/9a75b9be-5637-be47-9bb1-504df8e09f8a.  [500, #0]
could not begin a transaction  [500, #13]
Can't create directory '/path/to/dir/svn/db/transactions/0-1.txn': Permission denied  [500, #13]

で、これもググってみた結果、リポジトリ内のdavとdbフォルダ以下のオーナーをapacheに変更しないといけないということだったので、さっそく変更

# chown apache:apache -R db/ dav/

もう一度コミットしてみたら、今度はうまくいきました。
よかったよかった。

ちなみに、subversionのバージョンが1.5以降になるとdavディレクトリは自分で作らないといけないらしいので要注意。

2010年12月27日月曜日

CentOS5.5にSubversionを導入

社内でバージョン管理されていないプロジェクトが以外と多いことを知ったので、
とりあえず自分だけでもバージョン管理をしようと思い、
VMWare上のCentOSにSubversionをインストールすることにした。

今回の要件はこんな感じ。
・subversionのインストール
・WebDAV経由でリポジトリにアクセスできるようにする
・ディレクトリごとに細かくアクセス制限をかける

リポジトリ内のディレクトリ構成は以下のような感じを想定して作ってみる。

/path/to/dir
    └ projects
          ├ project_name
          │      ├ trunk
          │      ├ branches
          │      └ tags
          │
          └ project_name
                  :
                  :


今回自分の環境ではもともとsubversionがインストール済みであったが、
念のためインストールからの手順を示す。(rootユーザー)
といってもyumでインストールするだけなので、特に問題ないかと。
# yum install subversion ← Subversion本体
# yum install mod_dav_svn ← WebDAV


インストールが完了したら、リポジトリ用のディレクトリを切ってからリポジトリの作成
apache経由でアクセスするのでapacheから書き込めるようにオーナーをapacheにしておく。
# mkdir /path/to/dir/projects
chown apache:apache /path/to/dir/projects
# svnadmin create /path/to/dir/projects


そっからWebDAVでアクセスできるようにする。
ここでちょっとはまった。
いろんなサイトを見て回ったけど、モジュールの読み込み部分について触れてないブログが結構多くて、
gracefulで文法チェックするとエラーになってしまっていた。
WebDAVを使用する場合は以下の「mod_dav_svn.so」のモジュールを読み込んであげないとエラーになってしまう。
また、「mod_authz_svn.so」はディレクトリごとに細かくアクセス制限をかけることができるようになるモジュール。
ユーザーを作成し、ディレクトリごとに読み書きを制御できるようになる。
個人で使用する分にはまず必要ないが、勉強のためこれも組み込む。

ディレクトリごとにアクセス制限をかけるための設定ファイル(authzsvn.conf)をsubversion.confで読み込むので、
まずはそのファイルの作成をする。
# vi /path/to/dir/project/authzsvn.conf

[groups] ← グループの管理をしている部分の記述開始
#開発者
developers = kusagaya ← グループ名 = ユーザー名
test = userA, userB, userC

#管理者
manager = kusagaya

[/] ← ディレクトリごとのアクセス制限
#すべての人が読み込み可能
* = r

[projects:/trunk]
#開発者は読み書き可能
@developers = rw

[projects:/branches]
#管理者は書き込みも可能
@manager = rw

[projects:/tags]
#管理者は書き込みも可能
@manager = rw


この設定ファイルに関してのドキュメントが見つからなかったので、とりあえずコピペしたのをおく。

# vi /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<VirtualHost *>
    ServerAdmin your_mail_address
    DocumentRoot /path/to/dir/projects
    ServerName your_server_name
    ErrorLog /path/to/dir/logs/error_log
    CustomLog /path/to/dir/logs/access_log common
    <Location /svn>
        DAV svn
        SVNPath /path/to/dir/projects←svnadminコマンドで作成したリポジトリのディレクトリ

        # our access control policy
        AuthzSVNAccessFile /path/to/dir/projects/authzsvn.conf←mod_authz_svnによるアクセス制限の設定ファイルのパス

        以下はただのBasic認証
        # only authenticated users may access the repository
        Require valid-user

        # how to authenticate a user
        AuthType Basic
        AuthName "Subversion repository(sample)"
        AuthUserFile /path/to/dir/projects/.htpasswd
    </Location>
</VirtualHost>


問題なさそうならapacheの設定ファイルをリロード。
# /etc/rc.d/init.d/httpd reload


これで一応WebDAV経由でアクセスできるようになったはず。

参考文献
http://park1.wakwak.com/~ima/centos4_subversion0001.html