Carpe Diem

  Top > スポンサー広告> Subversion > Subversion導入  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Subversion導入

2011 - 11/10 [Thu] - 20:12

自分のサーバで開発環境をということでSubversionを導入することにします。
まずはローカル環境でSVNの導入を試し、それが出来たらSSHを利用してインターネット環境で利用できるようにします。

とりあえずインストールから。サーバ版を入れたら多分既に入っていると思いますが
$ sudo apt-get install subversion subversion-tool libapache2-svn

流れとして
①バージョン管理用のフォルダ(レポジトリ)の作成
②開発元のソースを先ほどのバージョン管理フォルダ(レポジトリ)にインポート
③レポジトリからファイルを取り出し(チェックアウト)たいフォルダ(作業コピー)を作成&チェックアウトを実行


です。

では順に説明します。
①バージョン管理用のフォルダ(レポジトリ)の作成
仮に~/svn/testフォルダとします。

$ svnadmin create ~/svn/test

注意する点としては、今現在ないフォルダ名にすることです。既にそのフォルダ名があるとエラーを食らいます。あともしrootで作成しちゃうと、後半の「SSHでインターネット経由で~」でPermission deniedされるので、その場合はchownして変更してください。

②開発元のソースを先ほどのバージョン管理フォルダ(レポジトリ)にインポート
ここではお試しということで適当に作成します。

$ mkdir ~/source
$ echo "Hello World" > ~/source/test.txt


作成したらレポジトリにインポートします。

$ svn import ~/source file:///home/username/svn/test/ -m "initial import"

説明として
$ svn import (ソースフォルダ) file://(/home/から始まる①で作ったフォルダパス) -m "コメント"

という形で書きます。
ちなみにSVNは元ソースに直接働きかけるわけではなく、実際書き換えが行われるのはレポジトリの方なので、sourceフォルダは削除しても大丈夫です。sourceフォルダが消えても①で作成したフォルダにはファイルが残り、そちらでバージョン管理を行えます。

③レポジトリからファイルを取り出し(チェックアウト)たいフォルダ(作業コピー)を作成&チェックアウトを実行
例として、開発用フォルダcheckout/を作ります。ここで開発を行う(作業コピーとする)として

$ mkdir ~/checkout
$ svn checkout file:///home/username/svn/test ~/checkout


とすればファイルを取り出せます。以降はsvn commitやsvn up等でファイルのコミット、ダウンロードが行えます。

◆SSHを用いてインターネット環境で
これは簡単で、先ほどの③でのレポジトリのアドレスを変更するだけです。

$ svn checkout svn+ssh://user@domain/home/username/svn/test ~/checkout

とします。最初に
svn+ssh://
とし、ssh接続のように
user@domain
を指定して、その後にフォルダ構造を書きます。

注意として、scpのようにuser@domain:~/のような書き方はできないです。

※ポート番号を指定する場合
SSHのポート番号が標準の22でない場合、当然のことながら先ほどの書き方だと接続できません。設定ファイルをいじるか、毎回コマンド時に書くか、です。ポート番号が10022として、コマンドで使用する場合なら

$ SVN_SSH="ssh -p 10022" svn+ssh://user@domain/home/username/svn/test ~/checkout

毎回書くのがめんどうなら
$ export SVN_SSH="ssh -p 10022"

とすればOK。常にこのポートしか使用しないなら.bashrcに書いてもいいと思います。

◆svn: attempt to write a readonly databaseというエラーが出る
"attempt to write a readonly database"はSQLite3が吐いてるメッセージで、svnが使ってるSQLite3のデータベースファイルに書き込み権限がないという状態。レポジトリの/db/rep-cache.dbの所有者を変更するか、書き込み権限を与えましょう。

$ sudo chown svn:svn rep-cache.db (ユーザ、グループがsvnと仮定)
or
$ sudo chmod g+w rep-cache.db

補足:
◆チェックアウトしたフォルダ側から新しいファイルを追加したいとき
①新しいファイルをチェックアウトフォルダに作成
$ svn statusでレポジトリリストにあるか確認(当然ないので?マークがつく)
$ svn add (新しいファイル)でリストに追加
$ svn commitで新しいファイルを含めてコミット出来る。


ソース:
UbuntuにSubversionを入れてバージョン管理でもしてみる
svn+sshで任意のポート番号を指定する
svn: attempt to write a readonly database

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。