七月 25, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» Mercurial on Google Code is available to every project

今天晃到自己的專案 django-pgpauth 時,才發現多了 Mercurial 的選項。原來早在 5 月 28 日時就己經正式推出了。

要轉移原來的 subversion 資料庫到 hg 儲存庫中是很簡單的一件事。

在 Ubuntu 下,先安裝 python-subversion 套件。然後將 /etc/mercurial/hgrc.d/hgext.rc 中「# hgext.convert =」的註解拿掉。

接下來,作轉換的動作。

# hg convert http://projectname.googlecode.com/svn hg-client
# cd hg-client
# hg push https://projectname.googlecode.com/hg

最後,記得到 administer > source > Repository type,把 Version control system 改成 Mercurial 即可。

三月 3, 2009

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» from subversion to mercurial

It's enough for me to test/learn/use mercurial, i decide to convert my old subversion repositories now.

To convert subversion repository, you need the '''python-svn''', '''python-subversion''' plugins in the Ubuntu.

Then you should check the working subversion repository has no need to type username/password at the status of '''svn update''', or you will get the '''XXX does not look like a Subversion repo''' message from '''hg convert'''.

When you are ready, just type '''hg convert -s svn your_svn_repo_dir''', and you can get a dir named '''your_svn_repo_dir-hg'''.

Congratulation! It's a peice of cake.

六月 29, 2008

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» problem with django: use __year or not && use subversion or not

when i put the new sources in the remote web server, and something happened!

the query result had nothing!! when i 'diff' the environment of server and mine, i got one thing difference. one is python 2.5.2 and the other is 2.5.1, but i have no idea about why!

the problem is 『__year』, i set a datetime field in a django model, and i can query it by year with suffix parameter __year like filter(date__year=datetime.date.today().year). and it's work for mine but not for remote server. so for the general case, i changed the code to two queries like below:

filter(date__gte=datetime.date(datetime.date.today().year, 1,1), date__lte=datetime.date(datetime.date.today().year, 12,31))

then i changed 5 files in my application. before svn commit, i use svn diff to see what i modified and found a error.

Can you see??


--- apps/supervise/views.py (revision 1256)
+++ apps/supervise/views.py (working copy)
@@ -145,7 +145,8 @@
if h.has_key('year') and h['year'] != '':
Y = Year.objects.get(id=h['year'])
try:
- sc = sc.filter(date__year=Y.date.year)
+ sc = sc.filter(date__get=datetime.date(Y.date.year, 1, 1),
+ date__lte=datetime.date(Y.date.year, 12, 31))
except:
pass
........


if i have no subversion, i will write a bug after a debug.

六月 3, 2008

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 版本控制器不只是用來管程式碼,一般可編輯的辦公室電子文件也可以

我的工作除了寫程式,還得寫文件,最近與其他人一起作文件編輯的動作,覺得很令我難受。

subversion 我已教過 N 遍了,但使用者用起來就只是把它當成 FTP 來用,註解也不寫,光是改檔名。這說明了他們根本沒學會『版本控制器』。

唉~年紀輕輕地,腦袋就裝不下了。

我很失望~

這讓我想起,之前還是社會新鮮人時,面試工作時,我都會說:『請給我一個學習的機會,我會認真學習的。』我可是確實作到。

三月 15, 2008

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» subversion 的 commit log 寫錯了。

把伺服器中的 svn/hooks/pre-revprop-change.tmpl copy 一份成 svn/hooks/pre-revprop-change ,並且要給它可執行的權限。

然後在自己 co 出來的專案資料夾中,打

# svn propset svn:log "xxxxxxx" -r 903 --revprop

即可把 903 版的 log 變成 xxxxxxx

一月 22, 2008

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» Trac0.11b1 + Mercurial + Postgresql

基於對 Python 的喜愛,所以想要把 subversion 換成 Mercurial ,但目前還只是測試階段,真正上線使用的還是 subversion 。另外一直都想要找個機會把 Mysql 換掉,到不是說 Mysql 不好用,而是我對於 PostgreSQL 本來就有一分感情,那是在 Mysql3,4 還不支援 UTF-8 時,我用 Perl 寫了一個 unicode 字的查詢系統。

而今天所要介紹的,不過是我在工餘之際把玩的小小玩意,既然成功了,那就作個紀錄。

在 Ubuntu 安裝軟體是一點都不難的(只要有 .deb 檔),所以要裝 Trac + PostgreSQL + Mercurial ,請執行下面指令:

# sudo apt-get install postgresql-client-8.2 postgresql-8.2 python-psycopg2 \
> python-setuptools python-genshi \
> python-psycopg2 python-pygments python-docutils mercurial

接下來,安裝 Trac 0.11b1 主程式
# sudo easy_install http://ftp.edgewall.com/pub/trac/Trac-0.11b1.tar.gz

最後安裝 Trac 控制 Mercurial 的外掛
# svn co http://svn.edgewall.com/repos/trac/sandbox/mercurial-plugin-0.11
# cd mercurial-plugin-0.11/
# sudo python setup.py install

再來是設定,首先我們建立一個 dbuser ,這方面, PostgreSQL 有點奇怪,或許是我 Mysql 用久了,
# sudo -u postgres createuser trac -P
Enter password for new role:
再輸入一次:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE
# sudo createdb -O trac trac
並將 pg_hba.conf 中的
local all all ident sameuser
改成
local all all password

這樣你的 trac 程式就可以透過帳號: trac 密碼: trac host: localhost 的方式與 PostgreSQL 連接了。

接下來,初始化 trac 設定目錄及 hg 儲存庫:
# trac-admin /path/to/myproject initenv
# hg init /path/to/myproject/hg

另外在 trac.ini 中加入
[components]
tracext.hg.* = enabled

[hg]
show_rev = yes
node_format = short

用 tracd --port 8000 /path/to/myproject 測試一下有沒有問題,沒有問題就讓 mod_python 來跑吧!

下面則是 mod_python 的設定檔


NameVirtualHost *:443

ServerAdmin admin@xxx.com
ServerName trac.xxx.com
DocumentRoot /www/trac

SetHandler mod_python
PythonHandler trac.web.modpython_frontend
#PythonPath "sys.path+['/usr/local/Trac/lib/python2.5/site-packages/']"
PythonOption TracEnv /www/trac
PythonOption TracUriRoot /
PythonDebug Off
SetEnv PYTHON_EGG_CACHE /www/trac/tmp
SetEnv LANG UTF-8
SetEnv HTTPS 1
AuthType Basic
AuthName "Trac Server"
AuthUserFile /www/htpasswd_users
Require valid-user

ErrorLog /var/log/apache2/trac_error.log
LogLevel warn
CustomLog /var/log/apache2/trac_access.log combined
ServerSignature Off
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

八月 12, 2007

hoamon's sandbox
hoamon
hoamon's sandbox is about »

tag cloud

» 高級 Subversion GUI: Eclipse

對滑鼠重度使用者來說,編寫 python 程式是需要一個稱手的 IDE 工具的,在這方面,我強烈建議使用 Eclipse ,原因是跨平台、開源及外掛多,所以你可以用它來寫 java, PHP, perl, python, ruby...,缺點只有一個,要學會 java 才能幫它加特殊功能,還好你想得到的,多半有人作了。

但對不在乎滑鼠的使用者來說, Eclipse 是有點麻煩的,在編寫文字上,方便性就不如 VIM 了,快速移動、大區塊剪貼、尋找 re 字串、自動補齊(需 VIM 外掛)等,用 VIM 是十分容易作到的,像是你要打個 SuperviseCase.objects.all() ,你只要 Sup.obj.all() 這樣就夠了。

所以我並不常用 Eclipse 來開發程式,大部份是用它來 Demo 程式碼給學弟妹看,因為他們都是用這一套的。

但是 GUI 工具有一個好處,比較程式碼差異及看 svn log 時很方便,只要是使用 svn 時,會用到 less 指令的,都適合用 Eclipse + subclipse 來作。雖然 subversion 也有其他 GUI 工具配合,但 Eclipse 牌子比較大,用戶也比較多。建議各位試試。

» 損失的不過是4~50行程式碼

話說今天早上,用我的 IBM R51 寫著督導報表的程式,主要是建立了一個表單,大部份是設定有那些欄位及其屬性而已。

突然接了一通電話要改報名網站,聽完了需求後,就到另一台桌上型電腦 Core Duo 2 (桌上型是組裝的,我都習慣以 cpu 版本來當作它的名字)去寫,因為報名網站我已經在 Core Duo 2 上設定過了,改這一兩個功能就懶得在 R51 上再設一個網站出來。而修完後也剛好中午吃飯,所以就和內人出門了。

回來後,繼續用我的 R51 ,因為我的習慣相當不好,跟這位老兄一樣,喜歡邊開火邊移動,不過我的頻率比較短,通常只發作於與電腦見面的一開始,或許這也是我成就比較低的原因,所以著實在 youtube 上看了不少棒球、羽球的影片後,才進入我的工作。

因為與上午開發督導表單的時間有一陣子(3~4小時)了,我根本忘了還沒有 check in 的動作,又因為臨時想到放督導程式的資料夾位置不好,想用 Eclipse 作 svn co ,將來也用 Eclipse 作版本管理的動作。所以在 Eclipse 中作 svn co 後,我的 R51 同時有兩個督導程式資料夾。

系統中有兩個相同的檔案,對一個硬碟有 60 G 的 NB 來說,一點問題也沒有,有問題的是我覺得這樣的放法會讓我亂掉,於是我刪除了之前一直開發的那一個。所以結果就如本文題目一樣了。

因為我還沒有 check in ,所以那個表單設定的程式就沒有了。剛發現這個事實時,我很生氣,我居然可以用 subversion ,用到這種地步,想把自己打死。

接著,我開始尋求正面想法,以前在用 copy 的年代,我還丟過整個 lib.pl 呢!而丟了之後,還讓我想出比較有效率的 lib.pl ,難怪我覺得我的程式能力好像沒有之前好,因為現在不容易丟掉程式碼了。嗯~程式技術與版本管理能力似乎呈反比。

不過,我可不想回到過去手動整理麵條的時代,在用了 subversion 後,通常一天至少 check in 一次,丟掉程式的機率相當低,也就今天這麼一次,於是寫這篇文章來作個紀念。

六月 27, 2007
» trac-subversion 安裝配置設定三合一 (Ubuntu)

因為電源不穩的關係, 苦吞 "svn: No such revision 425 " 訊息. svnadmin recover 都不管用, 只好重新 import 一次 Source 啦... 下次一定研究怎麼自動備份 Orz.

安裝 install apache
=======================

$ sudo apt-get install apache2

安裝 install subversion
=======================

$ sudo apt-get install subversion

$ sudo apt-get install libapache2-svn

設定 Confiigure subversion
--------------------------

Enter menu system/management/user_and_group

change to group tab, add atwo new group named "www-data"(apache) and "subversion"
then add user [your account] and "www-data" to "subversion"'s group members.

or use command instead::

$ sudo adduser www-data subversion
$ sudo adduser [your account] subversion

Then we could create svn repository::

$ sudo svnadmin create /home/svn (or $ sudo svnadmin /usr/local/svn)

Then Change the folder owner

$ sudo chown -R www-data:www-data /home/svn
$ sudo chmod -R g+ws /home/svn

Setup apache host site
$ sudo gedit /etc/apache2/mods-enabled/dav_svn.conf

uncomment following lines:

[Location /svn]
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/subversion/passwd
[/Location]

or add following just above the /location:

[LimitExcept GET PROPFIND OPTIONS REPORT]
Require valid-user
[/LimitExcept]
為 subversion 存取加上密碼:

sudo htpasswd -c /etc/subversion/passwd user_name


重開 apache:

sudo /etc/init.d/apache2 restart

驗證能取得 svn 檔案:

$ svn co http://hostname/svn/myproject myproject --username user_name


安裝 Install Trac
================

$ sudo apt-get install trac

$ sudo mkdir /home/trac
$ sudo chown www-data:www-data /home/trac

To add a virtual host to host trac:

$ sudo gedit /etc/apache2/sites-available/trac


[VirtualHost *]
ServerAdmin webmaster@localhost
ServerName trac.example.com
DocumentRoot /usr/share/trac/cgi-bin/
[Directory /usr/share/trac/cgi-bin/]
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
allow from all
[/Directory]
Alias /trac "/usr/share/trac/htdocs"

[Location /]
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/trac
#PythonOption TracEnv /home/trac/singletrac
PythonOption TracUriRoot /
[/Location]

DirectoryIndex trac.cgi
ErrorLog /var/log/apache2/error.trac.log
CustomLog /var/log/apache2/access.trac.log combined

[/VirtualHost]

Uncomment the AddHandler line in /etc/apache2/apache2.conf so that the Trac CGI program will be executed:

# To use CGI scripts outside /cgi-bin/:
#
AddHandler cgi-script .cgi

Disable the default virtualhost, enable the Trac virtualhost, and restart Apache2:

sudo a2dissite default
sudo a2ensite trac
sudo /etc/init.d/apache2 reload


Make New Trac Project expose to web
===================================

sudo trac-admin /home/trac/YourProjectNameHere initenv

Then the interactive interface was prompt:
[specify the repository to /home/svn/YourProjectNameHere]

sudo chown -R www-data /home/trac/YourProjectNameHere


Refer to
http://trac.edgewall.org/wiki/TracOnUbuntu
http://trac.edgewall.org/wiki/TracModPython
http://www.blendedtechnologies.com/setting-up-subversion-on-ubuntu/11
http://philipatswarchy.wordpress.com/2006/11/27/apachesslsubversionpam/

biggo.com.tw

A Django site.