ページ更新: 2012-05-14 (月) (3212日前)
関連: ソフト/Bug Tracking/trac/ごたく, ソフト/Bug Tracking/trac, Cygwin/Subversion (2004-10-21 新規作成) Subversion (Subclipse, TortoiseSVN) のメモ。更新頻度は低い。 目次
Subversion 1.7 #(2012-05-14, 2012-03-07, 2011-10-23) Apache Subversion 1.7.0
Apache Subversion - Binary Package
TortoiseSVN プラグイン
pre-revprop-change フックで標準入力で渡された内容を調べて、コミットの許可/不許可を決める #(2011-09-13) 動作確認には Windows 7 SP1, Python 2.6, Subversio 1.6.16, TortoiseSvn 1.6.15 を用いた。 [pre-revprop-change.bat]
@C:\Python26\python.exe %~dp0\pre-revprop-change.py [pre-revprop-change.py]
#!/usr/bin/python # -*- coding: utf-8 -*- import sys props = sys.stdin.read() try: props.index("sample") # 見つかった(例外が発生しない) →修正を却下 exit(1) except ValueError: # 見つからなかった →修正を許可 exit(0)[編集] svnwcrev が Ubuntu 11.10 でビルドできなかった #(2011-10-28, 作業中) ビルドできなかった。メモを取ってないので、後でもう一回調べる。
(未完、調査中) svn diff / TortoiseSVNでpatch作成時に、CP932 (ShiftJIS+α) 以外のファイルの文字化けするのを直す #(2011-01-13) 比較対象のファイルが SJIS 以外の日本語が含まれてるとリビジョンという文字が SJIS なので文字コードが混在して文字化けする。 Subversion.mo を修正(英語に書き換え)するとよい。gettext-util (msgunfmt / msgfmt) が必要。
手元では、以下のファイルを修正すればよさそうだ。
msgfmt / msgunfmt:
po
(未完) Cygwin + gettext-devel の場合 #win32svn のはエラーが発生する。TortoiseSVN のはエラーなしだと思うし、文字化けしない。 $ cygcheck -cd cygwin gettext-devel Cygwin Package Information Package Version cygwin 1.7.7-1 gettext-devel 0.17-11 win32svn の subversion.mo) →エラー発生: $ msgunfmt /cygdrive/c/Program\ Files/Subversion/share/locale/ja/LC_MESSAGES/subversion.mo -o win32svn.po /usr/src/packages/gettext/gettext-0.17-11/src/gettext-0.17/gettext-tools/src/read-mo.c:240: 不正な複数バイトのシーケンス /usr/src/packages/gettext/gettext-0.17-11/src/gettext-0.17/gettext-tools/src/read-mo.c:240: 不正な複数バイトのシーケンス /usr/src/packages/gettext/gettext-0.17-11/src/gettext-0.17/gettext-tools/src/read-mo.c:240: 不正な複数バイトのシーケンス ... TortoiseSVN の Subversion.mo) →問題なし。msgunfmt出力の文字コードは utf-8 のようだ (minttyの文字コードをUTF-8に切り替えると文字化けしないので: $ msgunfmt /cygdrive/c/Program\ Files/TortoiseSVN/Languages/ja/LC_MESSAGES/Subversion.mo msgid "" msgstr "" "Project-Id-Version: subversion 1.6\n" "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n" "POT-Creation-Date: 2009-03-17 14:50+0100\n" "PO-Revision-Date: 2007-10-28 01:23+0900\n" "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n" "Language-Team: Japanese <dev@subversion.tigris.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid "" ...[編集] (未完) GnuWin32 gettext の場合 #win32svn のはエラーが発生する。TortoiseSVN のはエラーなしだと思う。 win32svn 1.6.15 (エラー): C:> "c:\Program Files\GnuWin32\bin\msgunfmt.exe" "C:\Program Files\Subversion\share\locale\ja\LC_MESSAGES\subversion.mo" msgid "" msgstr "" "Project-Id-Version: subversion 1.6\n" "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n" "POT-Creation-Date: 2009-03-17 14:50+0100\n" "PO-Revision-Date: 2007-10-28 01:23+0900\n" "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n" "Language-Team: Japanese <dev@subversion.tigris.org>\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" msgid "" ... (null): invalid multibyte sequence (null): invalid multibyte sequence (null): invalid multibyte sequence (null): invalid multibyte sequence ... subversion 1.6.6 (svn-win32-1.6.6.zip, subversion: ドキュメント & ファイル: 1.6.x (archived, win32, apache 2.2.x)から入手) (エラー): C:> "C:\Program Files\GnuWin32\bin\msgunfmt.exe" subversion.mo msgid "" msgstr "" "Project-Id-Version: subversion 1.6\n" "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n" "POT-Creation-Date: 2009-03-17 14:50+0100\n" "PO-Revision-Date: 2007-10-28 01:23+0900\n" "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n" "Language-Team: Japanese <dev@subversion.tigris.org>\n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" msgid "" .... (null): invalid multibyte sequence (null): invalid multibyte sequence (null): invalid multibyte sequence ... TortoiseSVN (問題なさそう): C:> "c:\Program Files\GnuWin32\bin\msgunfmt.exe" "C:\Program Files\TortoiseSVN\Languages\ja\LC_MESSAGES\Subversion.mo" msgid "" msgstr "" "Project-Id-Version: subversion 1.6\n" "Report-Msgid-Bugs-To: dev@subversion.tigris.org\n" "POT-Creation-Date: 2009-03-17 14:50+0100\n" "PO-Revision-Date: 2007-10-28 01:23+0900\n" "Last-Translator: Subversion Developers <dev@subversion.tigris.org>\n" "Language-Team: Japanese <dev@subversion.tigris.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid "" ...[編集] TortoiseSVN 1.5.9 にバグらしき挙動あり、TortoiseSVN 1.6.5では問題なし (2009-09-30) #TortoiseSVN 1.5.9 にバグらしき挙動を見つけました。 バグの挙動:
状況:
推測:
リポジトリの構造 (2009-09-08) #
(TODO: 帰宅後に ↑ にコメントする。) 出遅れたけど、うちはこんな感じ。
Subversionリポジトリ上のディレクトリの構成: vendor/ .... ベンダーブランチ。 hoge/ latest/ .... 最新バージョン。ベンダーが新しいのをリリースしたら、ここに反映する。 version1.2.3-2008-01-02/ .... 過去の最新バージョン (過去のlatestをsvn copy) version2.3.4-2009-02-03/ .... 最新バージョン (latestをsvn copy) README.txt .... 説明。latest/への反映手順の概要(詳しい説明はWikiの方に書く) poyo/ latest/ .... 最新バージョン。ベンダーが新しいのをリリースしたら、ここに反映する。 release-134/ .... 過去の最新バージョン (過去のlatestをsvn copy) release-345/ .... 過去の最新バージョン (過去のlatestをsvn copy) release-543/ .... 最新バージョン (latestをコピー) README.txt .... 説明。latest/への反映手順の概要(詳しい説明はWikiの方に書く) README.txt .... ベンダーブランチの説明(詳しい説明はWikiの方に書く) trunk/ .... 原則として、trunk をチェックアウトして使う doc/ .... 文書はここと、Wikiとチケットに。(チケットに書く→Wikiにまとめる→doc/に入れる) 要求/ 技術調査/ 分析設計/ テスト/ sub-project1/ .... Eclipseのプロジェクトや、Visual Studioのソリューションやら、UNIXなソースやら。 sub-project2/ sub-project3/ libare/ .... 他のリポジトリから (svn:external) libsore/ .... 他のリポジトリから (svn:external) hoge/ .... ベンダー製ライブラリ (vender/hoge/latest か vender/hoge/versionX.X.Xをsvn copy) poyo/ .... ベンダー製ライブラリ (vender/poyo/latest か release-XXXをsvn copy) README.txt .... trunk以下の説明文書。ビルド手順の概要など。(詳しい説明はWikiの方に書く) branches/ are-trunk/ .... trunkのブランチ (svn copy /trunk /branches/are-trunk) sore-trunk/ .... trunkのブランチ (svn copy /trunk /branches/sore-trunk) README.txt .... ブランチの説明。命名規則など。(詳しい説明はWikiの方に書く) tags/ README.txt .... タグの説明。命名規則など。(詳しい説明はWikiの方に書く) README.txt ....このリポジトリの説明(詳しい説明はWikiの方に書く)[編集] Debian 4.0のetch-backportsでSubversion 1.5.1をインストール (2009-04-07) #Debian 4.0→5.0 (Subversion 1.5.1) にアップデートする時間が取れないので、etch-backportsからSubversion 1.5.1をインストールしてみた。 $ sudo aptitude install \ libapache2-svn/etch-backports \ libsvn1/etch-backports \ subversion/etch-backports \ subversion-tools/etch-backports \ python-subversion/etch-backports なお、TracとApache2の設定は特に変える必要がなかった。 [編集]Subversionリポジトリのアップデート用スクリプト (2009-04-07) #Subversionリポジトリのアップデート(例: 1.4.x → 1.5.x)の移行のためのスクリプト「update-repository.sh」、Debian/Ubuntu用。
update-repository.sh #!/bin/sh export LANG= if [ "$1" == "" ]; then echo "usage: update-repos.sh repository-path" exit 1 fi REPO=$1 ## Show repository format no cat $REPO/format cat $REPO/db/format ## Create new repository sudo -u www-data svnadmin create $REPO-new ## Remove sample config-file and hook-script sudo -u www-data rm $REPO-new/conf/* sudo -u www-data rm $REPO-new/hooks/* ## Copy sample config-file and hook-script sudo -u www-data cp $REPO/conf/* $REPO-new/conf/ sudo -u www-data cp $REPO/hooks/* $REPO-new/hooks/ ## DUMP sudo -u www-data svnadmin dump $REPO > dumpfile ## LOAD sudo -u www-data svnadmin load $REPO-new < dumpfile ## Exchange new repository sudo -u www-data mv $REPO $REPO-old sudo -u www-data mv $REPO-new $REPO ## Show repository format no cat $REPO/format cat $REPO/db/format cat $REPO-old/format cat $REPO-old/db/format[編集] AuthzSVNAccessFile and SVNListParentPath - examples in Chapter 6 are misleading (2007-08-16) #
svndumpfilter2 (2007-08-16), svndumpfilter3 (2007-09-06) #
リポジトリサーバの種類 #リポジトリサーバへのアクセス方法 1. ファイル共有 * fsfsを使う。 * ユーザー名が判別できないため、余り使われない 2. svnserve (svn:) 1. デーモン 1. standalone * パスワードは暗号化できるが、データはそのまま 2. super daemon経由 * パスワードは暗号化できるが、データはそのまま 1. ssh (svn+ssh:) * svnserveが呼ばれる * 認証はsshの機構 (=OSのPAM) を使う * データを暗号化できる 3. mod_dav (http:) * mod_dav_svn.soを使う * 認証はApacheの機構を使う * パスワードを暗号化するならBasic認証は使わず、代わりにDigest認証を使う。 * ユーザー毎のアクセス制限には AuthzSVNAccessFile を併用 * HTTP proxyを通過できる。 * WebDAVを通せないproxyの場合、SSL(https:)を使うと通すことができる。 * データも暗号化するならSSLを使う。[編集] Subversion 1.4のsvnserve.exeをサービスで動かす (2006-10-12) #Subversion 1.4では、svnserve.exe がサービスとして動作するようになった。 そこで、Windows XP Professionalのscコマンドを用いて、svnserve.exe をサービスに登録してみる。 環境は Windows XP Professional SP2。 sc で svnserve.exe をサービスに登録する。注意:「=」の後には1文字空白を置くこと。(binPath= や depend= ) C:\> sc create svnserve binPath= "C:\Program Files\Subversion\bin\svnserve.exe --service --root c:\appdata\svn" depend= tcpip [SC] CreateService SUCCESS C:\> 今回は--rootでリポジトリの親ディレクトリを指定している。 登録確認: C:\> sc query svnserve SERVICE_NAME: svnserve TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 1077 (0x435) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 C:\> ちなみに、登録を削除するには次のようにする: C:\> sc delete svnserve [SC] DeleteService SUCCESS C:\> サービスを起動する: C:\> sc start svnserve SERVICE_NAME: svnserve TYPE : 10 WIN32_OWN_PROCESS STATE : 2 START_PENDING (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 2976 FLAGS : 起動確認: C:\> sc query svnserve SERVICE_NAME: svnserve TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING ★実行中 (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 ポートを確認する。3690はsvnserveが使うポート: C:\> netstat -an | findstr "3690" TCP 0.0.0.0:3690 0.0.0.0:0 LISTENING C:\> チェックアウト操作を行ってみる。何も入れてないので空だが: C:\> mkdir tmp C:\> mkdir tmp\svntest C:\> cd tmp\svntest C:\tmp\svn> svn checkout svn://127.0.0.1/sandbox リビジョン 0 をチェックアウトしました。 C:\tmp\svn> これで完了。ただし、PCを再起動するとsvnserveサービスは止まったままなので、別途、サービスを自動起動に設定しておくこと。 [編集]既存のリポジトリの種別を調べる (2006-05-24) #要点:リポジトリの db/fs-type に書いてある。 環境:Subversion 1.2.3 for Windows, Windows XP SP2, Cygwin (fileコマンド) Berkley DBの場合 $ svnadmin create --fs-type bdb bdb_repository ★Berkley DBでリポジトリを作成して、 $ cat bdb_repository/db/fs-type ★db/fs-typeファイルの中身を表示する bdb $ svnadmin list-dblogs bdb_repository ★Berkley DBログファイルの一覧を表示する bdb_repository\db\log.0000000001 $ file bdb_repository/db/log.0000000001 ★Berkley DBの情報を表示する bdb_repository/db/log.0000000001: Berkeley DB (Log, version 10, native byte-order) $ FSFS $ svnadmin create --fs-type fsfs fsfs_repository ★FSFSでリポジトリを作成して、 $ cat fsfs_repository/db/fs-type ★db/fs-typeファイルの中身を表示する fsfs $ svnadmin list-dblogs fsfs_repository ★Berkley DBログファイルの一覧を表示する $ ★Berkley DBではないので、なにも表示されない[編集] Windows上で、ZIPで提供されているSubversionを入れたときの設定 #環境変数 APR_ICONV_PATH を定義、iconvディレクトリの位置を設定する。 C:\Program Files\Subversion\iconv[編集] fsfsとBerkeley DB、どちらを使う? (2005-08-22) #Subversion-jp メーリングリスト http://arch.bluegate.org/mailman/listinfo/subversion-jp より。
まとめ。 Berkeley DB
fsfs
2007-10-23 追記 FSFSがデフォルトになったのは Subversion 1.2から、他 #Subversionリポジトリのデータ格納形式のデフォルトは、Subversion 1.1.X までがBDB、1.2以後はFSFS。
データ格納形式の選択についてはこちらも参照のこと Linuxディストリビューションが提供しているパッケージのSubversionのバージョン (手元のディストリビューションのみ)
既存のコードをSubversionにimportする手順(未確認) #2005-05-06
あるいは、既存のコードがCVSで管理されていれば、そこから移行(コンバート)した方がよいかも。 [編集]Windowsをサーバにする #未整理。本家の文書と、その日本語版の文書へのリンクを貼ってない。 Subversion/Windowsへのインストール - TechNote SVN Service Wrapper for Windows
Subversion 設定メモ - yik.jp Wiki リポジトリを作成する #
ここでは、c:/svn/repos とする。
インポートする #
2004-10-22 #
branches と tags を作成する #
checkout する。 #
|