星期二, 5月 31, 2011

簡單設定GIT http server (for Windows and Unix),Git Http Server for Dummies

在Windows上設定

原本在Windows上因為中文檔名一直有問題,不敢使用Git,看到Git Source Control Provider再試中文檔名仍然不行;後來雨蒼告知有對岸的高手tinyfish對msysgit做patch,並放在Googlecode上utf8-git-on-windows,事情才有轉機。

原本也有考慮Mercurial,Windows上中文檔名雖然也有問題但是有方法修復,未採用的原因是Windows平台沒有Visual Studio provider。而且Xcode己經內建Git整合,為了自己方便當然採用Git才是明智之舉。(個人覺得Google Code採用水銀有點是基於對Python的偏執,
難保爾後不會有Git支援XD
。Update: 2011/07 Google Code支援Git了!)。關於Google的看法,詳見Analysis of Git and Mercurial

首先當然是要安裝 patch過的git和TortoiseGit,接著下載Apache for Windows,我是下載 httpd-2.2.19-win32-x86-openssl-0.9.8r.msi安裝。
使用網路上最常見的這篇教學仍然失敗,加上REMOTE_USER設定還是不行,只要是用到git-http-backend.exe的檔案都出現403 Forbidden,例如HEAD、info\refs等,檔案權限已經設成everyone full access仍然有問題;後來回頭用舊方法WebDAV才搞定。

除了原本需要的alias_module、auth_basic_module、authn_file_module,還要啟用dav_module、dav_fs_module、dav_lock_module。我是沿用原來的http.conf,另外加上 extra/git.conf,在原來的http.conf最後加上
Include conf/extra/git.conf
如果要Include conf/extra/httpd-dav.conf的方式啟用WebDAV要注意httpd-dav.conf裏的DavLockDB必須要寫入權限的檔案,所以預設的目錄通常不是不存在就是無法寫入。還有預設的upload目錄AuthType等等,要看是否有啟用。所以我並沒有Include,而是簡單地加入一行
DavLockDB "C:/TEMP/DavLock.txt"

git.conf的內容如下:
<directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</directory>
ALIAS /git "C:/GitRepository"
<Location /git>
AuthType Basic
Dav on
AuthName "GIT Repository"
AuthUserFile "C:/Apache2.2/權限檔"
Require valid-user
</Location>

在Linux上設定

若是在Ubuntu則是WebDAV與cgi方式都可正常執行。
Ubuntu在 /etc/apache2/sites-available/加上 git.conf ,同樣在預設的
/etc/apache2/sites-enabled 做link
/etc/apache2/sites-enabled$ sudo ln -s /etc/apache2/sites-available/git.conf .
git.conf內容如下:
Alias /git /var/cache/git

<Directory "/var/cache/git">
Allow from all
</Directory>

<LocationMatch "/git">
Dav on
AuthType Basic
AuthName "Git"
AuthUserFile "/etc/apache2/權限檔"
Require valid-user
</LocationMatch>
別忘了 htpasswd -c 權限檔 帳號

Server端
cd C:\GitRepository 或 cd /var/cache/git
git --bare init project.git
cd project.git
git update-server-info

Client端
git config --global user.name "你的名字"
git config --global user.email "你的email"
git config --global color.ui true
git config --global http.sslVerify off
git config --global core.autocrlf false

cd "要放的目錄"
git clone http://你的帳號@你的伺服器/git/project.git/
cd project #Git很聰明,會自己忽略.git
#加上你的程式檔
git add
#我是加上 git add 嬑堃.txt
git commit -m "註解" #我是 git commit "堃嬑" ,此時就看得出patch過版本和Unix版本git同樣方便
#此時只有在local端加入
#接下來要傳回Server
git push -u origin master
#會出現兩次問passwd,這是用WebDAV的缺點,個人覺得還好
#之後要上傳只要打git push

備註:
話雖如此,我在將Subversion的Repository倒入Git Repository時,Windows版發生不明錯誤掛點,但是Unix版(FreeBSD/Linux)都沒事,所以請盡可能使用Unix版架Git Server,若覺得以上都太麻煩或是遇到奇怪的錯誤,就用github或是bitbucket吧!

參考資料: GIT官方網站Git 初學筆記 ihower介紹GIT的幾篇文章

星期二, 5月 24, 2011

msn-pecan無法登入,nexus stream error

由於Blogger太遜,這篇在修復後消失,我找不到原來的內容了,只好憑印象亂寫 Orz

簡單地說,Pidgin內建有msn協定,但是很久沒更新,原作者跳出來自己寫,就我試著用內建的msn協定可以登入,但是沒有大頭貼等新功能,猜想是WLM協定有更新。找了一下發現是Ubuntu內建的msn-pecan/WLM協定比較舊,會造成無法登入,必須要自己去下載最新版安裝,我是裝msn-pecan-0.1.2.tar.bz2,自行編譯如下:

~/> tar xjf msn-pecan-0.1.2.tar.bz2
~/> cd msn-pecan-0.1.2
~/> ./configure --prefix=/usr
~/> make
~/> sudo make install

裝好後重開Pidgin,就可以正常使用WLM登入。

星期三, 5月 18, 2011

Blogger Sucks!

Blogger早在 2008年8月就在系統維護後,造成敝小格亂碼,過了一個月自己修好了

到2011年5月又發生一次,目前從5/11到5/15中間的資料都不見,雖然我不是量產型的部落客,但仍然非常地不爽,有心要靠Blog賺錢的人還是投靠Dark Killer/gslin去用pixnet吧 (angry)