トップ(最新) | <前 | 次>

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 関連ツール

ChangeLog 関連ツール

Emacs 関連ツール/マクロ

その他

書籍

image:ISBN:4872805054

スポンサード リンク

Related term

2004年7月30日 (金)

vc-svn.el / psvn.el このエントリーを含むはてなブックマーク

スポンサード リンク

そろそろ Emacs でも便利に Subversion を使えるように設定しよう。 と調べたら vc-svn.elpsvn.el は既に subversion Debian パッケージに含まれていた。

も既にインストールされているのだが、両方とも中身がコメントアウトされているので有効になっていなかっただけ。

CVS を使う時はもっぱら VC の機能しか使っていなくて pcl-cvs は使っていなかった。 しかし Subversion の場合は CVS とは違って複数のファイルをまとめてコミットする事が(その方が効果的なので)多くなるから psvn も活用できるようにしたい。

vc-update-change-log がないと困るのだが vc-svn.el でも動くかな。

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


[ 7月30日全て ]

2004年8月2日 (月)

Subversion で大文字・小文字のみ違うファイル名へ変更 このエントリーを含むはてなブックマーク

Windows ユーザが拡張子を全て大文字にしたファイル名のファイル (hoge.PNG) を登録していた。Windows 上の挙動のチェックがてら Linux 側で

 svn move hoge.PNG hoge.png
 svn commit

してみた。

もちろん Linux 上では問題なし。

Windows 側で TortoiseSVN を使って更新をかけたらエラー。 hoge.PNG のみ先に単体でアップデートすることで作業コピーからの削除まではできるが、.svn の中のファイルのコピーだかで失敗する。

結局作業コピーを削除してチェックアウトしなおし。


[ 8月2日全て ]

2004年8月18日 (水)

[ お仕事 ] 事後評価セッション このエントリーを含むはてなブックマーク

プロジェクトを終了したので事後評価セッションを行う。

が評価された。会社勤めで TeX を使っていられるのは幸せ。


[ 8月18日全て ]

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 亜種があったのでこちらを入れて解決。

@ ついでに

過去のドキュメントとかも順次。


[ 10月4日全て ]

2004年12月31日 (金)

私的10大ニュース2004 [ comp ] このエントリーを含むはてなブックマーク

@ cool programs

@ Palm OS 生活復活

PEG-TJ25を購入し、Palm OS 生活復活。 最初はおもちゃのつもりで買ったのだが、プロジェクトマネジメントなどにシフトした仕事のスケジュール管理などで大活躍。

PDA 市場の明るい話はあまり聞かないが、末長く製品が出て続けて欲しい。

http://www.naney.org/img/2004/X/X2004-03-05-0003.jpg http://www.naney.org/img/2004/X/X2004-03-14-0004.jpg http://www.naney.org/img/2004/X/X2004-04-10-0001.jpg


[ 12月31日全て ]

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:externalsURLを書き換える必要がある。

将来リポジトリが移動してURLが変わった際も(実体は同じリポジトリにあるにもかかわらず)全てのURLを書き換える必要がある。

あるいは tag を打つ際に svn:externals をクリアし tags/release-1.0.0/project/texmf とコピーする方法もある。

@ どれにするか?

去年は外部定義を使用する方法で運用してみたが、update が遅い等それほど使い勝手が良くなかった。

今回はブランチ方式にしようかなと思う。 マージが面倒なようなら、次回は一番上の方式で。


[ 1月31日全て ]

2005年2月28日 (月)

緊急出荷 このエントリーを含むはてなブックマーク

午後に入って本日出荷のスクランブルが入る。 最優先ミッションにつき、他をキャンセルして作業開始。

チームメンバと協力しつつ一気にカタチにする。 ここしばらく Subversion ベースでドキュメントやリリースファイルの管理をしていたおかげで、比較的効率的に作業がすすむ。

で何とか本日付けで出荷。

社外ミーティングを終えた後22時近くに帰社してくれたメンバに感謝。 差し入れのなめらかプリンで気持ちもなめらか。ゴチ。

しかし考えてみればミーティングを除く実作業でこの時間まで残業というのは、この会社に入ってから初めてだったな。 幸せというべきか。


[ 2月28日全て ]

2005年7月26日 (火)

普通の人向けに svnserve を立ち上げるか このエントリーを含むはてなブックマーク

開発チームでは主に svn+ssh で Subversion を利用している。

Windows ユーザは

  1. 前準備「PuTTYgen で鍵ペアを生成し」「リポジトリのあるサーバ(Linux)側に公開鍵を登録」
  2. 前準備「Pagent を動かして秘密鍵を指定しておく」
  3. TortoiseSVN でリポジトリアクセス

という手順をとっている(参考記事)。 しかしこの方法は SSH に詳しくなかったり Linux のオペレーションとかに慣れていなかったりするユーザにはかなり敷居が高い。

最近ソフトウェア開発以外でのチームでも Subversion の利用を検討しているが、この手順だと多分萎えるはず。

SSH暗号化するほどのセキュリティが必要ない運用なので、svnserve を起動して運用した方が楽そうだ。まだ使ったことがないけれど。

svnserve を実行する権限を気にする必要がある以外は基本的には手間なしのはず。 しかし svnserve の組み込みの認証機能を使う場合には、平文パスワード文字列を含むパスワードファイルを使う必要があるのがちょっと嫌。


[ 7月26日全て ]

2006年2月15日 (水)

ドキュメンテーション大全 このエントリーを含むはてなブックマーク

開発の現場 Vol.003 効率UP&スキルUP ドキュメンテーション大全

プロジェクトの後半で納品用ドキュメントの整備を始めるのだが、その時はたいがいもう切羽詰りはじめていて構成やら体裁やらマネジメントやらを工夫する余力が無かったりする。 ついつい(次回は改良しようと思っていつも思っている)前回のプロジェクトの手法を踏襲してしまいがちだ。 ともすれば劣化コピーになりかねない。

やはり、忙しくても日頃からの改善は重要である。

最近はアジェンダ議事録開発メモなどを、積極的に WikiSubversion で共有するようにし、その点では以前より改善してきている。

今後はさらに、出荷ドキュメントのレビュープロセスなどを確立し品質を高めていきたいところである。 現状でもチームメンバでのピアデスクチェックやパスアランドを非形式的に行っているのだが、「チェックの程度」やその後の「修正」および「修正の確認」については、まだなんとなくやったかなという具合。この辺りを工夫したい。

先月発売されていて気になっていた「開発現場 Vol.003」に、何かヒントがあるかなと思って買ってみた。

パラパラと見た感じではテクニカルライティングの話はあまりなく、主にソフトウェア開発における中間成果物としてのドキュメントや開発者間ドキュメントをどうとりまとめていくかという話が中心のよう。 Wiki による開発資料のライトな共有など、うちのチームでも進めている話など。

「(最初から)完全なドキュメントを書こうとしない」というのはもっとも。 状況はほとんどの場合変わるし、最初の段階では未確定の部分も多い。 だからといって、いつまでたっても手元で温めていてもしょうがない。

技術的な話では PerlPod を活用しようという話。 Perl 以外の言語のコメント中に Pod 形式でドキュメントを書こうという提案や、Apache で動的に Pod ドキュメントを整形しようという話とか。

テキストフォーマットとしての Pod は =over / =item / =back によるリスト表現など、最近のフォーマットに比べてすごく読み易いわけではないが、たしかに他の言語のコメントに埋め込んでおいて処理するのは、標準の Pod 関連のモジュールでできるな。

自分も Pod でドキュメントを書くけれど、(Perl 以外は) 個人的には reStructuredText にしたいと考えている。 ただ Pod みたいに他のテキストの一部に埋め込んでその部分のみ処理する記法およびツールがが標準の reStructuredText / Docutils には見当らない。 実はどっかにあるのだろうか。


[ 書評 ]


[ 2月15日全て ]

2006年2月17日 (金)

SVN::Webインストール失敗 このエントリーを含むはてなブックマーク

社内サーバ上の Subversion リポジトリを気軽に閲覧できるように、以前から試そうと思っていた SVN::Webインストールしてみる。

しかし SubversionPerl バインディングである SVN::Core は、Subversion パッケージに同梱されていて独立していないのか。 SubversionRed 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 に入れるかなぁ。


[ 2月17日全て ]

この日記のはてなブックマーク数 Add to Google RSS

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)