nDiki : Subversion
Subversion
バージョン管理システムの一つ。
たまに必要になる作業に関するメモ
add した際テキストファイルがバイナリと見なされてしまった:
svn propdel svn:mime-type file-name
作業ディレクトリ以下を指定したバージョンに戻したい:
svn merge -r HEAD:戻したいバージョン . svn commit
ログメッセージをスペルミスしたので直したい:
log.txt に新しいログメッセージを書いておいて
svn propset svn:log -F log.txt -r [リビジョン番号] --revprop
または
svnadmin setlog /path/to/repos -r [リビジョン番号] log.txt
ただし、repos/hooks/pre-revprop-change が存在して正常終了するような設定でないといけない。
#!/bin/sh exit 0 # 危険な pre-revprop-changes の例
$Id$ を使う
svn propset svn:keywords Id ファイル svn commit ファイル
TortoiseSVN なら右クリックメニューでプロパティを選択し、Subversion タブから設定してコミット。
関連情報
Subversion 関連ツール
- svn - コマンドラインクライアント。
- TortoiseSVN - エクスプローラのコンテキストメニューに機能が追加される。便利。
- svnserve、cvs2svn
- SVN::Web - http://search.cpan.org/.../SVN/Web.pm
- CRAM-MD5
- SVK
ChangeLog 関連ツール
- svn2cl (XSLT)
- svn2log
- gnuify-changelog.pl (Subversion の examples に収録)
Emacs 関連ツール/マクロ
その他
書籍
スポンサード リンク
Related term
2004年7月30日 (金)
■ vc-svn.el / psvn.el

そろそろ Emacs でも便利に Subversion を使えるように設定しよう。 と調べたら vc-svn.el と psvn.el は既に subversion Debian パッケージに含まれていた。
も既にインストールされているのだが、両方とも中身がコメントアウトされているので有効になっていなかっただけ。
CVS を使う時はもっぱら VC の機能しか使っていなくて pcl-cvs は使っていなかった。 しかし Subversion の場合は CVS とは違って複数のファイルをまとめてコミットする事が(その方が効果的なので)多くなるから psvn も活用できるようにしたい。
vc-update-change-log がないと困るのだが vc-svn.el でも動くかな。
- vc-svn.el を使いたいので Emacs 22 に移行することにした (2006-03-25)
- cvs2svn (2004-02-24)
- Emacs 22 だと howm に色がつかないので Emacs 21 に戻す (2006-04-01)
- Mozex を使って Firefox 1.5.0.1 の textarea... (2006-02-18)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
2004年8月2日 (月)
■ Subversion で大文字・小文字のみ違うファイル名へ変更

Windows ユーザが拡張子を全て大文字にしたファイル名のファイル (hoge.PNG) を登録していた。Windows 上の挙動のチェックがてら Linux 側で
svn move hoge.PNG hoge.png svn commit
してみた。
もちろん Linux 上では問題なし。
Windows 側で TortoiseSVN を使って更新をかけたらエラー。 hoge.PNG のみ先に単体でアップデートすることで作業コピーからの削除まではできるが、.svn の中のファイルのコピーだかで失敗する。
結局作業コピーを削除してチェックアウトしなおし。
- 普通の人向けに svnserve を立ち上げるか (2005-07-26)
- TortoiseSVN 1.0.4 (2004-05-17)
- amaroK で Linux 上の iTunes 音楽データを聞く (2006-01-22)
- Debian GNU/Linux で Dropbox (2008-09-16)
- connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 (2007-01-06)
2004年8月18日 (水)
■ [ お仕事 ] 事後評価セッション

プロジェクトを終了したので事後評価セッションを行う。
- Subversion の導入
- TeX化
が評価された。会社勤めで TeX を使っていられるのは幸せ。
- Subversion - auto-props (2004-05-18)
- TeX と Subversion (2004-04-16)
- Rekisa で TortoiseSVN から日本語ファイルの差分表示 (2006-03-23)
- プロジェクト関連ドキュメントを TeX で (2004-07-23)
- Red Hat Linux 8.0 Box の Subversion アッ... (2004-05-17)
2004年10月4日 (月)
■ 仕事のファイルを順次 Subversion リポジトリに突っ込む

1本長めの文書を作ることになったので、(ドラフトを含む)版管理もかねて Subversion のリポジトリに突っ込む事にする。
@ 階層
以前は
project -> trunk -> subproject
という階層にしていたのだが、プロジェクトをまたがるタグ打ちとかに向いていないので今回は
trunk -> project -> subproject
という感じに。
@ LaTeX
texmf に関してはSubversionの外部定義機能の利用をやめ、Makefile で TEXINPUTS を相対指定するように。 それでも別の階層にある texmf 下の共通画像を includegraphics する場合は '../../texmf/logo.png' などとしないといけないのがちょっと気持ち悪い。
@ タグ打ちは
タグ打ちはどうしようかな。みんなは trunk 以下をごっそり、branches の下にコピーしているのだろうか。 trunk の中の特定プロジェクトディレクトリ + 共通ディレクトリのみをコピーするという手もあるかもしれないけど、それはそれで繁雑だしな。
@ svn.sty
rcs.sty でいけるかなと思っていたのだが、Subversion だと
- $Date$ のフォーマットが違う
- $Revision$ がなぜかうまく展開されない ($LastChangedRevision$ の方はOK。Date の方は LastChangedDate で無くても別名が効くのに)
という問題が。探したら svn.sty という rcs.sty 亜種があったのでこちらを入れて解決。
@ ついでに
過去のドキュメントとかも順次。
- Subversion で SSH port forwarding 経由での... (2006-06-29)
- TortoiseSVN と svn+ssh (2004-07-26)
- 普通の人向けに svnserve を立ち上げるか (2005-07-26)
- ドキュメント管理用 Subversion リポジトリ作成 (2004-03-04)
- TortoiseSVN 1.0.4 (2004-05-17)
2004年12月31日 (金)
■私的10大ニュース2004 [ comp ]

@ cool programs
- pdumpfs
- Memcached
- 簡単・高速なキャッシュシステム。使える。
- Firefox
- Subversion
- 将来的に CVS から移行する事を考えて試験的に導入。良い。Windows でも TortoiseSVN のおかげで簡単に利用できる(CVS にも TortoiseCVS が出て便利になった)。
- 影舞
- 今年前半のプロジェクトで活躍。
- PAR
- NSIS
- Template Toolkit
- Webアプリケーション開発プロジェクトで採用。www.naney.org の静的コンテンツの生成でも使い始めた。
@ Palm OS 生活復活
PEG-TJ25を購入し、Palm OS 生活復活。 最初はおもちゃのつもりで買ったのだが、プロジェクトマネジメントなどにシフトした仕事のスケジュール管理などで大活躍。
PDA 市場の明るい話はあまり聞かないが、末長く製品が出て続けて欲しい。
- Module::Build でソースパッケージング (2005-08-24)
- DAR で差分/増分バックアップ (2005-04-02)
- NSIS でインストーラを作ってみる。 (2004-08-11)
- クラッシュは突然に - DAR の使用を再検討 (2009-01-06)
- PAR (2004-07-19)
2005年1月31日 (月)
■ 外部定義か作業ディレクトリを分けるか、trunk にブランチか

Subversion のリポジトリのレイアウトを思案中。
repos
|
+- branches
|
+- tags
|
+- trunk
|
+- project
| |
| +- 2004
| |
| +- 2005
|
+- texmf
という構成がある。 project に年別のサブブロジェクト 2004、2005 がある。 texmf は repos 以下で共有したいマクロディレクトリ。
問題は各サブプロジェクトでどうやって texmf を共有するか。 ここで 2005 + texmf を使用する際には 2004 まで一緒に作業ディレクトリにチェックアウトしたくないとする。 texmf は各プロジェクトの共通部分で随時改良される。 これらの改良は各プロジェクトで共有したい。
ただしプロジェクトの tag を打つ場合はその時点で使用されている texmf もセットで tag を打っておき、その tag をチェックアウトする事でサブプロジェクトのセットを再構築できる必要がある。
@ 作業ディレクトリを2つチェックアウトする方法
trunk/project/2005 trunk/texmf
の2つをチェックアウトする。2005 ディレクトリからは ../../texmf で参照するようにする。
@ 利点
- texmf を一括管理できる。
@ 欠点
- 作業者が2つの作業ディレクトリをこの構成でチェックアウトすることを知っている必要がある。間違えて違うURLをチェックアウトしてしまうかもしれない。
- 更新も毎回2つのディレクトリでする必要がある。texmf の update 忘れる等のミスをおかしやすい。
tag を打つ場合は
tags/release-1.0.0/project/2005 tags/release-1.0.0/texmf
と2つをとりまとめる必要がある。
@ サブプロジェクトにブランチを作る方法
texmf を trunk/project/2005/texmf のようにコピーする。
trunk
|
+- project
|
+- 2005
|
+- texmf
2005 ディレクトリからは texmf で参照するようにする。
@ 利点
- チェックアウトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf サブディレクトリは再帰的にチェックアウトされる)。
- trunk/project/2005 の tag を作るだけで、閉じたスナップショットを作れる。
- texmf が他のプロジェクトと独立する。
@ 欠点
- trunk/project/2005/texmf から trunk/texmf へのマージ、また逆へのマージを適宜行って同期しておく必要がある。骨が折れる。
- trunk の下にブランチ的な要素があるのがちょっと気持ち悪い。
@ 外部定義(svn:externals)を使う方法
trunk/project/2005 の svn:externals 属性として trunk/texmf のURLを指定し trunk/project/2005/texmf となるようにする。
@ 利点
- チェックアプトする人間は trunk/project/2005 をチェックアウトするだけで良い(texmf 外部定義は自動的にチェックアウトされる)。
- texmf を一括管理できる。
@ 欠点
- texmf 以下は別として扱われるので、更新処理などのオーバーヘッドが結構ある(遅い)。
- tag 打ちが面倒
tag を打つ際は
tags/release-1.0.0/project/2005 tags/release-1.0.0/texmf
と2つをとりまとめた上、tags/release-1.0.0/project/2005 の svn:externals のURLを書き換える必要がある。
将来リポジトリが移動してURLが変わった際も(実体は同じリポジトリにあるにもかかわらず)全てのURLを書き換える必要がある。
あるいは tag を打つ際に svn:externals をクリアし tags/release-1.0.0/project/texmf とコピーする方法もある。
@ どれにするか?
去年は外部定義を使用する方法で運用してみたが、update が遅い等それほど使い勝手が良くなかった。
今回はブランチ方式にしようかなと思う。 マージが面倒なようなら、次回は一番上の方式で。
- ドキュメント管理用 Subversion リポジトリ作成 (2004-03-04)
- Subversion (2004-02-18)
- Subversion で間違えてディレクトリをごっそり消してコミットしてし... (2006-11-28)
- プロジェクト関連ドキュメントを TeX で (2004-07-23)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
2005年2月28日 (月)
■ 緊急出荷

午後に入って本日出荷のスクランブルが入る。 最優先ミッションにつき、他をキャンセルして作業開始。
チームメンバと協力しつつ一気にカタチにする。 ここしばらく Subversion ベースでドキュメントやリリースファイルの管理をしていたおかげで、比較的効率的に作業がすすむ。
で何とか本日付けで出荷。
社外ミーティングを終えた後22時近くに帰社してくれたメンバに感謝。 差し入れのなめらかプリンで気持ちもなめらか。ゴチ。
しかし考えてみればミーティングを除く実作業でこの時間まで残業というのは、この会社に入ってから初めてだったな。 幸せというべきか。
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
- 今日のさえずり - Twitter ずっと見てたら仕事の効率落ちるんじゃない? (2008-10-31)
- Debian GNU/Linux で Dropbox (2008-09-16)
- 今日のさえずり - ソフマップの店員にヨドバシカメラの場所たずねているジイチャン (2009-09-02)
- 今日のさえずり - スパイだからミハルだってようやく気がついた (2008-11-28)
2005年7月26日 (火)
■ 普通の人向けに svnserve を立ち上げるか

開発チームでは主に svn+ssh で Subversion を利用している。
Windows ユーザは
- 前準備「PuTTYgen で鍵ペアを生成し」「リポジトリのあるサーバ(Linux)側に公開鍵を登録」
- 前準備「Pagent を動かして秘密鍵を指定しておく」
- TortoiseSVN でリポジトリアクセス
という手順をとっている(参考記事)。 しかしこの方法は SSH に詳しくなかったり Linux のオペレーションとかに慣れていなかったりするユーザにはかなり敷居が高い。
最近ソフトウェア開発以外でのチームでも Subversion の利用を検討しているが、この手順だと多分萎えるはず。
SSHで暗号化するほどのセキュリティが必要ない運用なので、svnserve を起動して運用した方が楽そうだ。まだ使ったことがないけれど。
svnserve を実行する権限を気にする必要がある以外は基本的には手間なしのはず。 しかし svnserve の組み込みの認証機能を使う場合には、平文パスワード文字列を含むパスワードファイルを使う必要があるのがちょっと嫌。
- TortoiseSVN と svn+ssh (2004-07-26)
- TortoiseSVN 1.0.4 (2004-05-17)
- ノート PC を持たずに会社に行きたい (2006-12-21)
- Unison + Zebedee (2004-06-11)
- TortoiseSVN と svn+ssh な svn:externals (2004-07-23)
2006年2月15日 (水)
■ ドキュメンテーション大全

プロジェクトの後半で納品用ドキュメントの整備を始めるのだが、その時はたいがいもう切羽詰りはじめていて構成やら体裁やらマネジメントやらを工夫する余力が無かったりする。 ついつい(次回は改良しようと思っていつも思っている)前回のプロジェクトの手法を踏襲してしまいがちだ。 ともすれば劣化コピーになりかねない。
やはり、忙しくても日頃からの改善は重要である。
最近はアジェンダ・議事録・開発メモなどを、積極的に Wiki や Subversion で共有するようにし、その点では以前より改善してきている。
今後はさらに、出荷ドキュメントのレビュープロセスなどを確立し品質を高めていきたいところである。 現状でもチームメンバでのピアデスクチェックやパスアランドを非形式的に行っているのだが、「チェックの程度」やその後の「修正」および「修正の確認」については、まだなんとなくやったかなという具合。この辺りを工夫したい。
先月発売されていて気になっていた「開発の現場 Vol.003」に、何かヒントがあるかなと思って買ってみた。
パラパラと見た感じではテクニカルライティングの話はあまりなく、主にソフトウェア開発における中間成果物としてのドキュメントや開発者間ドキュメントをどうとりまとめていくかという話が中心のよう。 Wiki による開発資料のライトな共有など、うちのチームでも進めている話など。
「(最初から)完全なドキュメントを書こうとしない」というのはもっとも。 状況はほとんどの場合変わるし、最初の段階では未確定の部分も多い。 だからといって、いつまでたっても手元で温めていてもしょうがない。
技術的な話では Perl の Pod を活用しようという話。 Perl 以外の言語のコメント中に Pod 形式でドキュメントを書こうという提案や、Apache で動的に Pod ドキュメントを整形しようという話とか。
テキストフォーマットとしての Pod は =over / =item / =back によるリスト表現など、最近のフォーマットに比べてすごく読み易いわけではないが、たしかに他の言語のコメントに埋め込んでおいて処理するのは、標準の Pod 関連のモジュールでできるな。
自分も Pod でドキュメントを書くけれど、(Perl 以外は) 個人的には reStructuredText にしたいと考えている。 ただ Pod みたいに他のテキストの一部に埋め込んでその部分のみ処理する記法およびツールがが標準の reStructuredText / Docutils には見当らない。 実はどっかにあるのだろうか。
[ 書評 ]
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
- 私的10大ニュース2005 [ comp ] (2005-12-31)
- 過去の今ごろ (2004-09-19)
- Google ドキュメントでソフトウェアかんばん (2008-03-30)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2006年2月17日 (金)
■ SVN::Webインストール失敗

社内サーバ上の Subversion リポジトリを気軽に閲覧できるように、以前から試そうと思っていた SVN::Web をインストールしてみる。
しかし Subversion の Perl バインディングである SVN::Core は、Subversion パッケージに同梱されていて独立していないのか。 Subversion は Red Hat Linux 8.0 へ RPM パッケージで入れているのだが、SVN::Web の方は /usr/local/perl-5.8.8 以下にインストールした Perl v5.8.8 上へ入れようと思っていたので、はたと困る。
--with-perl5=/usr/local/perl-5.8.8/bin/perl
で configure して、Perl モジュールだけインストールしてみたけれどうまく動かず。
素直に Red Hat Linux 8.0 に標準で入っている Perl v5.8.0 に入れるかなぁ。
- CPAN のPerl モジュールを RPM パッケージ化する (2003-04-22)
- 野良パッケージと依存 Perl モジュールのインストールセット を CPA... (2006-02-12)
- 野良パッケージと依存 Perl モジュールのインストールセット をCPAN... (2006-02-11)
- 今日のさえずり - 京都の小学校のコンピュータ室にいったら、Squeak が (2008-03-06)
- Plagger で Twitter のあれこれをメールで通知 (2008-12-25)
■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.039846s / load averages: 0.07, 0.19, 0.20
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)






◇ Twitter やってます。この記事が気にいったらぜひ twitter.com/Naney の follower になってください。