google-code-prettify

ラベル subversion の投稿を表示しています。 すべての投稿を表示
ラベル subversion の投稿を表示しています。 すべての投稿を表示

2008-11-18

subversionのpost-commitフックで、pipeがつまるのを修正

以前作った、commit時にメールを送るpost-commitだが、変更ファイル数が多い時に、pipeがつまって止まってしまう事がわかったので、修正した。

以前のバージョン:
(nkfr, nkfw) = popen2.popen('nkf -j')
nkfw.write(log2)
nkfw.close()
jislog = nkfr.read()
nkfr.close()

これだと、
・nkf側が、JISに変換した結果をwriteしようとする
・post-commit側もwrite中
の時に、デッドロックする。

selectを使うという手もあったが、もっと単純に、テンポラリファイルを作って対処する事にした。
(fd, tname) = tempfile.mkstemp()
os.write(fd, log2)
os.close(fd)

(nkfr, nkfw) = popen.popen2('nkf -j %s' % (tname,))
nkfw.close()
jislog = nkfr.read()
nkfr.close()

os.unlink(tname)

2008-09-01

AnkhSVN - visual studioでSubversion

visual studioとsubversionを連携できるAhknSVN。

via InfoQ

2008-07-14

漢直win+TortoiseSVN

TortoiseSVN1.4で漢直winを使う時には、
[TortoiseSVN]
className=Scintilla
outputMethod=1
としないと日本語を入力できなかったが、TortoiseSVN1.5では
[TortoiseSVN]
className=Scintilla
outputMethod=0
とする必要があるようだ。

2008-05-29

Subversionのブランチをソースコードレビューに使う

オンラインで行うソースコードレビューツールには、などいろいろある。

が、もっと簡単でお手軽な方法を見つけた。それは、
「Subversionのブランチをソースコードレビューに使う」
という物。

やり方:
  1. レビュー対象のソースコードを、ブランチしておく
  2. 各自レビューを行い、ソースコードの中にコメントを書き込む。(必ずしも、/* */で括られている必要は無い)
  3. コメントをcommitする
これだけ。
コメントには、/* FIXME */とか、/* XXX */とか書いておくと、あとでgrepしやすくて良いかもしれない。

メリット:
  • レビュアーが、好きなエディタが使える。
  • 導入がカンタン

デメリット:
  • レビューの内容をバグ表と関連付けるとか、直ったかどうか確認する、などの高度な事はできない

2008-03-21

xtermなどのタイトルバーに、svnのリポジトリのURLを表示する

いろいろなリポジトリをcheckoutしていると、今作業しているディレクトリが
何のリポジトリの物なのかがわからなくなる事がある。
わからないだけなら良いが、勘違いしてしまうと大変困る。

そこで、カレントディレクトリのリポジトリのパスをタイトルバーに表示する方法。

export PROMPT_COMMAND="svn info 2>/dev/null | python -c 'import sys;d=sys.stdin.readlines(); a = len(d)>2 and d[1].strip() or \"URL:\";sys.stdout.write(\"\033]2;\"+a+\"\007\")'"

bash3.0とsvn1.4.4とrxvt 2.7.10の組み合わせで動作している。

参考:
http://www.linux.or.jp/JF/JFdocs/Xterm-Title.txt

2008-01-24

Subversionで、commitメッセージ無しのcommitをはじく

hook/pre-commitを、以下のようにする。

#!/usr/bin/python

import sys
import os

repo = sys.argv[1]
txn = sys.argv[2]
svnlook = "/usr/bin/svnlook"

text = os.popen('%(svnlook)s log -t %(txn)s %(repo)s' \
% locals()).read()

if not text.strip():
sys.stderr.write("no commit message!!")
sys.exit(1)

2007-10-15

svv - /etc/以下のファイルをバージョン管理する

subversionやCVSで/etc/以下のファイルをバージョン管理しようとした場合、通常、/etc/にCVSや.svnを置く事になる。
この方法だと、以下の問題がある。

・/etc/にCVSや.svnが作られるので、いちいち何をするにもrootになる必要がある。
・/etc/以下のほとんどのファイルは管理したくない。そのため、ignore指定すべきファイルが多量になる。

そこで、できるだけrootになる必要が無く、管理したいファイルだけを指定するバージョン管理ソフトを作った。

svv

2007-08-28

SCPlugin - Finderと統合したsubversionクライアント

SCPlugin。
Mac OS X用のsubversionクライアントで、Finderと統合している。
windowsで言う所の、TortoiseSVNのような物。

via lifehacker

2007-04-04

バージョン管理システムで、commitにtag(category)をつけられるのはどうだろう

commit時に、「cleanup」とか「vulnerability」とか「buffer overflow」とか、タグをつけられるSCMはどうだろう。

ソースコードにある変更を行ってcommitした後に、変更し忘れに気付いて後日commitするという事はよくある。
そんな時に、その2つのcommitに同じタグがついていれば、探しやすいしわかりやすい。
branchにその変更を適用する時も、タグ名で検索を行えば適用し忘れも発生しにくい。

2007-03-15

subversionで、commitしたファイルでコミットメールの宛先を変える

Subversionで1つのリポジトリを複数のプロジェクトで使っている場合、見たくもない別プロジェクトのcommitメールが来てしまう事がある。

そこで、commitしたファイルによってcommitメールの宛先を変える事ができるpost-commitスクリプトを作った。

使い方
・リポジトリのrootに、conf.txtという名のファイルを作る(commitしておく)。
・conf.txtには、正規表現とメールアドレスをスペース区切りで書く。

conf.txtの例
.* all@example.com
trunk bob@example.com peter@example.com
crypto alice@example.com bob@exampel.com lupin3@example.com

ちなみに、以前はrubyで作ったが、今回はpythonで作り直した。
ちなみに、rubyバージョンのpost-commitが欲しい人は、こちらの方がデキが良いので、そっちを使いましょう。

2007-03-01

Subversion以外のVCSでsvn_load_dirsのような事をする

vcs-load-dirs。
darcs, git, mercurial, svkなどで、svn_load_dirs.plのような事をするためのプログラム。

via mercurial ML

2006-11-17

.batから特定フォルダを対象にTSVNのcommitダイアログを出す

以下の内容の.batファイルで、いつでもそのフォルダを対象にcommitダイアログを出せる。

TortoiseProc.exe /command:commit /path:"フォルダのパス" /notempfile

via TSVN ML

2006-09-20

TSVNで複数ファイルのkeyword展開をセットする

複数のファイルを選択した状態でプロパティダイアログを開くと、プルダウンメニューからsvn:keywordsを選ぶ事ができない。

でも実は、プルダウンに無い物でも手で入力できる。
via TSVN ML