Tag Archives: Subversion

svnでdiffの行数を取得する

このエントリーをはてなブックマークに追加
はてなブックマーク - svnでdiffの行数を取得する
Share on Facebook

どれだけコーディングしたかチェックするため、svnのdiffの行数を取得するコマンドを考えました。 下のコマンドを叩くと、変更された行の総数が表示されます。

(2011-08-17修正) 以前のコードはdiffのヘッダ行まで取得してしまっていたので、正しい数値が得られるよう修正しました。

svn diff -r {before}[:{after}] -x -b {path} | grep -E '^[+\-][[:blank:]]' | wc -l

例えば「チェンジセット301~310で uso.php に発生した差分の総行数」は、下のようになります。

# svn diff -r 301:310 -x -b ./uso.php | grep -E '^[+\-][[:blank:]]' | wc -l
500

ロジックは、

  1. 空白文字の差分(インデントや空行の削除)を無視してdiffを取る
  2. 差分行だけ(「+ 」「- 」どちらかから始まっている行)を取得する
  3. 行数をカウントする

となっています。

参考

svnコマンドを打つ度に「パスワードを保存しますか?」と聞かれるのを抑制する

このエントリーをはてなブックマークに追加
はてなブックマーク - svnコマンドを打つ度に「パスワードを保存しますか?」と聞かれるのを抑制する
Share on Facebook

Subversion 1.6にアップグレードしてからというもの、何かsvnコマンドを打つ度に下のメッセージが出るようになりました。

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

<http:> TEST SVN repository

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/home/stylesen/.subversion/servers'.
-----------------------------------------------------------------------
暗号化されていないパスワードを保存しますか (yes/no)?

保存する気は無いのに毎回聞いてきてやかましいです。 抑止するには以下のようにconfigを編集します。

# ~/.subversion/config

# 以下の行を追加する
store-passwords = no
store-plaintext-passwords = no

ちなみに、一度保存してしまったユーザーの情報は ~/.subversion/auth/svn.simple/の中に保存されています。 邪魔なので消してしまいましょう。

参考

TortoiseSVNでバージョン情報などを自動で埋め込む

このエントリーをはてなブックマークに追加
はてなブックマーク - TortoiseSVNでバージョン情報などを自動で埋め込む
Share on Facebook

オープンソースコード等を見ていると、リビジョン番号などがソースに記載してあることがあります。 どうやらSubversion(やCVS)で実現できるようです。

私は基本的にWindowsでTortoiseSVNを使ってリポジトリのやりとりをしているので、その設定方法をメモしておきます。

手順

1.TortoiseSVNの設定

今回は例としてPHPファイルが自動変換されるよう設定します。

  1. svn管理下のファイルを右クリック->TortoiseSVN->設定
  2. [一般]カテゴリ内の、「Subversionの設定ファイル」の横にある[編集]ボタンをクリック
  3. テキストエディタでconfigファイルが開くので、以下のように修正する
enable-auto-props = yes    ←コメントアウトを外す

[auto-props]
*.php = svn:keywords=Id Date Author Rev

2.対象ファイルにsvnキーワードを埋め込む

キーワードは「$Id$」のように、「$」で囲みます。 使用可能なキーワードは Subversion キーワードの展開 – とみぞーノート あたりを参考にしてください。

/**
 * テストクラス
 * 
 * @author  $Author$
 * @version $Id$
 */
class Uso
{
    ...
}

3.コミットしてみる

ファイルをコミットしてみて、リポジトリブラウザで参照して置換されていれば成功です。

/**
 * テストクラス
 * 
 * @author  $Author: Senda Keijiro $
 * @version $Id: uso.php 13 2010-10-27 05:33:51Z Senda Keijiro $
 */
class Uso
{
    ...
}

注意

自動置換は上記設定を行った以後に作られたファイルのみに行われます。 既存のファイルも自動反映したい場合は、ファイル毎に設定する必要があります。

  1. 既存のファイルを選択して右クリック
  2. [Subversion]タブ->[属性]ボタン
  3. 恐らく未設定なので、[新規]ボタンをクリック
  4. [属性名]に「svn:keywords」、[属性値]に「Id Author Rev Date」(1単語ずつ改行)を書いて[OK]

これで、ファイルをコミットすると自動でキーワードが置換されるようになります。

参考