Posts tagged: subversion

“Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法”が便利すぎる件

By admin | 2009年8月22日

“Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法” で紹介されている zsh の vcs_info という関数を使って
git や mercurial のブランチ名をプロンプトに表示しているみたいです。

git 使ってたら実際どのブランチいじってるのかわからなくなることが
多々あって困ってたのでさっそく導入してみました。

git リポジトリ

svn リポジトリ

svn リポジトリ

はまったのは “vcs_info: function definition file not found” というエラーが
表示され vcs_info が使用できなかった。
これはバージョンを 4.3.6-dev-0+20080929-1 以降にすればいいらしい。

mac の ports の場合は zsh-devel でいれないと 4.3.6 以下なので使用できない。
zsh-devel をインストールして /opt/local/bin/zsh-4.3.10 から /bin/zsh へと
/etc/zprofile から /opt/local/etc/zprofile へシンボリックリンクを張って準備完了。

zprofile のシンボリックリンクを張らないと PATH の環境変数が足らなくなる。
/usr/bin とかその辺の PATH をここを呼んで足してるみたい。
.zshrc の設定に関しては本家の方で詳しくまとまってます。
.zshrc の一部抜粋でこんな感じです。

autoload -Uz vcs_info
zstyle ':vcs_info:*' formats ':(%s)%b'
zstyle ':vcs_info:*' actionformats ':(%s)%b|%a'
precmd () {
    psvar=()
    LANG=en_US.UTF-8 vcs_info
    [[ -n "$vcs_info_msg_0_" ]] && psvar[1]="$vcs_info_msg_0_"
}
PROMPT="%{${fg[yellow]}%}[%n@%m%1(v|%F{green}%1v%f|)%{${fg[yellow]}%}]%{${reset_color}%}%b "

zsh ちゃんと勉強すればもっと便利になりそうだな

参考資料

vcs_info: function definition file not found

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

リバースプロキシ後の webDAV に https で mv できない

By admin | 2009年7月30日

サーバーの構成はこんな感じ

LB に pound (http, https 使える状態)
webDAV に mod_dav_svn を使って http で apche がたっている。

で、今回の問題が https で checkout したリポジトリに対して mv や rename すると
svn COPY 502 bad gateway over HTTPS と言われてコミットできない。
http だと問題なく mv, rename がコミットできる。

以下 http://www.digilib.org/modules/bwiki/index.php?Subversion#zca25176 より引用

これはHTTPS超えて、SVNを管理する場合、ファイル移動する際発生する問題。
davのモジュールは相対ではなく、絶対パスで管理するから。 
Subversion付属のsvnserveなら問題発生しない。

って書かれてたので半ばあきらめてた。
ただいかんせん、ほかにも https でやってるとこもある。
現に会社では webDAV, https という組み合わせでもできていた。

サーバのセットアップをやったついでに調べるとこれの回避方法をようやくみつけた!!

Subversion behind an Apache Reverse Proxy

ここに書いてあるとおりで、
どうやらリバースプロキシを使って、https で client からアクセスがいき
webDAV が http でたっている場合に怒られるらしい。

LoadModule headers_module modules/mod_headers.so
RequestHeader edit Destination ^https http early

こうしてやるといいとのこと。
これでよーやく気兼ねなく mv や rename ができるようになった。
快適快適

LB はさまずに直接 apache で受けたら回避できる問題だけど
Slowloris Dos攻撃 もあるから LB を間にいれときたいってのもあるしね。

それにしても https で pound が proxy すると
pound 以降は http で通信が行われてるっていう
認識だったんだけど違うのかな??

おいおい調べることにして寝る。

WordPress Themes