トップ(最新) | <前

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

2006年3月23日 (木)

Rekisa で TortoiseSVN から日本語ファイルの差分表示 このエントリーを含むはてなブックマーク

スポンサード リンク

自分の開発チームでは、 Subversion を用いて pLaTeX2e ドキュメントを共同執筆というスタイルが随分多くなってきた (自分が推進しているわけだが)。

チームメンバのほとんどは Windows 上で TortoiseSVN を使っているのだが、内蔵の差分ビューアを使っていると charset を自動判別してくれないので、いわゆる JIS コードで書いている TeX のソースファイルの扱いがちょっと不便である。

そういえば以前はこの問題の声が聞かれたけれど、最近誰も言わなくなったな。 解決したのか、差分とか見なくなったのか。

数行書き換えて、一つの変更点としてコミットメントログを残せる単位でガシガシコミットしてしまう私と一緒に作業している人は、いつもコミット負けしているはずなのだが。

ということで TortoiseSVN で外部差分ビューアとして使えるツールを調べておこう。 まずは差分表示アプリケーション Rekisa。

日本語のファイルの charset を自動判別してくれるし、表示が美しい。 差分を見るには良さそうである。

マージ作業もあわせてするとすると編集機能が必要だが、Rekisa 自身では直接編集できないようだ(外部エディタを呼び出すことはできる)。

マージまですると WinMerge が本命? こちらはまだ試していないので後日。

twitter.com/Naney の follower になってください。


[ 3月23日全て ]

2006年3月25日 (土)

vc-svn.el を使いたいので Emacs 22 に移行することにした このエントリーを含むはてなブックマーク

SubversionEmacsVC バックエンド vc-svn.el があるので CVS の時と同様気軽に使えていたのだが、かなり前から Debian の subversion パッケージから取り除かれて使えなくなってしまっていた。

vc-svn.elEmacs 22 に含まれるらしく、Debian だと emacs-snapshot(-common と -el)に含まれている。 やっぱり VC で使えないと不便なので、これを機に Emacs 22 に移行することにした。

後生大事に Emacs 19 / 20 / 21 それぞれ用に emacs-major-version で設定を切り分けている .emacs のコードがあったりするので、その部分は動作確認しつつ Emacs 22 用の設定を作成する。

Emacs 21 とちょっと設定を変える必要がある部分があったけれど、おおむね問題なく動いているようだ。

問題なさそうなので update-alternatives で普段使いに設定しておこう。


[ 3月25日全て ]

2006年4月1日 (土)

Emacs 22 だと howm に色がつかないので Emacs 21 に戻す このエントリーを含むはてなブックマーク

1週間前にEmacs 22 に乗り換えたのだが、これだと昨日から使いはじめた howm に色がつかない。

あまりにも寂しい。

というか色分けされないと便利さ半減。 なのであっさり Emacs 21 に戻すことにした。 vc-svn.el の方は、Subversion Debian パッケージREADME.Debian にある通り、Emacs 21 用に

 svn export -r9195 \
      http://svn.collab.net/repos/svn/trunk/contrib/client-side/vc-svn.el

でとってきてローカルに置き動くようにしておく。

 (setq vc-handled-backends
       (append vc-handled-backends (list 'SVN)))

も忘れずに。


[ 4月1日全て ]

2006年6月29日 (木)

SubversionSSH port forwarding 経由での svn+ssh このエントリーを含むはてなブックマーク

普段プライベートネットワーク内で、svn+ssh で接続している Subversion リポジトリSSH 経由で port fowarding して接続するようにする。

 [ノート PC] -- [ゲートウェイ] -- [リポジトリのあるサーバ]
                gw.example.com    192.168.0.x

@ ポートフォワーディング用 SSH ラッパー

例えば svn-gw-ssh という名前で以下のファイルを作成:

 #!/bin/sh
 HOST_NAME=$1
 shift 1
 ssh -f -L 8023:$HOST_NAME:22 gw.example.com sleep 10
 ssh -p 8023 -o HostKeyAlias=$HOST_NAME localhost $@

@ svn 用ラッパーも書いておく

例えば svn-gw という名前で以下のファイルを作成:

 #!/bin/sh
 SVN_SSH=svn-gw-ssh svn $@

@ 使う

これで例えば svn+ssh://192.168.0.x/var/repos でチェックアウトした作業ディレクトリ上をプライベートネットワーク内外で、更新したりコミットしたりできるようになる。

プライベートネットワーク内からは今まで通り。

 svn update

プライベートネットワーク外からは

 svn-gw update

のようにする。

これで

と合わせて随分外部で作業できるようになった。 それだけ、外部でもやれる仕事が増えたということでもあるが。


[ 6月29日全て ]

2006年11月28日 (火)

Subversion で間違えてディレクトリをごっそり消してコミットしてしまった時 このエントリーを含むはてなブックマーク

今日のプロジェクト成果物とりまとめを前に昨日、メンバの1人が trunk 直下の2年半分のファイルが入っているプロジェクトディレクトリをなぜか削除してコミット。

朝きたら過去のリビジョンをエクスポートして再度追加して戻したとかで、全部履歴が切れてしまっていた。作業ディレクトリも全部入れ替わり。

こういう時は過去のリビジョンからの copy をすべし。

  • 履歴が維持される
  • 属性などもコピーされる
  • 他のチェックアウト済み作業ディレクトリへの影響もなし

といった点で優れている。

@ 作業ディレクトリを使って消したディレクトリを戻す

 svn copy --revision R URL .
 svn commit -m "Resurrected dir1 from revision R"

ここで R は間違えて消してコミットしたリビジョンの1つ前のリビジョン。 URL は削除したディレクトリの URL

実行例:

 # テスト用ディレクトリを作る
 mkdir /tmp/svntest
 mkdir /tmp/svntest/work

 # テスト用リポジトリを作る
 svnadmin create /tmp/svntest/repos --fs-type fsfs

 # テスト用作業ディレクトリでファイルを作成
 cd /tmp/svntest/work
 mkdir trunk branches tags
 svn import . file:///tmp/svntest/repos --message 'Initial repository layout'
 rm -r branches tags trunk
 svn checkout file:///tmp/svntest/repos/trunk
 cd trunk
 svn mkdir dir1
 echo test1 > dir1/test1.txt
 echo test2 > dir1/test2.txt
 svn add dir1/test1.txt dir1/test2.txt
 svn commit -m "Add dir1"
 echo test3 > dir1/test2.txt
 svn commit -m "Update dir1/test2.txt"

 # 消してコミットしてしまう!!!
 svn remove dir1
 svn update
 svn commit -m "remove dir1"

 # 元に戻す
 svn copy --revision 3 file:///tmp/svntest/repos/trunk/dir1 .
 svn commit -m "Resurrected dir1 from revision 3"

@ リポジトリ上で直接戻す

 svn copy --revision R URL1 URL2

ここで R は間違えて消してコミットしたリビジョンの1つ前のリビジョン。 URL1 は削除したディレクトリの URLURL2 はその親ディレクトリの URL

実行例:

 # テスト用ディレクトリを作る
 mkdir /tmp/svntest
 mkdir /tmp/svntest/work

 # テスト用リポジトリを作る
 svnadmin create /tmp/svntest/repos --fs-type fsfs

 # テスト用作業ディレクトリでファイルを作成
 cd /tmp/svntest/work
 mkdir trunk branches tags
 svn import . file:///tmp/svntest/repos --message 'Initial repository layout'
 rm -r branches tags trunk
 svn checkout file:///tmp/svntest/repos/trunk
 cd trunk
 svn mkdir dir1
 echo test1 > dir1/test1.txt
 echo test2 > dir1/test2.txt
 svn add dir1/test1.txt dir1/test2.txt
 svn commit -m "Add dir1"
 echo test3 > dir1/test2.txt
 svn commit -m "Update dir1/test2.txt"

 # 消してコミットしてしまう!!!
 svn remove dir1
 svn update
 svn commit -m "remove dir1"

 # 元に戻す

 svn copy --revision 3 file:///tmp/svntest/repos/trunk/dir1 \
   file:///tmp/svntest/repos/trunk -m "Resurrected dir1 from revision 3"
 svn update

[ 11月28日全て ]

2007年1月6日 (土)

connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 このエントリーを含むはてなブックマーク

以前社外から社内 Web サイトへのアクセスは autossh + FoxyProxy を使って SOCKS 経由で直接できるように設定した (記事)。 また UnisonSubversion もそれぞれ SSH port forwarding 経由で直接アクセスできるようにしてある (Unison の記事Subversion の記事)。

しかし社外から社内サーバへの SSH 接続(やファイル転送)は、以前として一旦中継ホストに接続(転送)してから再度接続(転送)していて面倒であった。

調べたところ Shun-ichi GOTO氏の SSH プロキシコマンド connect.c を使うと SOCKS サーバ経由で直接接続できるようなので設定してみた。

 [クライアント:8090] -- SOCKS -- [ゲートウェイ] -- [社内サーバ]
                                 gw.example.com    192.168.1.x

@ インストール

Debian なので apt-get で。

 apt-get install connect-proxy

@ SSH の設定

~/.ssh/config に以下の行を追加。

 Host 192.168.1.*
   ProxyCommand /usr/bin/connect-proxy -S localhost:8090 %h %p

192.168.1.* に接続する際は、connect-proxy を使ってローカルホストの 8090 ポートの SOCKS を通るようにする設定。

@ SSHSOCKS サーバにする

autossh を使って SSHSOCKS サーバを立てる

 autossh -N -f -D8090 gw.example.com

これで準備 OK。

@ 使ってみる

@ SSH 接続
 ssh 192.168.1.x

で接続を確認。

@ Konqueror (KDE)
 fish://192.168.1.x/

で直接ブラウズ、読み書き可能なことを確認。

@ Unison

普通に 192.168.1.x と同期できることを確認。

@ CVS

普通に 192.168.1.x 上のリポジトリに対して cvs update できることを確認

@ Subversion

普通に 192.168.1.x 上のリポジトリに対して svn update をかけるとアップデートし終わって最後に

 FATAL: output (local) failed, errno=32

というエラーがでる。

@ 便利

Subversion だけちょっと気がかりだれど、その他はうまく行っている感じ。

これでかなり手軽に接続、転送できるようになった。 便利、便利。

@ 追記 (2009年2月23日)

一時的に connect.c を通らないで直接接続する際には 'ssh -o ProxyCommand=none' とする。

 例:
 SVN_SSH='ssh -o ProxyCommand=none' svn update

[ 1月6日全て ]

2008年3月6日 (木)

今日のさえずり - 京都小学校のコンピュータ室にいったら、Squeak が このエントリーを含むはてなブックマーク

@ 2008年03月05日

naney:2311864816

@ 2008年03月06日

  • 11:33 そういえばこの間京都小学校のコンピュータ室にいったら、Squeak がインストールされていた。使っているのか?
  • 12:53 オートペディアしてみた。 http://tinyurl.com/3ygonk
  • 14:18 サーバ上で svnadmin create してみたが何故か終了しない。何度かやっても駄目。バージョン上げてみるか。
  • 14:34 Subversion 1.3.0 から 1.4.5 (Red Hat Linux 8.0 用バイナリ) にあげたら、すんなり svnadmin create できるようになった。
  • 17:00 そうか C# って既にあるクラス名と同じ名前空間名を作れないのか。Perl の package と同じつもりでいたので、名前考え直しだ。
  • 18:20 昨日のお昼に注文した VQ1005注文確認メールがようやくきて一安心。

[ 3月6日全て ]

2008年9月5日 (金)

Pentium 4 マシンから Athron 64 マシンに乗り替え このエントリーを含むはてなブックマーク

@ Dell Dimension 4500C

今会社で使っているデスクトップ PC は Dell Dimension 4500C。 Pentium 4 2.40 GHz、メモリ 768MB の Windows XP Home Edition SP2。

ここ最近メモリが足りないのかすぐアプリケーションが落ちまくり。 またいろんなソフトウェアインストールしたりアンインストールしたりを繰り返していたのでシステムがおかしくなってきているのか、動作も怪しい。

ちょっと仕事にならないレベルなってきたので、空いている別の Dell の PC に乗り替えることにした。

@ Dell Dimension C521

乗り替え先は Dell Dimension C521。 AMD Athlon 64 3200+、メモリ 1GB の Windows XP Home Edition SP2。

OSDell PC リストアで出荷状態に戻す。 と思ったらテストサーバとして Fedora とデュアルブートとして使われていたため、MBR が書き換えられていたのか Dell PC リストアに入れない。 Web で調べたところ Dsrfix というので元に戻せるとのことなので、これを使って MBR を戻す。

Dell PC リストア。リストア自体は結構あっという間に終わる。

Windows XP セットアップ後、順次ソフトウェアの追加・削除。 以下今日の作業分。

  1. [削除] Google デスクトップ
  2. [追加] Google Chrome
  3. [追加] Windows XP SP3
  4. [削除] マカフィー製品
  5. [追加] Norton Internet Security
  6. [追加] Skype
  7. [削除] Dell Network Assistant
  8. [削除] Adobe Reader 7
  9. [追加] Adobe Flash Player 9
  10. [追加] Adobe Reader 9
  11. [追加] ActivePerl
  12. [追加] 7-Zip
  13. [追加] Skype4COM
  14. [追加] Microsoft Office

あとは前の環境で入れていたもののうち、必要になったら順次入れていく予定。

XKeymacsSKKIME、zyzzy、 Unlocker、TrueCryptSubversionTortoiseSVNWinMerge ThinkingRockRipplex、 PDFCreator、ImgBurnJUDE/Community、DBDesigner、NUnit

今まで HHK Lite 使ってきてたけれど、これ PS/2 なので C521 には直接ささらないんだよな。どうしよう。PS/2 - USB コンバータ買うか。

それとも USB モデルの HHKB Lite 2 買うか。 カーソルキーはいらないけれど、HHKB Professional 2 は高いしキータッチが好みじゃないしなあ。悩ましい。


[ 9月5日全て ]

2008年9月16日 (火)

Debian GNU/LinuxDropbox このエントリーを含むはてなブックマーク

オンラインストレージサービスの Dropbox が一般公開された。 WindowsMac OS X だけでなく Linux でも使えるというのでインストールしてみた。

@ Windowsインストール

こちらは特筆することなし。ソフトウェアをダウンロードしてインストール。 プリファレンスで Dropbox ディレクトリを c:\home\naney\var\Dropbox に変更したぐらい。

@ Debian GNU/Linux sidインストール

Ubuntsu 用のバイナリはあるのだが、ソースも公開されているので今回はビルドしてインストールしてみる。 以下の手順で Debian パッケージ化してインストール

 sudo apt-get install libnautilus-extension-dev libnotify-dev
 tar jxvf nautilus-dropbox-0.4.1.tar.bz2
 cd nautilus-dropbox-0.4.1
 dh_make --createorig
 fakeroot dpkg-buildpackage
 sudo dpkg --install ../nautilus-dropbox_0.4.1-1_i386.deb

以上で Nautilus 拡張がインストールされる。Nautilus が起動しているなら killall nautilus で一旦止めてから、Nautilus を起動しなおす。 ターミナルから Nautilus を起動すると

 downloading dropbox from http://www.getdropbox.com/download?plat=lnx.x86
 downloading dropbox from http://dl-web.getdropbox.com/u/17/dropbox-lnx.x86-0.6.382.tar.gz
 dropboxd: どのプロセスもkillされませんでした

と出力される。

クローズドソースの dropboxd が ~/.dropbox-dist 以下に自動的にダウンロードされて実行される。

個人的な設定としてプリファレンスで Dropbox ディレクトリを ~/Dropbox から ~/var/Dropbox に変更しておいた。

あとは普通に Dropbox ディレクトリ上にファイルをコピーしたり修正したりすると、自動的にサーバ側と同期される。 最初 Nautilus というのをみたとき「Nautilus 上での処理しか反映されないのかなあ」と思ったのだが、別にそんなことはないようだ。

パーミッション・日本語ファイル名は未確認。

@ Dropbox インプレッション

ちょっとだけだが使ってみて、多くの人が絶賛する理由がなんとなく感じられた。 クールだ。 オフラインでの同期・高速な同期・リビジョン管理は便利そうである。

一方、PC 上の1ユーザで、Dropbox 複数アカウントの切り換えはちょっと面倒そう。 自前で退避させるしかないのかな。

また同期する PC によっては Subversion で特定のサブディレクトリのみチェックアウトできるように、一部のサブディレクトリのみ同期対象とできるといいなと思うのだがそういう機能はみあたらない。

完全に自分が占有している PC が複数台あって、セキュリティなどにあまり気をつかわなくてよく全部同期をかけても問題ない場合が、いちばんマッチしている利用パターンだな。


[ 9月16日全て ]

2009年12月8日 (火)

今日のさえずり - 吉野家牛丼、肉の厚さが改善された気がする このエントリーを含むはてなブックマーク

@ 2009年12月07日

  • 10:48 Google 日本語入力の評判がそんなに悪くなさそうなのでインストールしてみた。 SKK ハンドがストレスなくついてこれるかな。
  • 12:04 今日の昼休み秋葉原駅前へ。
  • 12:21 コクミンでリステリン 1000ml + 250ml が格安なので買っといた。 L:秋葉原 #Akihabara
  • 12:37 吉野家牛丼、肉の厚さが改善された気がする。
  • 12:46 2009年12月3日の歩行: 5553歩、4.30km、46分、5.50km/h、消費 212.7kcal、脂肪燃焼 30.4g、3.1エクササイズ。
  • 12:47 2009年12月4日の歩行: 5653歩、4.39km、47分、5.53km/h、消費 211.8kcal、脂肪燃焼 30.2g、3.1エクササイズ。
  • 12:48 2009年12月5日の歩行: 0歩、0.00km、0分、0.00km/h、消費 0.0kcal、脂肪燃焼 0.0g、0.0エクササイズ。
  • 12:49 2009年12月6日の歩行: 5039歩、3.86km、45分、5.11km/h、消費 192.7kcal、脂肪燃焼 27.6g、2.7エクササイズ。
  • 12:52 「風の(風の便り)で」という時はたいがい会話に入れなくて耳ダンボにして得た情報。
  • 18:36 あちゃー。社内からのある人のメールGmail がことごとく spam 扱いにしてた(え、最後に受けとれているの6月30日?)。チェックしてなくてすみませーん。
  • 20:23 あ、今日はユニクロジーンズの丈直し受け取りに行けないな。
  • 20:28 久しぶりに lonely ログインしてみた。すがすがしい。 http://bit.ly/7QI6Yz
  • 20:32 斜め後ろの人が一所懸命 lonely やってる。 http://bit.ly/7QI6Yz
  • 21:27 新橋駅前の SL 広場がなんかキラキラしてる。
  • 21:38 ちょっと本屋寄るか。
  • 21:52 外でケータイ触っていて手がかじかみつらいと今シーズン初めて感じた夜。
  • 21:53 近所のタイムズがオープンした。来客あった時に使ってもらおう。
  • 22:34 こんな時間ですが、見だいふく。
  • 22:40 @sakko_zzz 久しぶりの見だいふく食べて満足です。以前からこんなに肉厚だったかなという驚き。
  • 01:48 conversationlist 作った。 http://bit.ly/5JXWM5 http://bit.ly/4LSsdo

@ 2009年12月08日


[ 12月8日全て ]

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

Process Time: 0.04211s / load averages: 0.22, 0.18, 0.12
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)