文字コード

  • メタデータ(ファイル名やログの中身など)については Unicodeで扱い、クライアント側で必要に応じて文字コードの変換を行う
  • リポジトリ内のファイル
    • 改行コードはクライアント側の環境に応じて変換する(text扱いのもののみ)
    • eol-style属性を指定した場合のみ(デフォルトはバイナリ扱いらしい)
    • 文字コードは一切変換しない

インストール

必要なもの

svnserve を xinetd 経由で起動

(1) /etc/xinet.d/svnserve を作成

service svnserve
{
        disable         = no
        socket_type     = stream
        wait            = no
        user            = svn
        server          = /usr/local/bin/svnserve 
        server_args     = -i -r /var/svn
        log_on_failure  += USERID
        only_from       = 192.168.255.0/24 127.0.0.1
}

(2) /etc/hosts.allow を編集

svnserve : 192.168.0. 127.0.0.1

(3) /etc/services を編集

#svn            3690/tcp                        # Subversion
#svn            3690/udp                        # Subversion
svnserve        3690/tcp                        # Subversion
svnserve        3690/udp                        # Subversion

(4) サービス起動

$ chkconfig --add svnserve
$ chkconfig --list svnserve
	「svnserve:       on」と表示されるのを確認
$ service xinetd restart

リポジトリの作成

  • リポジトリのオーナー:svn
  • リポジトリのルート:/var/svn として説明

(1) 作成

$ su - svn
$ svnadmin create /var/svn/[Repository Name]
$ svn mkdir file://localhost/var/svn/[Repository Name]/trunk -m "trunk"
$ svn mkdir file://localhost/var/svn/[Repository Name]/tags -m "tags"
$ svn mkdir file://localhost/var/svn/[Repository Name]/branches -m "branches"

(2) /var/svn/[Repository Name]/conf/svnserve.conf の編集

[general]
# 匿名アクセスに対して読み書きの権限を与えます。
anon-access = none
# 認証を通過したアクセスに対しては読み書きの権限を与えます。
auth-access = write
# パスワードファイルの場所を相対パスで示します。
password-db = passwd
# 認証ルールファイルの場所を相対パスで示します。
#authz-db = authz ※使わないのでコメントアウト
# リポジトリの説明を記載
realm = [Description]

参考:リポジトリ作成シェルスクリプト

#!/bin/sh

if [ $# -ne 1 ]
then
        echo "Usage: makeRepository.sh RepositoryName"
        exit 0
fi 

if [ -d /var/svn/$1 ]
then
        echo "'$1' already exists."
        exit 0
fi 

echo "Please select Database Type."
echo "  [1] fsfs"
echo "  [2] Berkeley DB"
read -n 1 -p "  > " DB_NO

echo
echo

case $DB_NO in
        1 )
                echo "Generate Repository: $1 (fsfs)"
                svnadmin create --fs-type fsfs /var/svn/$1
                ;;
        2 )
                echo "Generate Repository: $1 (Berkeley DB)"
                svnadmin create --fs-type bdb /var/svn/$1
                ;;
        * )
                echo "Please input 1 or 2."
                exit 0
                ;;
esac

echo
echo "Add trunk to $1."
svn mkdir file://localhost/var/svn/$1/trunk -m "trunk"
echo
echo "Add tags to $1."
svn mkdir file://localhost/var/svn/$1/tags -m "tags"
echo
echo "Add branches to $1."
svn mkdir file://localhost/var/svn/$1/branches -m "branches"

echo
echo "You have to edit /var/svn/$1/conf/svnserve.conf and passwd"
echo

Eclipse + Subversion

TortoiseSVN

Visual Studio + Subversion

Ankhの使い方

1. プロジェクトを開き、ソリューション 'xxx' を右クリック
2. Ankh => Add solution to Subversion repository を選択
3. LocationのURL欄にリポジトリのURL(svn://svnserver/projectA/trunk など)を入力し、OKを押す
4. Authenticateダイアログでユーザ/パスワードを入力し、OKを押す
5. Commitダイアログを適当に編集し、Commitを押す

ASP.NET、Webサービスのプロジェクトを管理する場合の注意点

.svn / _svn

subversionで管理を開始するときに、TortoiseSVNを利用したりするが、「.svn」が、 各階層に作成される。

その対象が、IISで仮想ディレクトリとしてパスを通しておくと、実際にVisual Studio .NETで、.slnファイルを開こうとし、「プロジェクトの更新に失敗しました。フォルダ情報をサーバから取得できません」というエラーメッセージが表示される。これの回避策は以下の通り。

【回避策】
1. TortoiseSVNの設定にある「「.svn」から「_svn」に変更する」にチェックを入れ、_svn を使用するようにする
2. PCを再起動
3. 既存のワーキングコピーの全ての .svn を _svn にリネーム
4. 各ワーキングコピーで update を行う

この回避策を行うと環境変数に

変数:SVN_ASP_DOT_NET_HACK
値:*

が追加されます。

ASP.NET、Webサービスのプロジェクト作成

【この方法は現在実験中!!】
Visual Studio .NETでASP.NET、Webサービスのプロジェクトを作成すると C:?Inetput?wwwroot 配下にファイルが作られるため、Ankhだとソリューションファイルしか管理できない。
これを回避する方法として以下の裏技がある。

1. IISマネージャで既定のWebサイトを右クリックし、新規作成 => 仮想ディレクトリ を選択
2. エイリアス:<プロジェクト名> を入力
3. パス:<VisualStudio?のプロジェクトのルートフォルダ>/<プロジェクト名>/www を入力
 ※ 予め上記フォルダを作成しておく
4. 上記を行ってから通常通りプロジェクトを作ると <VisualStudio?のプロジェクトのルートフォルダ>/<プロジェクト名>/www にファイルが作成されて、全部のファイルを管理することができる

All-In-One Trac

使い方

  • ソリューションエクスプローラで「ソリューション 'xxx'」を右クリック
  • Ankh => Add solution to Subversion repository を選択
  • リポジトリ名を入力
svn://<サーバ名>/<プロジェクト名> (/trunk)
http://<サーバ名>:<ポート>/svn/<プロジェクト名> (/trunk)
file:///<ドライブ>:/<フォルダ> (/trunk)
  • これでソリューションエクスプローラ上でTortoiseSVNのように使えるようになる

Tips


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-09 (日) 21:28:04 (1180d)