2003-06-25 17:14:30

subversion 與 repos 權限

今天繼續與 svn 奮鬥.

由於架上 mod_dav_svn 後, repos 就不只自己的 svn 會存取, 所以要處理一下 repos 的檔案權限. 我的作法, 是先建立 svn 用戶與群組, 並且把 svn 用戶設為不可登入. 把 www 與我自己加入 svn 群組, SVN_ROOT 目錄裡的檔案目錄群組設為 svn, 並將檔案權限設為664, 目錄權限設為 775.

接下來要防止不當的 umask 重設 repos 的檔案. 首先先改 /usr/local/etc/rc.d/apache2.sh, 在執行其它程式前, 先設定 umask:

umask 002

接下來在 /etc/csh.cshrc 裡加上兩個 alias:

alias svn         "umask 002; /usr/local/bin/svn"
alias svnadmin    "umask 002; /usr/local/bin/svnadmin"

大功告成.

由 plasma 於 05:14 PM 所發表 | 迴響 (4)

2003-06-24 18:00:30

Subversion 與 Apache2

下午都在把 apache1 換成 apache2, 花了不少時間, 其實最主要就是要裝上 svn 的網路伺服器, 這樣我可以從公司別台機器連回自己的 nb, 省去作成 tarball 再 co 過去的麻煩.

不過 apache2 裝起來, 再裝上 Subversion 遇到了一個問題:

/usr/libexec/ld-elf.so.1: /usr/local/lib/libaprutil-0.so.9: Undefined symbol "libiconv_open"

很明顯地, 與 Subversion 的中文紀錄送交訊息 是一樣的問題. 在 /usr/ports/www/apache2/Makefile 裡的 CONFIGURE_ARGS 裡再加上一行:

--with-iconv=${LOCALBASE}

然後重編 apache2 與 Subversion 就好了.

由 plasma 於 06:00 PM 所發表 | 迴響 (2)

2003-06-19 23:07:26

debug subversion 學 gdb

前幾天 Subversion 0.24.0 放出來, 結果我無法執行 export 命令. 在 irc 與 sussman 交談, 他完全沒有這種問題. 由於不太想把 repo 拿給別人測試, 所以就自己試著 debug. 學到了幾個指令, 趁著還記得時, 趕快寫下來, 以免下次還會用到.

1. gdb svn
2. break main
3. run export file://$SVN_ROOT/svn/trunk svn
4. break export.c:close_file
5. c
6. s
7. n
8. p *((struct file_baton*) file_baton)
9. p *((struct file_baton*) file_baton)->keywords_val

解說:

  1. 以 gdb 執行 svn
  2. 設定 main() 為中斷點
  3. export file://$SVN_ROOT/svn/trunk svn 為引數, 執行 svn.
  4. 設定 export.c 檔案裡的 close_file() 為中斷點.
  5. 執行, 直到遇到中斷點停下.
  6. 單步執行. 進入副函式.
  7. 單步執行. 不進入副函式.
  8. file_baton 為 void*. 強制以 (struct file_baton*) 來看內容.
  9. file_baton->keywords_val 的內容
由 plasma 於 11:07 PM 所發表 | 迴響 (0)