情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

Subversionのpre-revprop-changeフックに関するエラー このエントリーを含むはてなブックマーク

エラー

エラーの内容は、こちら。

SVN: 'Set revision author' operation finished with error: svn: リポジトリが、リビジョン属性を変更できるようにはなっていません。
管理者に pre-revprop-change フックを作成するよう頼んでください
svn: リポジトリが、リビジョン属性を変更できるようにはなっていません。
管理者に pre-revprop-change フックを作成するよう頼んでください

このエラーは、Eclipse用プラグインSubversiveを利用してレポジトリへのコミットを行ったときに発生したものです。とりあえず、「pre-revprop-change」ファイルが無いことが問題なので、次のようにして作成しました。

pre-revprop-changeファイルを作成する

作成と言っても、デフォルトファイルpre-revprop-change.tmplhooksディレクトリにあるので、レポジトリのディレクトリに移動して、

cp hooks/pre-revprop-change.tmpl hooks/pre-revprop-change

のようにコピーするだけです。簡単ですね。

エラー再び

とりあえず、pre-revprop-changeファイルを作成することには成功しましたが、コミット時にまたもやエラーが。

SVN: 'Set revision author' operation finished with error: svn: 'pre-revprop-change' フックが次のようなエラーを出力して失敗しました:
Changing revision properties other than svn:log is prohibited

svn: 'pre-revprop-change' フックが次のようなエラーを出力して失敗しました:
Changing revision properties other than svn:log is prohibited

今度は、少しエラーの内容が異なります。ここで気がついたのですが、実はコミット時に、Subversionで簡単に使えるとある機能を使っていました。それが原因でした

その機能とは、コミットするユーザ名(Author)を変更(設定)する機能ですこれは、Subclipseでは(おそらく)できない機能ですやりかたは簡単で、レポジトリの設定(レポジトリプロパティ)の「Advanced>Override author name with represented below:」に、Authorとして登録したい名前を入力するだけです。たとえば、SVN+SSHを利用しているときは、SSHのログインユーザ名でコミットしてしまいますが、この設定を利用することで好きな名前に変更できます。

さて、これがどうエラーと関係しているかというと、エラー冒頭の「Set revision author」と関係しています。つまり、authorを変更(設定)するときにエラーが発生しているのです。もう少し細かく言うと、実は、pre-revprop-changeファイル内の設定で、authorの書き換えを禁止しているのが問題なのです。そこで、先ほど作成したデフォルトのpre-revprop-changeファイルの

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

の次の行に

if [ "$PROPNAME" = "svn:author" ]; then exit 0; fi

を追加してauthorの書き換えを許可してあげます。これで、Authorを変更(= svn:authorを変更)出来るようになりました。

成果

もう一度コミットしてみると、正しく終了します。そして、Historyでコミットしたファイルを見てみると、たしかにAuthorの欄が設定した名前になっています。めでたしめでたし。

Subversive便利

Authorを手軽に設定できることも便利ですが、そのほかにもSubclipseより便利なところがたくさんありました。細かいところですが、たとえばプロキシサーバを簡単にレポジトリごとに設定できるところや、SVNやSSHの接続ポートを簡単に設定できるところです。Subclipseユーザの型は、是非一度Subversiveを使ってみてくださいただ、SubclipseとSubversiveを一つのeclipseに同時にインストールするのはやめた方がいいです

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
実用 Subversion 第2版
入門Subversion―Windows/Linux対応

スポンサーサイト
Subversion | コメント:0 | トラックバック:0 | 編集

SSHトンネルを介したリモートデスクトップがものすごく遅い時 このエントリーを含むはてなブックマーク

PuTTYのSSHトンネルでリモートデスクトップをしたら遅すぎた

PuTTYのSSHトンネル機能を使ってlocalhostのポートからリモートデスクトップで接続したいWindows Vista PCのリモートデスクトップ用ポート(3389)までトンネルを作成し、リモートデスクトップ接続を試みました。

ところが、こうして接続したリモートデスクトップは、ログイン自体はできるものの、あまりに遅すぎて使い物になりませんでした。さらに、putty.exeのCPU使用率が40-50%(デュアルコアCPU使用)となり、非常に高く、全体的なPCの動作速度も著しく低下しました

True Remoteを使ってみても遅かった

これはきっとリモートデスクトップの効率が悪いせいだということにして、軽量高速とはてなで盛り上がったTrue Remoteを使ってみることに。

True Remoteでは、まずリモート接続される側(サーバ側)のWindows PC上でTrue Remoteを起動させておきます。このときにポート番号も指定するので、そこで指定したポート番号に向かってSSHトンネルを作ります。

そして、リモート接続する側(クライアント側)のWindows PC上でTrue Remoteを起動し、接続を試みました。

すると、確かにパスワードによるTrue Remote自体に備わっている認証は正しく完了したようなのですが、何も表示されない。さて、これはどうしたものかと。

True RemoteをSSHポートフォワーディングを使って利用したという報告はWeb上で見つかるので、なにか私が間違っているのだろうと思いました。そこで、とりあえずTrue Remoteのことを考えるのではなく、PuTTYの設定をいろいろいじってみることにしました。

リモートデスクトップとTrue Remoteが遅かった理由

そして、いろいろ試してみた結果、PuTTYの設定のセッション>ログにあるセッションのログを「なし」に設定することで解決しました。以前、問題解決のためにログをとる設定にしたままセッションが保存されており、こんかいそのセッションをコピーして利用していたのでこのような設定になっていました。

つまり、PuTTYがログをとるのに大忙しでCPU使用率が増加するだけでなく、SSHの通信自体のスループットが大きく低下していたというのが原因でした

高速化→解決

以上の設定のおかげで、リモートデスクトップとTrue Remoteはどちらも使用に耐えるスピードで動作するようになりました。まだ外出先からの接続速度を試してみてはいないのですが、楽しみです。

結論

PuTTYのログ機能は性能を大きく損なう可能性があるので要チェックです。気をつけましょう。

SSH | コメント:0 | トラックバック:0 | 編集

Subversiveを使ってみた このエントリーを含むはてなブックマーク

Subversive

Eclipse用SubversionプラグインといえばSubclipseだと思うのですが、それも次第にSubversiveに変わっていくんだと思います。きっと。ということで、Subversiveをインストールしてみました。

というか、Subclipseでレポジトリごとに異なるポートを使いたいのに、いくら設定してもまるで-pオプションを反映してくれないので嫌気がさし、Subversiveをインストールしただけです。

感想

使ってみての感想は、なんだか設定項目が多いってことと、SVNレポジトリViewでディレクトリを開くときにあまり時間がかからないってこと。ただ、なんだか何が必要な設定項目だか今現在よく分かってないので、ちゃんと実験してみてメモろうかと思います。ちなみに、現在はsvn+sshでの接続です。

Subversion | コメント:0 | トラックバック:0 | 編集

Subclipseのsvn+ssh利用時のポート番号について このエントリーを含むはてなブックマーク

なんかSubclipseでsvn+sshを利用するとき、ポート番号を指定しても意味がないというか反映されていないようなので報告メモ

Subclipseでポート番号を指定してみる

Subclipseでsvn+sshを利用するときに、ポート番号(port)を

svn+ssh://username@hostname:port/repos/myrepos
のようにして、ポート番号の指定をしてみました。ただ、そのポート番号の様子がおかしい。

ポート番号にどんな番号を指定しても、常にSSHのデフォルトである22番ポートを使っているような気がしてきたので、Wiresharkで調べてみると、確かにどんな番号を指定しても22番ポートを利用しています。なので、

svn+ssh://username@hostname:10000000000/repos/myrepos
なんていう無茶な設定から
svn+ssh://username@hostname:99/repos/myrepos
なんていう微妙な設定まで、どう設定しようと22番ポートを利用しているようなのです。

Subclipseのソースコードをちょっと読んでみた

Subclipse自体のソースコードをチェックしてみたところ、URLのパース自体はちゃんとやっているみたい。ただ、それ以上どのタイミングでポート番号を指定して利用しているかがちょとすぐには見つからないのではっきりしません。すいません。

ポート指定方法はあるけれど

Subclipseの設定ファイルを利用して、ポート番号を指定することは確かにできるみたいなのですが、レポジトリごとの設定ができない模様。不便すぎる。

まさか

実は上記のポート番号の指定方法が間違っているのかもしれないんですけど、とりあえず、適当に入力しても何のエラーにもならないのは問題かと。とりあえず、もうちょっと調べてみようかな。

Subversion実践入門
実用SSH
Eclipse 実践開発入門

Subversion | コメント:0 | トラックバック:0 | 編集

svn+ssh://の後に続くパスについて このエントリーを含むはてなブックマーク

svn+sshをやると言ってから、ずっとsshを使わずにローカルでsubversionを利用していたので進展なしでした。ついにEclipseからSubclipse経由でsvn+sshを利用できるようになったので、記念にメモ。svn+sshの導入方法自体についてはまた今度書こうかと思いますこれで割と安全に、たとえば外出先から家のsubversionサーバに接続できるようになるわけです

svn+ssh://???

svn+ssh://の後には、sshログインユーザ名@ホスト名(IPアドレス)/レポジトリパスと続きます。たとえば、

svn+ssh://username@192.168.1.1/svn/repos
となります。ここで、メモしておきたいポイントは、「ホスト名の後に続くパスは、SSHで接続するサーバのフルパス」ということです。

つまり、ルートディレクトリからちゃんと書けということみたいです。上の例では、ルートディレクトリ(/)にsvnディレクトリがあり、svnディレクトリの中にreposレポジトリがあることになります。

svn+ssh結構手間取った;

Subversion | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。