<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>簡睿隨筆 《科技篇》-專案管理工具</title>
<link>http://blog.roodo.com/emisjerry/archives/cat_246771.html</link>
<description>
  
    
      學習過程的各項紀錄與備忘
:::看不到圖請連我
的Xuite主站::
      
      
      
       
      
    
    
      





      
 

      

      
        
          
            
              
              輸
入您的搜尋字詞
              
            
          
        
        提
交搜尋表單
      
      
    
  





_uacct = &quot;UA-123122-2&quot;;
urchinTracker();

</description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/emisjerry/archives/cat_246771.xml" rel="self" type="application/rss+xml" />
<item>
	<title>JTrac：Open source的Java Issue Tracking System</title>
	<description><![CDATA[
			如果你的開發小組還沒開始使用Issue/Bug Tracking System的話，現在多了另一個選擇：JTrac。由其Roadmap來看，在功能上似乎會逐步趨近Trac的現有功能。若你正在學習Java，JTrac使用多種較新的Framework，應該能提供一些參考。What is the JTrac architecture like?JTrac is built using the Spring Framework as far as possible and mostly uses Spring WebFlow  within the MVC layer apart from Spring MVC. Also the Acegi Security  framework for Spring has been used. JTrac is effectively a &quot;light-weight&quot; Java EE application and any version 2.4 compliant servlet engine is sufficient for deployment.The presentation layer is using the Apache Wicket framework.Hibernate is used for data persistence. This allows for JTrac to be database neutral and any database supported by Hibernate can be used.##
		]]>
	</description>
	<content:encoded><![CDATA[
			如果你的開發小組還沒開始使用Issue/Bug Tracking System的話，現在多了另一個選擇：<a href="http://jtrac.info/" target="_blank" title="外部連結至 http://jtrac.info" class="externalLink">JTrac</a>。由其Roadmap來看，在功能上似乎會逐步趨近<a href="http://blog.xuite.net/emisjerry/tech/12741565" target="_blank" title="外部連結至 http://blog.xuite.net/emisjerry/tech/12741565" class="externalLink">Trac</a>的現有功能。<br /><br />若你正在學習Java，JTrac使用多種較新的Framework，應該能提供一些參考。<br /><br /><strong>What is the JTrac architecture like?</strong><br />JTrac is built using the Spring Framework as far as possible and mostly uses Spring WebFlow  within the MVC layer apart from Spring MVC. Also the Acegi Security  framework for Spring has been used. <span class="tiddlyLink tiddlyLinkNonExisting">JTrac</span> is effectively a &quot;light-weight&quot; Java EE application and any version 2.4 compliant servlet engine is sufficient for deployment.<br /><br />The presentation layer is using the Apache Wicket framework.<br /><br />Hibernate is used for data persistence. This allows for JTrac to be database neutral and any database supported by Hibernate can be used.<br /><br />##
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/5159793.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/5159793.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 26 Jan 2008 00:19:27 +0800</pubDate>
</item>
<item>
	<title>[Trac] 幫Trac裝上WYSIWYG編輯器</title>
	<description><![CDATA[
			JeffHung於今日介紹了Trac的「所視即所得」編輯器插件：Trac Wysiwyg Plugin。安裝步驟如下： 切換目錄到\Python24\share  cd \Python24\share  easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10 如果你已升級到0.11版，只要把最後面的0.10換成0.11即可 以admin進入管理網頁，啟動此插件 重新啟動Apache Web Server大功告成。插件生效前後畫面比較如下：原來的畫面加入WYSIWYG編輯器後的畫面##
		]]>
	</description>
	<content:encoded><![CDATA[
			<a href="http://www.jeffhung.net/blog" target="_blank" title="外部連結至 http://www.jeffhung.net/blog" class="externalLink">JeffHung</a>於今日<a href="http://www.jeffhung.net/blog/articles/jeffhung/1023/" target="_blank" title="外部連結至 http://www.jeffhung.net/blog/articles/jeffhung/1023/" class="externalLink">介紹</a>了Trac的「所視即所得」編輯器插件：<a href="http://trac-hacks.org/wiki/TracWysiwygPlugin" target="_blank" title="外部連結至 http://trac-hacks.org/wiki/TracWysiwygPlugin" class="externalLink">Trac Wysiwyg Plugin</a>。安裝步驟如下：<br /><ul><li> 切換目錄到\Python24\share</li></ul><pre>  cd \Python24\share<br />  easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10<br /></pre><ul><li> 如果你已升級到0.11版，只要把最後面的0.10換成0.11即可</li><li> 以admin進入管理網頁，啟動此插件</li><li> 重新啟動Apache Web Server</li></ul>大功告成。插件生效前後畫面比較如下：<br /><ul><li>原來的畫面</li></ul><img src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/14189185/0.jpg" alt="" title="trac_before" /><br /><ul><li>加入WYSIWYG編輯器後的畫面</li></ul><img src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/14189185/1.jpg" alt="" title="trac_before" /><br /><br />##<br />
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/4408245.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/4408245.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 02 Nov 2007 21:22:45 +0800</pubDate>
</item>
<item>
	<title>[Trac] 把Trac的單欄樣式改成多欄的方法</title>
	<description><![CDATA[
			在Trac的一個頁面裡輸入了越來越多的文字之後，由於有許多的導引連結，結果變成了長條狀的形式，每每為了點選在後方的連結而必須拖動捲軸，實在很麻煩....今天終於找到一個簡單的解決方法了－把內容用&lt;table&gt;分隔成幾個&lt;td&gt;就OK了。示意如下：原來的內容是單欄式的：=== 專案重要任務 ===  1. [report:1 處理中的任務單]  1. [report:7 指派給我的任務單]  1. [TodoList 待辦事項]=== 專案文件區 ===  1. [EventMeeting 會議記錄]  1. [PlanningDocuments 專案規劃階段]=== 專案成員一覽表 ===  1. [OurMembers 乙方成員]  2. [ClientMembers 甲方成員]=== 開發環境建置 ===  1. [attachment:trac-ticket.doc 任務單操作簡要]  1. [CheckoutSource 取出原始碼及程式開發設定]  1. [TestAccount 測試帳號]用&lt;table&gt;變身成兩欄，把垂直發展變成水平延伸。範例中的｛｛｛與｝｝｝為了在網頁顯示而改成全形，真實情況裡是要用半形才可以：｛｛｛#!html&lt;table border=&quot;0&quot;&gt;&lt;tr valign=&quot;top&quot;&gt;&lt;td width=&quot;40%&quot;&gt;｝｝｝=== 專案重要任務 ===  1. [report:1 處理中的任務單]  1. [report:7 指派給我的任務單]  1. [TodoList 待辦事項]=== 專案文件區 ===  1. [EventMeeting 會議記錄]  1. [PlanningDocuments 專案規劃階段]｛｛｛#!html&lt;/td&gt;&lt;td&gt;｝｝｝=== 專案成員一覽表 ===  1. [OurMembers 乙方成員]  2. [ClientMembers 甲方成員]=== 開發環境建置 ===  1. [attachment:trac-ticket.doc 任務單操作簡要]  1. [CheckoutSource 取出原始碼及程式開發設定]  1. [TestAccount 測試帳號]｛｛｛#!html&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;｝｝｝##
		]]>
	</description>
	<content:encoded><![CDATA[
			在Trac的一個頁面裡輸入了越來越多的文字之後，由於有許多的導引連結，結果變成了長條狀的形式，每每為了點選在後方的連結而必須拖動捲軸，實在很麻煩....今天終於找到一個簡單的解決方法了－把內容用&lt;table&gt;分隔成幾個&lt;td&gt;就OK了。示意如下：<br /><br />原來的內容是單欄式的：<br /><pre>=== 專案重要任務 ===<br />  1. [report:1 處理中的任務單]<br />  1. [report:7 指派給我的任務單]<br />  1. [TodoList 待辦事項]<br />=== 專案文件區 ===<br />  1. [EventMeeting 會議記錄]<br />  1. [PlanningDocuments 專案規劃階段]<br />=== 專案成員一覽表 ===<br />  1. [OurMembers 乙方成員]<br />  2. [ClientMembers 甲方成員]<br />=== 開發環境建置 ===<br />  1. [attachment:trac-ticket.doc 任務單操作簡要]<br />  1. [CheckoutSource 取出原始碼及程式開發設定]<br />  1. [TestAccount 測試帳號]<br /></pre>用&lt;table&gt;變身成兩欄，把垂直發展變成水平延伸。範例中的｛｛｛與｝｝｝為了在網頁顯示而改成全形，真實情況裡是要用半形才可以：<br /><pre>｛｛｛<br />#!html<br />&lt;table border=&quot;0&quot;&gt;&lt;tr valign=&quot;top&quot;&gt;&lt;td width=&quot;40%&quot;&gt;<br />｝｝｝<br />=== 專案重要任務 ===<br />  1. [report:1 處理中的任務單]<br />  1. [report:7 指派給我的任務單]<br />  1. [TodoList 待辦事項]<br />=== 專案文件區 ===<br />  1. [EventMeeting 會議記錄]<br />  1. [PlanningDocuments 專案規劃階段]<br />｛｛｛<br />#!html<br />&lt;/td&gt;&lt;td&gt;<br />｝｝｝<br />=== 專案成員一覽表 ===<br />  1. [OurMembers 乙方成員]<br />  2. [ClientMembers 甲方成員]<br />=== 開發環境建置 ===<br />  1. [attachment:trac-ticket.doc 任務單操作簡要]<br />  1. [CheckoutSource 取出原始碼及程式開發設定]<br />  1. [TestAccount 測試帳號]<br />｛｛｛<br />#!html<br />&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />｝｝｝<br /><br /><br />##</pre>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/4398621.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/4398621.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 31 Oct 2007 22:04:34 +0800</pubDate>
</item>
<item>
	<title>將Trac 0.10.4中文版公佈到Google Code</title>
	<description><![CDATA[
			在推動使用Trac當 做協同專案團隊運作工具的過程中，缺乏中文介面始終是個阻礙。雖然說軟體開發人員對於英文應該比一般行業要熟悉一些，尤其對於電腦英文更應得心順手才對， 但總是三不五時有人反應怎麼沒有中文版．．．又顧及大陸同仁接受英文的程度更差，索性把Trac常用的詞彙翻譯成中文算了。利用閒暇時間把Trac的樣板 檔逐一修改，再公佈到Google Code上供有興趣的讀者們下載使用。以下是trac-tw專案的詳細資訊： 專案代碼：trac-tw 專案首頁：http://code.google.com/p/trac-tw 取出主幹原始檔：svn checkout http://trac-tw.googlecode.com/svn/trunk/ trac-tw 取出本日原始檔：svn checkout http://trac-tw.googlecode.com/svn/tags/TAG-20070908 trac-tw 直接下載修改過的樣板檔：http://trac-tw.googlecode.com/files/trac_templates.zip 版權：New BSD License (原本Trac是採用Modified BSD License，因此我比照使用BSD License，不知是否妥當？)如果您也有興趣要強化此中文版的翻譯，請寄信給我，我將開啟存取Subversion檔案的帳號給您。對翻譯有建議或意見者，請直接留言在專案的Wiki上，我會盡速回應。##&nbsp;
		]]>
	</description>
	<content:encoded><![CDATA[
			在推動使用<a href="http://trac.edgewall.org/" target="_blank" title="外部連結至 http://trac.edgewall.org/" class="externalLink">Trac</a>當 做協同專案團隊運作工具的過程中，缺乏中文介面始終是個阻礙。雖然說軟體開發人員對於英文應該比一般行業要熟悉一些，尤其對於電腦英文更應得心順手才對， 但總是三不五時有人反應怎麼沒有中文版．．．又顧及大陸同仁接受英文的程度更差，索性把Trac常用的詞彙翻譯成中文算了。利用閒暇時間把Trac的樣板 檔逐一修改，再公佈到<a href="http://code.google.com/p/trac-tw" target="_blank" title="外部連結至 http://code.google.com/p/trac-tw" class="externalLink">Google Code</a>上供有興趣的讀者們下載使用。以下是trac-tw專案的詳細資訊：<br /><ul><li> 專案代碼：trac-tw</li><li> 專案首頁：<a href="http://code.google.com/p/trac-tw" target="_blank" title="外部連結至 http://code.google.com/p/trac-tw" class="externalLink">http://code.google.com/p/trac-tw</a></li><li> 取出主幹原始檔：svn checkout http://trac-tw.googlecode.com/svn/trunk/ trac-tw</li><li> 取出本日原始檔：svn checkout http://trac-tw.googlecode.com/svn/tags/TAG-20070908 trac-tw</li><li> 直接下載修改過的樣板檔：<a href="http://trac-tw.googlecode.com/files/trac_templates.zip" target="_blank" title="外部連結至 http://trac-tw.googlecode.com/files/trac_templates.zip" class="externalLink">http://trac-tw.googlecode.com/files/trac_templates.zip</a></li><li> 版權：New BSD License (原本Trac是採用Modified BSD License，因此我比照使用BSD License，不知是否妥當？)</li></ul><p>如果您也有興趣要強化此中文版的翻譯，請<a href="mailto:emisjerry@gmail.com" target="_blank" title="外部連結至 mailto:emisjerry@gmail.com" class="externalLink">寄信</a>給我，我將開啟存取Subversion檔案的帳號給您。對翻譯有建議或意見者，請直接留言在專案的Wiki上，我會盡速回應。</p><p>##&nbsp;</p>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/4105153.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/4105153.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 08 Sep 2007 15:16:33 +0800</pubDate>
</item>
<item>
	<title>Java-based Subversion client登入AD的帳號問題</title>
	<description><![CDATA[
			如同我在Subversion的Apache設定這篇文章裡提到的，在網 域裡透過Active Directory認證權限時，最好以 網域\帳號 的格式來存取Subversion主機，在TortoiseSVN裡 使用此格式皆可容易的做更新、送交等操作。但一遇到Java版的Subversion Client（如SmartSVN 3.0.2與IntelliJ IDEA 7.0M2）時卻遇到下列錯誤： [Fri Aug 24 16:16:46 2007] [error] [client 10.xx.yy.zz] Access denied: &#39;DOMAIN\\UserId&#39; PROPFIND svn:/trunk/project1/source 登入帳號時試過各種大小寫組合，都無法成功登入，測試許久後才發現Apache裡的權限檔案必須把該帳號網域改成大寫， 否則就是會登入失敗。看來Apache是區分大小寫的，而網域是必須大寫的。真是怪異的情況。 
		]]>
	</description>
	<content:encoded><![CDATA[
			如同我在<a href="http://blog.xuite.net/emisjerry/tech/12598805" target="_blank" title="外部連結至 http://blog.xuite.net/emisjerry/tech/12598805" class="externalLink">Subversion的Apache設定</a>這篇文章裡提到的，在網 域裡透過Active Directory認證權限時，最好以 <strong>網域\帳號</strong> 的格式來存取Subversion主機，在<a href="http://tortoisesvn.tigris.org/" target="_blank" title="外部連結至 http://tortoisesvn.tigris.org" class="externalLink">TortoiseSVN</a>裡 使用此格式皆可容易的做更新、送交等操作。但一遇到Java版的Subversion Client（如<a href="http://www.syntevo.com/smartsvn/index.jsp" target="_blank" title="外部連結至 http://www.syntevo.com/smartsvn/index.jsp" class="externalLink">SmartSVN 3.0.2</a>與<a href="http://www.jetbrains.com/" target="_blank" title="外部連結至 http://www.jetbrains.com" class="externalLink">IntelliJ IDEA 7.0M2</a>）時卻遇到下列錯誤：<br /> <pre>[Fri Aug 24 16:16:46 2007] [error] [client 10.xx.yy.zz] Access denied: &#39;DOMAIN\\UserId&#39; PROPFIND svn:/trunk/project1/source<br /></pre> 登入帳號時試過各種大小寫組合，都無法成功登入，測試許久後才發現Apache裡的權限檔案必須把該<strong>帳號網域改成大寫</strong>， 否則就是會登入失敗。看來Apache是區分大小寫的，而網域是必須大寫的。真是怪異的情況。 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/4006195.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/4006195.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 24 Aug 2007 22:44:04 +0800</pubDate>
</item>
<item>
	<title>TortoiseSVN: 解決TSVNCache佔用CPU過高的設定</title>
	<description><![CDATA[
			 竟然被中文介面誤導了這麼久！如果你偶爾在工作管理員裡發覺TSVNCache.exe突 然耗用許多CPU資源(有時會超過50%)，那要趕緊去檢查TortoiseSVN的 設定。原來是這個常駐的Process會定時去掃描受Subversion控 管的檔案是否被修改了，掃描到後，這些被修改的檔案、與其所屬的子目錄、目錄等的覆蓋圖示都一併更新，而就是這個動作不僅佔用約10-50 MB記憶體，也會瞬間衝出超過CPU 50%負載。 圖示覆蓋與狀態欄更新設定 打開TortoiseSVN的 【設定視窗(Settings)&rarr;視覺樣式(Look and Feel)&rarr;圖示覆蓋(Icon Overlays)】，右邊第一個Radio Group名稱「圖示覆蓋/狀態列」的英文是「Icon Overlays/Status Columns」，其中的Status Columns應譯成狀 態欄才對，它指的是在檔案總管裡把顯示模式切換成詳細資料時， 標題欄位裡的Subversion欄位是否要同步更新狀態。如果你只會在檔案總管裡操作Subversion狀態的話，應該把「僅在檔案總管中顯示圖示覆 蓋」打勾，以免除另存新檔、開啟檔案等對話窗也更新圖示狀態。但我有時會在Total Commander裡操作Subversion，因此就不能勾選。 狀態快取設定 右邊第二個Radio Group名稱譯成「狀態列」，讓人誤解成以為是顯示訊息的狀態列設 定，但其實英文是Status Cache－狀態快取設 定，指的是資料夾與檔案圖示的SVN小圖示的覆蓋狀態的處理模式。Status Cache有3個選項：  Default 預設的快取設定，使用TSVNCache.exe 來定時掃描檔案系統，找到要變動的檔案後發出更新圖示的通知給作業系統   Shell 在Shell extension裡，只針對目前所在資料夾做圖示異動更新；只佔用1MB記憶體，但因只快取一個資料夾，當Working copy內容較多時會花較多時間才能更新完畢   None 不做任何圖示覆蓋快取，因此圖示更新速度較慢  我特別做了測試把狀態改用Shell，重新開機後工作管理員裡就找不到TSVNCache.exe 了，用檔案總管檢視Working copy資料夾時，圖示覆蓋以較緩慢的速度顯示出來。 磁碟機類型 磁碟機類型是指定讀取Subversion檔案狀態的對象，建議選硬碟，以免別的媒體較慢的讀取速度造成TortoiseSVN效 能低落。  在Subversion Forum這篇討論裡也有如下建議：  把A:\*、C:\*、D:\*到Z:\*都加到除外路徑裡，表 示每個磁碟都不做異動掃描 再把工作中的Working copy加入包含路徑，如c:\NewProject\*、 d:\NewWD 再試用觀察一陣子再來確認應該用那樣的設定較好。
		]]>
	</description>
	<content:encoded><![CDATA[
			<img style="width: 658px; height: 442px; float: left" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/13113961/0.jpg" alt="TortoiseSVN settings" hspace="10" vspace="20" /> 竟然被中文介面誤導了這麼久！如果你偶爾在工作管理員裡發覺<strong><span class="tiddlyLink tiddlyLinkNonExisting">TSVNCache</span>.exe</strong>突 然耗用許多CPU資源(有時會超過50%)，那要趕緊去檢查<a href="http://tortoisesvn.tigris.org/" target="_blank" title="外部連結至 http://tortoisesvn.tigris.org" class="externalLink">TortoiseSVN</a>的 設定。原來是這個常駐的Process會定時去掃描受<a href="http://subversion.rigris.org/" target="_blank" title="外部連結至 http://subversion.rigris.org" class="externalLink">Subversion</a>控 管的檔案是否被修改了，掃描到後，這些被修改的檔案、與其所屬的子目錄、目錄等的覆蓋圖示都一併更新，而就是這個動作不僅佔用約10-50 MB記憶體，也會瞬間衝出超過CPU 50%負載。<br /> <h3>圖示覆蓋與狀態欄更新設定</h3> 打開<a href="javascript:;" title="'TortoiseSVN' 尚無內容" class="tiddlyLink tiddlyLinkNonExisting">TortoiseSVN</a>的 【設定視窗(Settings)&rarr;視覺樣式(Look and Feel)&rarr;圖示覆蓋(Icon Overlays)】，右邊第一個Radio Group名稱「圖示覆蓋/狀態列」的英文是「Icon Overlays/Status Columns」，其中的<strong>Status Columns</strong>應譯成<strong>狀 態欄</strong>才對，它指的是在檔案總管裡把顯示模式切換成<strong>詳細資料</strong>時， 標題欄位裡的Subversion欄位是否要同步更新狀態。如果你只會在檔案總管裡操作Subversion狀態的話，應該把「僅在檔案總管中顯示圖示覆 蓋」打勾，以免除另存新檔、開啟檔案等對話窗也更新圖示狀態。但我有時會在<a href="http://www.ghisler.com/" target="_blank" title="外部連結至 http://www.ghisler.com/" class="externalLink">Total Commander</a>裡操作Subversion，因此就不能勾選。<br /> <h3>狀態快取設定</h3> 右邊第二個Radio Group名稱譯成「<strong>狀態列</strong>」，讓人誤解成以為是顯示訊息的狀態列設 定，但其實英文是<strong>Status Cache</strong>－<strong>狀態快取</strong>設 定，指的是資料夾與檔案圖示的SVN小圖示的覆蓋狀態的處理模式。Status Cache有3個選項：<br /> <ul><li> Default</li></ul> <blockquote>預設的快取設定，使用<span class="tiddlyLink tiddlyLinkNonExisting">TSVNCache</span>.exe 來定時掃描檔案系統，找到要變動的檔案後發出更新圖示的通知給作業系統<br /> </blockquote> <ul><li> Shell</li></ul> <blockquote>在Shell extension裡，只針對目前所在資料夾做圖示異動更新；只佔用1MB記憶體，但因只快取一個資料夾，當Working copy內容較多時會花較多時間才能更新完畢<br /> </blockquote> <ul><li> None</li></ul> <blockquote>不做任何圖示覆蓋快取，因此圖示更新速度較慢<br /> </blockquote> 我特別做了測試把狀態改用Shell，重新開機後工作管理員裡就找不到<span class="tiddlyLink tiddlyLinkNonExisting">TSVNCache</span>.exe 了，用檔案總管檢視Working copy資料夾時，圖示覆蓋以較緩慢的速度顯示出來。<br /> <h3>磁碟機類型</h3> 磁碟機類型是指定讀取Subversion檔案狀態的對象，建議選硬碟，以免別的媒體較慢的讀取速度造成<span class="tiddlyLink tiddlyLinkNonExisting">TortoiseSVN</span>效 能低落。<br /> <br /> 在Subversion Forum<a href="http://www.svnforum.org/2017/viewtopic.php?t=890&amp;sid=05430ebf1c2fd1177cbc5e9ccd8d754e" target="_blank" title="外部連結至 http://www.svnforum.org/2017/viewtopic.php?t=890&amp;sid=05430ebf1c2fd1177cbc5e9ccd8d754e" class="externalLink">這篇討論</a>裡也有如下建議：<br /> <ul><li> 把A:\*、C:\*、D:\*到Z:\*都加到<strong>除外路徑</strong>裡，表 示每個磁碟都不做異動掃描</li><li> 再把工作中的Working copy加入<strong>包含路徑</strong>，如c:\<span class="tiddlyLink tiddlyLinkNonExisting">NewProject</span>\*、 d:\<span class="tiddlyLink tiddlyLinkNonExisting">NewWD</span></li></ul> 再試用觀察一陣子再來確認應該用那樣的設定較好。
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3979261.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3979261.html</guid>
	<category>專案管理工具</category>
	<pubDate>Tue, 21 Aug 2007 21:10:48 +0800</pubDate>
</item>
<item>
	<title>「勢不可擋」的Subversion</title>
	<description><![CDATA[
			 Guido Haarmans在他的Blog裡發表一篇Unstoppable Subversion，揭露Subversion的成長趨勢。比照以前Oracle的口號：Unbreakable Oracle－堅不可摧的Oracle，我把篇名譯為「勢不可擋的Subversion」。文中提及E-Soft公佈了Subversion的成長趨勢圖，大約在一年裡有3倍的成長。以我個人的使用經驗，Subversion確實比CVS優秀不少，Windows裡的TortoiseSVN又提供了很好的整合。如果你還在使用Visual SourceSafe或CVS的話，建議測試一下Subversion吧，相信能「一試成主顧」的。##   
		]]>
	</description>
	<content:encoded><![CDATA[
			 <div class="viewer"><a href="http://blogs.open.collab.net/svn/2007/08/unstoppable-sub.html" target="_blank" title="外部連結至 http://blogs.open.collab.net/svn/2007/08/unstoppable-sub.html" class="externalLink">Guido Haarmans</a>在他的Blog裡發表一篇<a href="http://blogs.open.collab.net/svn/2007/08/unstoppable-sub.html" target="_blank" title="外部連結至 http://blogs.open.collab.net/svn/2007/08/unstoppable-sub.html" class="externalLink">Unstoppable Subversion</a>，揭露<a href="http://subversion.tigris.org/" target="_blank" title="外部連結至 http://subversion.tigris.org" class="externalLink">Subversion</a>的成長趨勢。比照以前Oracle的口號：Unbreakable Oracle－堅不可摧的Oracle，我把篇名譯為<strong>「勢不可擋的Subversion」</strong>。<br /><br />文中提及<a href="http://www.securityspace.com/s_survey/data/man.200707/apachemods.html?mod=U1ZO" target="_blank" title="外部連結至 http://www.securityspace.com/s_survey/data/man.200707/apachemods.html?mod=U1ZO" class="externalLink">E-Soft</a>公佈了Subversion的成長趨勢圖，大約在一年裡有3倍的成長。<br /><img src="http://blogs.open.collab.net/photos/uncategorized/2007/08/17/svn.jpg" alt="" title="Subversion growth chart" /><br />以我個人的使用經驗，Subversion確實比CVS優秀不少，Windows裡的<a href="http://tortoisesvn.tigris.org/" target="_blank" title="外部連結至 http://tortoisesvn.tigris.org" class="externalLink">TortoiseSVN</a>又提供了很好的整合。如果你還在使用Visual SourceSafe或CVS的話，建議測試一下Subversion吧，相信能「一試成主顧」的。<br /><br />##<br /></div>  <!--}}}--><!--{{{--> 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3953375.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3953375.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 18 Aug 2007 17:19:36 +0800</pubDate>
</item>
<item>
	<title>開源的專案管理工具：GanttProject與OpenProj</title>
	<description><![CDATA[
			  一般最常用來做為專案管理工具的非Microsoft Project莫屬，不僅功能眾多，相關的書籍也多，不過，若你的需求只是畫畫甘特圖、做點小團隊的資源分配等簡單的管理，除了使用Excel或Visio外，或許開源的GanttProject與OpenProj也能符合所需。GanttProject我用得比較久，是以Java撰寫且有中文介面，它的操作我用起來比較順手。OpenProj在Windows裡是以MSVC運行，但也有*nix的版本，它能直接讀取Microsoft Project的.mpp檔案，但可惜尚無中文介面。需要做專案管理嗎？除了Excel土法煉鋼外，也試試這兩個Freeware吧。下載 GanttProject OpenProj
		]]>
	</description>
	<content:encoded><![CDATA[
			  一般最常用來做為專案管理工具的非Microsoft Project莫屬，不僅功能眾多，相關的書籍也多，不過，若你的需求只是畫畫甘特圖、做點小團隊的資源分配等簡單的管理，除了使用Excel或Visio外，或許開源的<a href="http://ganttproject.sf.net/" target="_blank" title="外部連結至 http://ganttproject.sf.net" class="externalLink">GanttProject</a>與<a href="http://openproj.org/" target="_blank" title="外部連結至 http://openproj.org" class="externalLink">OpenProj</a>也能符合所需。<br /><br /><a href="http://ganttproject.sf.net/" target="_blank" title="外部連結至 http://ganttproject.sf.net" class="externalLink">GanttProject</a>我用得比較久，是以Java撰寫且有中文介面，它的操作我用起來比較順手。<a href="http://openproj.org/" target="_blank" title="外部連結至 http://openproj.org" class="externalLink">OpenProj</a>在Windows裡是以MSVC運行，但也有*nix的版本，它能直接讀取Microsoft Project的.mpp檔案，但可惜尚無中文介面。<br /><br />需要做專案管理嗎？除了Excel土法煉鋼外，也試試這兩個Freeware吧。<br /><h3>下載</h3><ul><li> <a href="http://ganttproject.sf.net/" target="_blank" title="外部連結至 http://ganttproject.sf.net" class="externalLink">GanttProject</a></li><li> <a href="http://openproj.org/" target="_blank" title="外部連結至 http://openproj.org" class="externalLink">OpenProj</a></li></ul>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3951401.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3951401.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 18 Aug 2007 10:14:24 +0800</pubDate>
</item>
<item>
	<title>幫Trac加上TiddlyWiki的雙擊快速編輯功能</title>
	<description><![CDATA[
			如同我在TiddlyWiki編輯的快速鍵這篇裡提到的：用雙 擊(Double click)就能立即進入編輯狀態，不用捲動網頁尋找編輯按鈕，對於經常要編修內容的使用者而言，應該 能節省不少時間。但這個功能對於同時要操作Trac的wiki 的我而言，偶爾會出現錯亂現象，在Trac網頁按了幾次Double click，突然才意識到這不 是TiddlyWiki，雙擊根本不 能用的呀。為了徹底解決這個狀況，索性修改Trac的樣板，幫Trac也 加上Double click的快速編輯功能。以下是修改的步驟： 由\Python24\share\trac\templates\取 出Wiki的樣板檔：wiki.cs搜尋accesskey=&quot;e&quot;(在Trac 0.10.4裡是第363行)，在這個標籤上加上id=&quot;btnEdit&quot;，給它加上識別ID再到檔案最後面加上以下JavaScript： &lt;script&gt; document.ondblclick = function() { document.getElementById(&quot;btnEdit&quot;).click(); }&lt;/script&gt; 這樣就在Trac裡增加雙擊的功能了。## 
		]]>
	</description>
	<content:encoded><![CDATA[
			如同我在<a href="http://blog.xuite.net/emisjerry/tech/12948383" target="_blank" title="外部連結至 http://blog.xuite.net/emisjerry/tech/12948383" class="externalLink">TiddlyWiki編輯的快速鍵</a>這篇裡提到的：用<strong>雙 擊(Double click)</strong>就能立即進入編輯狀態，不用捲動網頁尋找編輯按鈕，對於經常要編修內容的使用者而言，應該 能節省不少時間。但這個功能對於同時要操作<a href="http://trac.edgewall.org/" target="_blank" title="外部連結至 http://trac.edgewall.org/" class="externalLink">Trac</a>的wiki 的我而言，偶爾會出現錯亂現象，在<em>Trac</em>網頁按了幾次Double click，突然才意識到這<strong>不 是<a href="javascript:;" title="TiddlyWiki - JerryChien, 2007年8月6日 21:37:00" class="tiddlyLink tiddlyLinkExisting">TiddlyWiki</a></strong>，雙擊根本不 能用的呀。為了徹底解決這個狀況，索性修改<em>Trac</em>的樣板，幫<em>Trac</em>也 加上Double click的快速編輯功能。以下是修改的步驟：<br /> <ol><li>由<strong>\Python24\share\trac\templates\</strong>取 出Wiki的樣板檔：<strong>wiki.cs</strong></li><li>搜尋accesskey=&quot;e&quot;(在Trac 0.10.4裡是第363行)，在這個標籤上加上id=&quot;btnEdit&quot;，給它加上識別ID</li><li>再到檔案最後面加上以下<a href="javascript:;" title="'JavaScript' 尚無內容" class="tiddlyLink tiddlyLinkNonExisting">JavaScript</a>：</li></ol> <pre>&lt;script&gt;<br /> document.ondblclick = function() {<br /> document.getElementById(&quot;btnEdit&quot;).click();<br /> }<br />&lt;/script&gt;<br /></pre> 這樣就在<em>Trac</em>裡增加雙擊的功能了。<br /><br />## 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3903907.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3903907.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 10 Aug 2007 22:08:05 +0800</pubDate>
</item>
<item>
	<title>於Trac使用IncludeMacro以插入共用網頁</title>
	<description><![CDATA[
			 我幫幾個剛開始運作沒多久的專案架上了Trac系統，也希望每個Trac首頁都具有相同的內容，但因為內容仍然會增添修改，導致經常要做內容同步的動作，經過一番搜尋後，發現可以使用IncludeMacro來讓每個Trac來含入(Include)同一個Wiki網頁，屆時只要維護被含入的共用網頁內容，即可讓每個首頁的使用說明部份都是相同的。安裝IncludeMacroIncludeMacro說明網頁：http://trac-hacks.org/wiki/IncludeMacro安裝步驟：cd &nbsp;\Python24\Scriptseasy_install &nbsp; http://trac-hacks.org/svn/includemacro使用admin登入Trac，進入Admin選項並啟動IncludeMacro上一步驟也可在trac.ini的[components] 設定 includemacro.macros.includemacro = enabled使用IncludeMacrl格式：[[Include(插入網頁)]]&quot;插入網頁&quot;可以是http:、ftp:、wiki:等不同來源可再指定第2個參數指定插入網頁的形態，如x-trac-wiki表示為Wiki形態範例：[[Include(wiki:WikiStart)]]、[[Include(http://YourTrac/SharedWiki.txt, x-trac-wiki)]] 
		]]>
	</description>
	<content:encoded><![CDATA[
			 我幫幾個剛開始運作沒多久的專案架上了Trac系統，也希望每個Trac首頁都具有相同的<a href="http://blog.xuite.net/emisjerry/tech/12741565" target="_blank">內容</a>，但因為內容仍然會增添修改，導致經常要做內容同步的動作，經過一番搜尋後，發現可以使用<a href="http://trac-hacks.org/wiki/IncludeMacro" target="_blank"><span style="font-weight: bold">IncludeMacro</span></a>來讓每個Trac來含入(Include)同一個Wiki網頁，屆時只要維護被含入的共用網頁內容，即可讓每個首頁的使用說明部份都是相同的。<br /><br /><span style="font-weight: bold">安裝IncludeMacro</span><br /><ul><li>IncludeMacro說明網頁：<a href="http://trac-hacks.org/wiki/IncludeMacro" target="_blank">http://trac-hacks.org/wiki/IncludeMacro</a></li><li>安裝步驟：<br />cd &nbsp;\Python24\Scripts<br />easy_install &nbsp; http://trac-hacks.org/svn/includemacro</li><li>使用admin登入Trac，進入Admin選項並啟動IncludeMacro</li><li>上一步驟也可在trac.ini的[components] 設定 includemacro.macros.includemacro = enabled</li></ul>使用IncludeMacrl<br /><ul><li>格式：<span style="font-weight: bold">[[Include(插入網頁)]]</span></li><li>&quot;插入網頁&quot;可以是http:、ftp:、wiki:等不同來源</li><li>可再指定第2個參數指定插入網頁的形態，如<span style="font-weight: bold">x-trac-wiki</span>表示為Wiki形態</li><li>範例：[[Include(wiki:WikiStart)]]、[[Include(http://YourTrac/SharedWiki.txt, x-trac-wiki)]]</li></ul> 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3722183.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3722183.html</guid>
	<category>專案管理工具</category>
	<pubDate>Thu, 26 Jul 2007 22:14:32 +0800</pubDate>
</item>
<item>
	<title>歡迎使用 Trac 0.10.4</title>
	<description><![CDATA[
			 這是我放在我們Trac起始頁面上的文字，對Trac的使用做了很簡 略的介紹，請大家參考看看。 歡迎使用 Trac 0.10.4 通常在某個軟體專案的開發過程中，可能不會耗時費力地為專案建立專屬的網站或網頁，一般只會把原始碼集中在CVS或Subversion上， 問題或待辦事項以Issue/Bug Tracking System來追蹤， 而重要的關於專案的細節與訊息溝通，大都透過當面對話、即時訊息系統(ICQ、MSN Messenger)與電子郵件來達成。在這樣的開發過程中，除了資訊四處散落之外，專案發展過程的重要管理項目與經驗等都無法被有效彙總與整理，導致專 案的細節只有深入專案的參與人員才能有所體會，但隨著時間流逝，這些重要的體驗也將逐漸被遺忘。  為了強化專案資訊的有效流通與專案狀態的傳承，Trac系統是個不錯的選擇。Trac的 核心是所謂的Wiki，經由Wiki我 們可以迅速建立需要的網頁與眾多連結。相對於HTML、CSS等的使用，Wiki是相對簡單且易學的。  Wiki的使用就屬WikiFormatting和TracWiki的 概念較為特殊，完整的介紹請看TracGuide的 說明，以下是簡要的概述，會了這些就先能開始作業了：  Trac裡的每一個網頁都能在瀏覽器裡直接編輯，編輯完的每個版本都會被儲存起來，並且能還原到先前版本。 字體變化 粗體：用三個單引號夾住的文字會變粗體字  &#39;&#39;&#39;粗體文字&#39;&#39;&#39;  ==&gt; 粗體文字 斜體：用兩個單引號夾住的文字會變斜體字  &#39;&#39;斜體文字&#39;&#39;  ==&gt; 斜體文字 粗斜體：用五個單引號  &#39;&#39;&#39;&#39;&#39;粗斜體文字&#39;&#39;&#39;&#39;&#39;  ==&gt; 粗斜體文字 底線：用兩個底線夾住  __底線文字__  ==&gt; 底線文字 刪除線：用兩個~夾住  ~~刪除文字~~  ==&gt; 刪除文字 上標字：用^夾住  ^上標文字^  ==&gt; 上標文字 下標字：用兩個逗點夾住  ,,下標文字,,  ==&gt; 下標文字  常用的超連結(參考TracLinks) 用駱峰式英文(CamelCase) 表示的文字自動形成超連結，即數個英文字連在一起(中間不能有空白)且每個字的第一個字母大寫，其餘小寫 以中文表示超連結之格式：用中括號把兩組文字夾起來 [CamelCase 顯示在網頁上的中文超連結] 例：[TracLinks Trac超連結] ==&gt; Trac超連結 上述第一組文字也可以用網址：[http://blog.xuite.net/emisjerry/tech 簡睿隨筆] ==&gt;&nbsp;簡睿隨筆 中文連結可以用 [wiki:中文] 的格式，形成的Wiki網頁就是中文名 稱；用這種形式的網址會較常，但能在Index By Title裡出現易讀的中文連結附件的表示方法：[attachment: 附件檔名]，建議用中括號夾起來，attachment: 字樣才不會出現Subversion檔案的表示方法：[source: Subversion路徑]，建議用中括號夾起來，source: 字樣才不會出現 顯示程式碼原貌：用三個大括號夾住的區塊圖檔的顯示方法：先將圖檔當做附件上傳用 [[Image(圖檔檔名)]] 就能顯示圖形更多的Trac巨集參考：http://trac.edgewall.org/wiki/MacroBazaarTrac的繁體中文術語對照表, 簡體中文術語對照表  學習的最有效方法就是開始使用。請盡情的編輯吧！   你也可以用練習沙箱區來 練習與測試。  Starting Points  TracGuide -- 內建的使用說明 Trac 專案 -- Trac開源專案 Trac FAQ -- 常見問答 TracSupport -- Trac支援  
		]]>
	</description>
	<content:encoded><![CDATA[
			 <h1 id="歡迎使用Trac0.10.4" style="color: #006600"><span style="font-weight: normal">這是我放在我們Trac起始頁面上的文字，對Trac的使用做了很簡 略的介紹，請大家參考看看。</span></h1> <h1 id="歡迎使用Trac0.10.4">歡迎使用 Trac 0.10.4</h1> <p>通常在某個軟體專案的開發過程中，可能不會耗時費力地為專案建立專屬的網站或網頁，一般只會把原始碼集中在<strong>CVS</strong>或<strong>Subversion</strong>上， 問題或待辦事項以<strong>Issue/Bug Tracking System</strong>來追蹤， 而重要的關於專案的細節與訊息溝通，大都透過當面對話、即時訊息系統(ICQ、MSN Messenger)與電子郵件來達成。在這樣的開發過程中，除了資訊四處散落之外，專案發展過程的重要管理項目與經驗等都無法被有效彙總與整理，導致專 案的細節只有深入專案的參與人員才能有所體會，但隨著時間流逝，這些重要的體驗也將逐漸被遺忘。 </p> 為了強化專案資訊的有效流通與專案狀態的傳承，<strong>Trac</strong>系統是個不錯的選擇。<em>Trac</em>的 核心是所謂的<a href="http://zh.wikipedia.org/wiki/Wiki" class="ext-link"><span class="icon">Wiki</span></a>，經由<em>Wiki</em>我 們可以迅速建立需要的網頁與眾多連結。相對於HTML、CSS等的使用，Wiki是相對簡單且易學的。 <br /> Wiki的使用就屬<a href="http://trac.edgewall.org/wiki/WikiFormatting" target="_blank" class="wiki">WikiFormatting</a>和<a href="http://trac.edgewall.org/wiki/TracWiki" target="_blank" class="wiki">TracWiki</a>的 概念較為特殊，完整的介紹請看<a href="http://trac.edgewall.org/wiki/TracGuide" target="_blank" class="wiki">TracGuide</a>的 說明，以下是簡要的概述，會了這些就先能開始作業了：  <ol><li>Trac裡的每一個網頁都能在瀏覽器裡直接編輯，編輯完的每個版本都會被儲存起來，並且能還原到先前版本。 </li><li>字體變化 <ol class="lowerroman"><li>粗體：用三個單引號夾住的文字會變粗體字  &#39;&#39;&#39;粗體文字&#39;&#39;&#39;  ==&gt; <strong>粗體文字</strong> </li><li>斜體：用兩個單引號夾住的文字會變斜體字  &#39;&#39;斜體文字&#39;&#39;  ==&gt; <em>斜體文字</em> </li><li>粗斜體：用五個單引號  &#39;&#39;&#39;&#39;&#39;粗斜體文字&#39;&#39;&#39;&#39;&#39;  ==&gt; <strong><em>粗斜體文字</em></strong> </li><li>底線：用兩個底線夾住  __底線文字__  ==&gt; <span class="underline">底線文字</span> </li><li>刪除線：用兩個~夾住  ~~刪除文字~~  ==&gt; <del>刪除文字</del> </li><li>上標字：用^夾住  ^上標文字^  ==&gt; <sup>上標文字</sup> </li><li>下標字：用兩個逗點夾住  ,,下標文字,,  ==&gt; <sub>下標文字</sub> </li></ol> </li><li>常用的超連結(參考<a href="http://trac.edgewall.org/wiki/TracLinks" target="_blank">TracLinks</a>) <ol class="lowerroman"><li>用駱峰式英文(<a style="font-weight: bold" href="http://trac.edgewall.org/wiki/CamelCase" target="_blank" class="wiki">CamelCase</a>) 表示的文字自動形成超連結，即數個英文字連在一起(中間不能有空白)且每個字的第一個字母大寫，其餘小寫 </li><li>以中文表示超連結之格式：用中括號把兩組文字夾起來 [CamelCase 顯示在網頁上的中文超連結]<span style="font-weight: bold"> </span>例：[TracLinks Trac超連結] ==&gt; <a href="http://trac.edgewall.org/wiki/TracLinks" class="wiki">Trac超連結</a> </li><li>上述第一組文字也可以用網址：[http://blog.xuite.net/emisjerry/tech 簡睿隨筆]<span style="font-weight: bold"> </span>==&gt;&nbsp;<a href="http://blog.xuite.net/emisjerry/tech" target="_blank">簡睿隨筆</a> </li><li>中文連結可以用<span style="font-weight: bold"> </span>[wiki:中文]<span style="font-weight: bold"> </span>的格式，形成的Wiki網頁就是中文名 稱；用這種形式的網址會較常，但能在<a href="http://trac.edgewall.org/wiki/TitleIndex" target="_blank">Index By Title</a>裡出現易讀的中文連結</li><li>附件的表示方法：<span style="font-weight: bold">[attachment: 附件檔名]</span>，建議用中括號夾起來，attachment: 字樣才不會出現</li><li>Subversion檔案的表示方法：<span style="font-weight: bold">[source: Subversion路徑]</span>，建議用中括號夾起來，source: 字樣才不會出現</li></ol> </li><li>顯示程式碼原貌：用三個大括號夾住的區塊</li><li>圖檔的顯示方法：<ol><li>先將圖檔當做附件上傳</li><li>用<span style="font-weight: bold"> [[Image(圖檔檔名)]] </span>就能顯示圖形</li></ol></li><li>更多的Trac巨集參考：<a href="http://trac.edgewall.org/wiki/MacroBazaar" target="_blank">http://trac.edgewall.org/wiki/MacroBazaar</a></li><li>Trac的<a href="http://trac.edgewall.org/wiki/TracTermsZhTw" class="ext-link"><span class="icon">繁體中文術語對照表</span></a>, <a href="http://trac.edgewall.org/wiki/TracTermsZhCn" class="ext-link"><span class="icon">簡體中文術語對照表</span></a> </li></ol> <h3 id="學習的最有效方法就是開始使用請盡情的編輯吧">學習的最有效方法就是開始使用。請盡情的編輯吧！ </h3>  你也可以用<a href="http://trac.edgewall.org/wiki/SandBox" class="wiki">練習沙箱區</a>來 練習與測試。  <h2 id="StartingPoints">Starting Points </h2> <ul><li><a href="http://trac.edgewall.org/wiki/TracGuide" target="_blank" class="wiki">TracGuide</a> -- 內建的使用說明 </li><li><a href="http://trac.edgewall.org/" class="ext-link"><span class="icon">Trac 專案</span></a> -- Trac開源專案 </li><li><a href="http://trac.edgewall.org/wiki/TracFaq" class="ext-link"><span class="icon">Trac FAQ</span></a> -- 常見問答 </li><li><a href="http://trac.edgewall.org/wiki/TracSupport" target="_blank" class="wiki">TracSupport</a><a href="http://trac.edgewall.org/wiki/TracSupport" target="_blank" class="wiki"> </a>-- Trac支援 </li></ul> 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3716355.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3716355.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 25 Jul 2007 19:25:54 +0800</pubDate>
</item>
<item>
	<title>輕鬆轉換到Subversion的工具：svn importer</title>
	<description><![CDATA[
			前兩年將原始碼版本控制系統由CVS轉換成Subversion時，由Google搜尋到的幾乎都是使用cvs2svn.py，因為對Python毫無概念且也未建置其環境，因此就放棄這個轉換方法，只能取出CVS最新版本再匯入Subversion，結果原先CVS上的修改歷程皆無法轉移到Subversion，要查舊的紀錄只能回CVS查。今天終於發現更好的工具了：svn  importer。   svn importer能由Polarion Software網站下載，是使用Java撰寫的開源程式。除了能轉CVS 外，常見的Version  control system，如PVCS、Visual SourceSafe、ClearCase、StarTeam等，也都能處理。 等做過實際轉換後，再把處理過程登載上來。另外，Polarion另有一個稱做SubTrain的專案，提供了多個Subversion訓練的教材，可由此處下載。
		]]>
	</description>
	<content:encoded><![CDATA[
			<p>前兩年將原始碼版本控制系統由CVS轉換成<a href="http://subversion.tigris.org/" target="_blank">Subversion</a>時，由Google搜尋到的幾乎都是使用cvs2svn.py，因為對Python毫無概念且也未建置其環境，因此就放棄這個轉換方法，只能取出CVS最新版本再匯入Subversion，結果原先CVS上的修改歷程皆無法轉移到Subversion，要查舊的紀錄只能回CVS查。今天終於發現更好的工具了：svn  importer。  </p> <p>svn importer能由<a href="http://www.polarion.org/index.php?page=overview&amp;project=svnimporter" target="_blank">Polarion Software網站下載</a>，是使用Java撰寫的開源程式。除了能轉CVS 外，常見的Version  control system，如PVCS、Visual SourceSafe、ClearCase、StarTeam等，也都能處理。</p> <p>等做過實際轉換後，再把處理過程登載上來。另外，Polarion另有一個稱做SubTrain的專案，提供了多個Subversion訓練的教材，可由<a href="http://www.polarion.org/index.php?page=overview&amp;project=subtrain" target="_blank">此處</a>下載。</p>
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3697501.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3697501.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 21 Jul 2007 22:55:52 +0800</pubDate>
</item>
<item>
	<title>用Aqua Data Studio存取Trac.db以加速權限設定</title>
	<description><![CDATA[
			 裝了Trac後開始設置使用權限，不過使用者不少，一個一個指派實在太花時間了，如果能由資料庫直接用SQL敘述來下指令應該比較省事，為了一勞永逸以減少日後維護的負擔，還是研究一下如何連接Trac使用的SQLite資料庫吧。以下是我使用Aqua Data Studio(以下簡稱ADS)透過JDBC連接的步驟。首先由http://www.zentus.com/sqlitejdbc/下載SQLite JDBC Driver，我下載的是Pure Java的版本下載後把sqlitejdbc-v036-nested.jar複製到ADS安裝目錄的 lib 資料夾裡【ADS功能表&rarr;Server&rarr;Register Server】，在RDBMS選項裡選擇Generic - JDBC，在右方Location欄位輸入如下資料：URL: jdbc:sqlite:/c:/trac/專案代碼/trac.db &nbsp; 在最後一個冒號後面指定trac.db的完整路徑，磁碟機代號前後都有正斜線( / )Driver: org.sqlite.JDBCDriver Location: C:\Program Files\ADS\lib\sqlitejdbc-v036-nested.jar右方最上面的Name給定一個名稱後按OK設 定好JDBC連線後按Ctrl+Q打開Query Analyzer視窗，逐步展開Schemas，就能看到儲存在trac.db裡的資料表，由資料表名稱可以猜到使用權限是PERMISSION。我們可 以設置幾個不同的群組，再把使用者指派給特定的群組，再針對群組設定能使用的權限即可。以下把user1、user2、user3分別指派給 g_admin、g_pg、g_qa三個群組：&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user1&#39;, &#39;g_admin&#39;);&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user2&#39;, &#39;g_pg&#39;);&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user3&#39;, &#39;g_qa&#39;);接著設置群組g_admin擁有所有權限：INSERT INTO permission(username, action)&nbsp;VALUES(&#39;g_admin&#39;, &#39;BROWSER_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;CHANGESET_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;FILE_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;LOG_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;MILESTONE_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;REPORT_SQL_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;REPORT_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;ROADMAP_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;SEARCH_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_CREATE&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_MODIFY&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TIMELINE_VIEW&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_CREATE&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_MODIFY&#39;);INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_VIEW&#39;);其他群組就依此類推並減少部份權限即可。檢視資料表，對於由別的Issue/Bug tracking系統要匯入資料會有不少幫助的。 
		]]>
	</description>
	<content:encoded><![CDATA[
			 裝了<span style="font-style: italic; font-weight: bold">Trac</span>後開始設置使用權限，不過使用者不少，一個一個指派實在太花時間了，如果能由資料庫直接用SQL敘述來下指令應該比較省事，為了一勞永逸以減少日後維護的負擔，還是研究一下如何連接Trac使用的SQLite資料庫吧。以下是我使用<a href="http://www.aquafold.com/" target="_blank">Aqua Data Studio</a>(以下簡稱ADS)透過JDBC連接的步驟。<br /><ol><li>首先由<a href="http://www.zentus.com/sqlitejdbc/" target="_blank">http://www.zentus.com/sqlitejdbc/</a>下載SQLite JDBC Driver，我下載的是<a href="http://www.zentus.com/sqlitejdbc/dist/sqlitejdbc-v036-nested.tgz" target="_blank">Pure Java的版本</a></li><li>下載後把<span style="font-weight: bold">sqlitejdbc-v036-nested.jar</span>複製到ADS安裝目錄的<span style="font-weight: bold"> lib</span> 資料夾裡</li><li>【ADS功能表&rarr;Server&rarr;Register Server】，在RDBMS選項裡選擇Generic - JDBC，在右方Location欄位輸入如下資料：<ul><li>URL:<span style="font-weight: bold"> jdbc:sqlite:/c:/trac/專案代碼/trac.db</span> &nbsp; 在最後一個冒號後面指定trac.db的完整路徑，磁碟機代號前後都有正斜線( / )</li><li>Driver: <span style="font-weight: bold">org.sqlite.JDBC</span></li><li>Driver Location: C:\Program Files\ADS\lib\sqlitejdbc-v036-nested.jar</li></ul></li><li>右方最上面的Name給定一個名稱後按OK</li></ol>設 定好JDBC連線後按Ctrl+Q打開Query Analyzer視窗，逐步展開Schemas，就能看到儲存在trac.db裡的資料表，由資料表名稱可以猜到使用權限是PERMISSION。我們可 以設置幾個不同的群組，再把使用者指派給特定的群組，再針對群組設定能使用的權限即可。<br /><br />以下把user1、user2、user3分別指派給 g_admin、g_pg、g_qa三個群組：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; width: 635px; height: 32px"><tbody><tr><td style="background-color: #ffffcc">&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user1&#39;, &#39;g_admin&#39;);<br />&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user2&#39;, &#39;g_pg&#39;);<br />&nbsp; INSERT INTO permission(username, action)&nbsp; VALUES(&#39;user3&#39;, &#39;g_qa&#39;);</td></tr></tbody></table><br />接著設置群組g_admin擁有所有權限：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; width: 635px; height: 32px"><tbody><tr><td style="background-color: #ffffcc">INSERT INTO permission(username, action)&nbsp;VALUES(&#39;g_admin&#39;, &#39;BROWSER_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;CHANGESET_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;FILE_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;LOG_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;MILESTONE_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;REPORT_SQL_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;REPORT_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;ROADMAP_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;SEARCH_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_CREATE&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_MODIFY&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TICKET_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;TIMELINE_VIEW&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_CREATE&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_MODIFY&#39;);<br />INSERT INTO permission(username, action)&nbsp; VALUES(&#39;g_admin&#39;, &#39;WIKI_VIEW&#39;);<br /></td></tr></tbody></table><br />其他群組就依此類推並減少部份權限即可。檢視資料表，對於由別的Issue/Bug tracking系統要匯入資料會有不少幫助的。 
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3658887.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3658887.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 14 Jul 2007 21:45:45 +0800</pubDate>
</item>
<item>
	<title>在Windows上安裝Trac的完整步驟</title>
	<description><![CDATA[
			 雖然只知道Python的Logo是綠色的蛇，其他完全一無所知，但在TracOnWindows和網站製作學習誌的加持下，還算順利的在Windows上安裝了Trac 0.10.4。以下是安裝過程中做的筆記，主要的安裝程序是參考TracOnWindows的Method 3: Manual Installation：安裝需要的軟體安裝Python 2.4.4：http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi下載簡易安裝程式easy_install.py： http://peak.telecommunity.com/dist/ez_setup.py執行剛下載回來的ez_setup.py(雙擊即可執行)，會自動下載setuptools.exe, 透過此工具以簡化後續的安裝步驟安裝ClearSilver：cd \Python24\scriptseasy_install -f http://clearsilver.net/downloads clearsilver==0.9.14安裝PySQLite：easy_install pysqlite安裝Subversion server&nbsp;安裝Subversion Python library：easy_install -Z http://subversion.tigris.org/downloads/svn-python-1.4.2.win32-py2.4.exe安裝成功會出現&quot;Processing dependencies for svn-python==1.4.2&quot;; 這個步驟會等較久些安裝Trac 0.10.4：http://ftp.edgewall.com/pub/trac/trac-0.10.4.win32.exe把trac-admin和tracd少掉的副檔名給加上去：cd \Python24\scriptsren trac-admin trac-admin.pyren tracd tracd.py以上已把需要的程式都安裝完畢。接著是設定。Trac系統設定建立Trac環境；在這裡我把Trac裝到C:\trac資料夾md \trac cd \trac\Python24\Scripts\trac-admin.py \trac\專案代碼 initenv重新啟動Apache以上指令中的「專案代碼」會變成網址中的webapp的文件根目錄.。執行後會以問答的方式輸入需要的資料：Project Name: 專案名稱，可以用中文Database connection string: db/trac.db&nbsp; 用預設值Repository type: svnhttp://trac-hacks.org/wiki/Path to repository: d:\svn 或用UNC寫法Install Templates directory: d:\Python24\share\trac\templates 用預設值重新啟動Apache重新啟動Apache開始建檔環境時會出現 &quot;Creating and Initializing Project&quot;，建立檔案後會&quot;Indexing repository&quot;, 索引時間視檔案庫大小而定。啟動與測試：以Stand-alone的方式啟動Trac Servercd \Python24\scripts tracd.py --port 8000 C:\trac\專案代碼啟動後在瀏覽器網址輸入 http://localhost:8000/ 或 http://localhost:8000/專案代碼 測試之。建立Trac的管理使用者cd \Python24\scriptstrac-admin.py c:\trac\專案代碼 permission add admin TRAC_ADMIN不許匿名用戶使用cd \Python24\scriptstrac-admin.py c:\trac\專案代碼 permission remove anonymous *安裝Plugins WebAdmin，建立管理網頁： cd \Python24\scriptseasy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/安裝Plugins AccountManager，以方便管理使用者： &nbsp;cd \Python24\scriptseasy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10安裝Plugins IniAdmin，用網頁設定系統設定檔trac.ini：cd \Python24\scriptseasy_install http://trac-hacks.org/svn/iniadminplugineasy_install的使用頻率很高，讓我聯想到它的功能和Debian的apt-get有點類似，它會先到網址參數的Subversion檔案庫取下檔案，並存放到暫存目錄再執行安裝，把下載、解壓縮、執行、設定的繁瑣步驟給簡化了，相當地方便。有更多的Macros、Plugins可以由Trac Hacks 網站取得。Macro取回zip檔外把檔案複製到\Python24\share\trac\wiki-macros；Plugins則用easy_install安裝即可。Trac和Apache Web Server的整合安裝mod_python：由http://apache.stu.edu.tw/httpd/modpython/win/3.2.10/下載，選擇安裝目錄時選C:\Program Files\Apache Group\Apache2，則mod_python.so會被安裝到c:\Program Files\Apache Group\Apache2\modules資料夾修改 c:\Program Files\Apache Group\Apache2\conf\httpd.conf，找到 LoadModule dav_svn_module &quot;C:/Subversion/bin/mod_dav_svn.so&quot;後，加入 LoadModule python_module modules/mod_python.so設定網址對應，在httpd.conf最後面加上如下設定：&lt;Location /trac&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetHandler mod_python &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonHandler trac.web.modpython_frontend &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonOption TracEnvParentDir c:\trac &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonOption TracUriRoot /trac &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthType Basic &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthName &quot;CompanyName&quot;重新啟動Apache &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthUserFile &quot;D:/Repository/project-users.db&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Require valid-user重新啟動Apache重新啟動Apache &lt;/Location&gt;重新啟動Apache&nbsp;&nbsp;&nbsp;[/] 根目錄必須開放讀的權限給Trac的使用者，否則在瀏覽原始檔時會出現權限不足的錯誤訊息。Trac的其他設定留待有空時再來記錄了。
		]]>
	</description>
	<content:encoded><![CDATA[
			<img style="width: 214px; height: 61px; float: left" src="http://www.edgewall.org/gfx/trac_logo.png" alt="Trac Logo" hspace="20" vspace="20" /> 雖然只知道<a href="http://python.org/" target="_blank">Python</a>的Logo是綠色的蛇，其他完全一無所知，但在<a href="http://trac.edgewall.org/wiki/TracOnWindows" target="_blank">TracOnWindows</a>和<a href="http://blog.roodo.com/jaceju/archives/2703934.html" target="_blank">網站製作學習誌</a>的加持下，還算順利的在Windows上安裝了<a href="http://trac.edgewall.org/" target="_blank">Trac 0.10.4</a>。以下是安裝過程中做的筆記，主要的安裝程序是參考<a href="http://trac.edgewall.org/wiki/TracOnWindows" target="_blank">TracOnWindows</a>的Method 3: Manual Installation：<br /><br /><br />安裝需要的軟體<br /><ol><li>安裝<span style="font-weight: bold">Python 2.4.4</span>：<a href="http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi" target="_blank">http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi</a></li><li>下載簡易安裝程式<span style="font-weight: bold">easy_install.py</span>：<a href="http://peak.telecommunity.com/dist/ez_setup.py" target="_blank"> http://peak.telecommunity.com/dist/ez_setup.py</a></li><li>執行剛下載回來的ez_setup.py(雙擊即可執行)，會自動下載<span style="font-weight: bold">setuptools.exe</span>, 透過此工具以簡化後續的安裝步驟</li><li>安裝<span style="font-weight: bold">ClearSilver</span>：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; font-family: Courier New,Courier,monospace; width: 725px; height: 53px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />easy_install -f http://clearsilver.net/downloads clearsilver==0.9.14</td></tr></tbody></table><br /></li><li>安裝<span style="font-weight: bold">PySQLite</span>：easy_install pysqlite</li><li>安裝<span style="font-weight: bold">Subversion server</span>&nbsp;</li><li>安裝<span style="font-weight: bold">Subversion Python library</span>：easy_install -Z http://subversion.tigris.org/downloads/svn-python-1.4.2.win32-py2.4.exe<br />安裝成功會出現&quot;Processing dependencies for svn-python==1.4.2&quot;; 這個步驟會等較久些</li><li>安裝<span style="font-weight: bold">Trac 0.10.4</span>：http://ftp.edgewall.com/pub/trac/trac-0.10.4.win32.exe</li><li>把trac-admin和tracd少掉的副檔名給加上去：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; font-family: Courier New,Courier,monospace; width: 725px; height: 53px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />ren trac-admin trac-admin.py<br />ren tracd tracd.py</td></tr></tbody></table></li></ol>以上已把需要的程式都安裝完畢。接著是設定。<br /><br />Trac系統設定<br /><ol><li>建立Trac環境；在這裡我把Trac裝到<span style="font-weight: bold">C:\trac</span>資料夾<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; width: 718px; height: 82px"><tbody><tr><td style="background-color: #000000"><span style="color: #33ff33; font-family: Courier New,Courier,monospace">md \trac</span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace"> cd \trac</span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace">\Python24\Scripts\trac-admin.py \trac\專案代碼 initenv</span>重新啟動Apache</td></tr></tbody></table>以上指令中的「專案代碼」會變成網址中的webapp的文件根目錄.。執行後會以問答的方式輸入需要的資料：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; width: 726px; height: 100px"><tbody><tr><td style="background-color: #000000"><span style="color: #33ff33; font-family: Courier New,Courier,monospace">Project Name: 專案名稱，可以用中文</span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace">Database connection string: db/trac.db&nbsp; 用預設值</span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace">Repository type: svnhttp://trac-hacks.org/wiki/</span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace">Path to repository: d:\svn 或用UNC寫法Install </span><br /><span style="color: #33ff33; font-family: Courier New,Courier,monospace">Templates directory: d:\Python24\share\trac\templates 用預設值</span>重新啟動Apache重新啟動Apache</td></tr></tbody></table>開始建檔環境時會出現 &quot;Creating and Initializing Project&quot;，建立檔案後會&quot;Indexing repository&quot;, 索引時間視檔案庫大小而定。<br /></li><li>啟動與測試：以Stand-alone的方式啟動Trac Server<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; font-family: Courier New,Courier,monospace; width: 725px; height: 53px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br /> tracd.py --port 8000 C:\trac\專案代碼</td></tr></tbody></table>啟動後在瀏覽器網址輸入 <span style="font-weight: bold">http://localhost:8000/</span> 或 <span style="font-weight: bold">http://localhost:8000/專案代碼</span> 測試之。<br /></li><li>建立Trac的管理使用者<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #000000; font-family: Courier New,Courier,monospace; width: 721px; height: 52px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />trac-admin.py c:\trac\專案代碼 permission add admin TRAC_ADMIN</td></tr></tbody></table>不許匿名用戶使用<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #000000; font-family: Courier New,Courier,monospace; width: 721px; height: 52px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />trac-admin.py c:\trac\專案代碼 permission remove anonymous *<br /></td></tr></tbody></table></li><br /><li>安裝Plugins WebAdmin，建立管理網頁： <br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #000000; font-family: Courier New,Courier,monospace; width: 721px; height: 52px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/<br /></td></tr></tbody></table><br /></li><li>安裝Plugins AccountManager，以方便管理使用者： &nbsp;<table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #000000; font-family: Courier New,Courier,monospace; width: 721px; height: 52px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10<br /></td></tr></tbody></table><br /></li><li>安裝Plugins IniAdmin，用網頁設定系統設定檔trac.ini：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #000000; font-family: Courier New,Courier,monospace; width: 721px; height: 52px; color: #000000"><tbody><tr><td style="background-color: #ffffcc">cd \Python24\scripts<br />easy_install http://trac-hacks.org/svn/iniadminplugin<br /></td></tr></tbody></table><br /></li></ol><span style="font-weight: bold">easy_install</span>的使用頻率很高，讓我聯想到它的功能和Debian的apt-get有點類似，它會先到網址參數的Subversion檔案庫取下檔案，並存放到暫存目錄再執行安裝，把下載、解壓縮、執行、設定的繁瑣步驟給簡化了，相當地方便。有更多的Macros、Plugins可以由<a href="http://trac-hacks.org/wiki/" target="_blank">Trac Hacks</a> 網站取得。Macro取回zip檔外把檔案複製到\Python24\share\trac\wiki-macros；Plugins則用easy_install安裝即可。<br /><br />Trac和Apache Web Server的整合<br /><ol><li>安裝<span style="font-weight: bold">mod_python</span>：由<a href="http://apache.stu.edu.tw/httpd/modpython/win/3.2.10/" target="_blank">http://apache.stu.edu.tw/httpd/modpython/win/3.2.10/</a>下載，選擇安裝目錄時選C:\Program Files\Apache Group\Apache2，則<span style="font-weight: bold">mod_python.so</span>會被安裝到c:\Program Files\Apache Group\Apache2\modules資料夾</li><li>修改 c:\Program Files\Apache Group\Apache2\conf\<span style="font-weight: bold">httpd.conf</span>，找到 LoadModule dav_svn_module &quot;C:/Subversion/bin/mod_dav_svn.so&quot;後，加入 LoadModule python_module modules/mod_python.so</li><li>設定網址對應，在httpd.conf最後面加上如下設定：<br /><table border="0" cellspacing="1" cellpadding="2" style="text-align: left; background-color: #999999; width: 538px; height: 32px"><tbody><tr><td style="background-color: #ffffcc">&lt;Location /trac&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetHandler mod_python<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonHandler trac.web.modpython_frontend<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonOption TracEnvParentDir c:\trac<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PythonOption TracUriRoot /trac<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthType Basic<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthName &quot;CompanyName&quot;重新啟動Apache<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AuthUserFile &quot;D:/Repository/project-users.db&quot;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Require valid-user重新啟動Apache重新啟動Apache<br /> &lt;/Location&gt;</td></tr></tbody></table></li><li>重新啟動Apache&nbsp;&nbsp;&nbsp;</li><li>[/] 根目錄必須開放讀的權限給Trac的使用者，否則在瀏覽原始檔時會出現權限不足的錯誤訊息。</li></ol>Trac的其他設定留待有空時再來記錄了。
		
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/3655571.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/3655571.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 13 Jul 2007 23:31:44 +0800</pubDate>
</item>
<item>
	<title>使用svn://連檔案庫：svnserve.exe</title>
	<description><![CDATA[
			
一般Subversion Server會和Apache Web Server
2.0一起使用，目錄的控管權限就直接透過Apache強大的功能來達成。但若遇到無法使用Apache時，其實可以直接使用Subversion提供的
獨立Server: svnserve.exe，
使用的通訊埠是3690。

啟動方法很簡單：



cd
\Subversion\bin
svnserve.exe  -d




執行後的DOS視窗會一直開啟著，只要把視窗關閉或按Ctrl-Break就能停止Subversion的運作。
連接的操作網址格式如下，Server的名稱或IP與檔案庫名稱皆依實際的安裝名稱替換：



svn://localhost/repository





參考：
http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.htmlTortoiseSVN安裝目錄 bin/TortoiseSVN_en.chm 3.2節##


		]]>
	</description>
	<content:encoded><![CDATA[
			
一般Subversion Server會和Apache Web Server
2.0一起使用，目錄的控管權限就直接透過Apache強大的功能來達成。但若遇到無法使用Apache時，其實可以直接使用Subversion提供的
獨立Server: <big><big><span style="font-weight: bold;">svnserve.exe</span></big></big>，
使用的通訊埠是3690。<br />
<br />
啟動方法很簡單：<br />
<table cellspacing="1" cellpadding="2" border="0" style="text-align: left; background-color: rgb(0, 153, 0); width: 408px; height: 52px;">
<tbody>
<tr>
<td style="background-color: rgb(255, 255, 204);">cd
\Subversion\bin<br />
svnserve.exe  -d</td>
</tr>
</tbody>
</table>
<br />
執行後的DOS視窗會一直開啟著，只要把視窗關閉或按Ctrl-Break就能停止Subversion的運作。<br />
連接的操作網址格式如下，Server的名稱或IP與檔案庫名稱皆依實際的安裝名稱替換：<br />
<table cellspacing="1" cellpadding="2" border="0" style="text-align: left; background-color: rgb(0, 153, 0); width: 408px; height: 40px;">
<tbody>
<tr>
<td style="background-color: rgb(255, 255, 204);">svn://localhost/repository<br />
</td>
</tr>
</tbody>
</table>
<br />
參考：<br />
<ul><li><a target="_blank" href="http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.htm">http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html</a></li><li>TortoiseSVN安裝目錄 bin/TortoiseSVN_en.chm 3.2節</li></ul>##


		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/2127529.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/2127529.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/2127529.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sun, 10 Sep 2006 13:45:28 +0800</pubDate>
</item>
<item>
	<title>WinMerge檔案濾鏡的使用方法</title>
	<description><![CDATA[
			
當我們在比對CVS或
Subversion的工作目錄(CVS使用，Working Directory)或工作複本(SVN使用，Working
Copy)時，若不將其內部使用的CVS或.svn子目錄忽略掉，則經常會出現許多不必要的檔案；使用下列步驟則可將之忽略掉不比對：

比
對時必須指定檔案濾鏡(File Filter)

【工
具→濾鏡】，在檔案濾鏡頁籤上按新增，給一個新的檔名，例如wwwroot.flt

wwwroot.flt內容如下：

 
 

c:\Program
files\WinMerge\Filters\wwwroot.flt


 

&nbsp;##
This is a directory/file filter template for WinMergename:
wwwrootdesc:
JSP/JSPF/XML,...
&nbsp;## Select if filter is inclusive or exclusive##
Inclusive (loose) filter lets through all items not matching rules## Exclusive filter lets through only items that
match to rule## include or excludedef:
include
&nbsp;##
Filters for filenames begin with f:##
Filters for directories begin with d:## (Inline comments
begin with &quot; ##&quot; and extend to the end of the line)##
以下副檔名的檔案不比對
&nbsp;f:
\.bak$f:
\.class$f:
\.~*$&nbsp;d:
\\images$d:
\\WEB-INF\\work$d:
\\web-inf\\work$d:
\\WEB-INF\\classes$d:
\\web-inf\\classes$d:
\\web-inf\\lib$d:
\\WEB-INF\\tmp$d:
\\\.svn$d:
\\CVS$&nbsp;










include的意思是下列的檔案(f:)與目錄(d:)設定要加入過濾條件裡，符合的檔案不會被比對



f:指定副檔名，因為點(.)是Regular expression的
特殊符號，副檔名的點要用\.來表示；結尾注
意要有Dollar-sign($)


d:指定不要比對的目錄，必須以\\開頭，$結尾


\\\.svn前兩個反斜線表示目錄，
第三個反斜線和.構成
.符
號






##

		]]>
	</description>
	<content:encoded><![CDATA[
			
<p style="margin-bottom: 0cm; page-break-before: always;">當我們在比對CVS或
Subversion的工作目錄(CVS使用，Working Directory)或工作複本(SVN使用，Working
Copy)時，若不將其內部使用的CVS或.svn子目錄忽略掉，則經常會出現許多不必要的檔案；使用下列步驟則可將之忽略掉不比對：</p>
<ol><li>
<p lang="zh-TW" style="margin-bottom: 0cm;">比
對時必須指定檔案濾鏡<font face="Times New Roman, serif">(File Filter)</font></p>
</li><li>
<p lang="zh-TW" style="margin-bottom: 0cm;">【工
具→濾鏡】，在檔案濾鏡頁籤上按新增，給一個新的檔名，例如<font face="Times New Roman, serif">wwwroot.flt</font></p>
</li><li>
<p lang="zh-TW" style="margin-bottom: 0cm;"><font face="Times New Roman, serif">wwwroot.flt</font>內容如下：</p>
<table cellspacing="0" cellpadding="5" bordercolor="#000000" border="1" style="width: 100%;">
<col width="181*" /> <col width="75*" />
<thead> <tr>
<th width="100%" valign="top" bgcolor="#e6e6ff" colspan="2">
<p><font face="Times New Roman, serif">c:\Program
files\WinMerge\Filters\wwwroot.flt</font></p>
</th>
</tr>
</thead> <tbody>
<tr valign="top">
<td style="width: 71%;"><big>&nbsp;</big><p><big><font face="Times New Roman, serif">##
This is a directory/file filter template for WinMerge<br />name:
wwwroot<br />desc:
JSP/JSPF/XML,...</font><br />
</big></p><big>&nbsp;</big><p><big><font face="Times New Roman, serif"><font size="2"><big>## Select if filter is inclusive or exclusive<br />##<font size="2" style="font-size: 9pt;"><big><big>
Inclusive (loose) filter lets through all items not matching rules</big></big></font><br />## Exclusive filter lets through only items that
match to rule<br />## include or exclude</big></font><br />def:
include</font><br />
</big></p><big>&nbsp;</big><p><big><font face="Times New Roman, serif">##
Filters for filenames begin with f:<br />##
Filters for directories begin with d:<br />##<font size="2" style="font-size: 9pt;"><big> (Inline comments
begin with &quot; ##&quot; and extend to the end of the line)</big></font><br />##
</font>以下副檔名的檔案不比對<br />
</big></p><big>&nbsp;</big><p><big><font face="Times New Roman, serif">f:
\.bak$<br />f:
\.class$<br />f:
\.~*$</font></big></p><big>&nbsp;</big><p><big><font face="Times New Roman, serif">d:
\\images$<br />d:
\\WEB-INF\\work$<br />d:
\\web-inf\\work$<br />d:
\\WEB-INF\\classes$<br />d:
\\web-inf\\classes$<br />d:
\\web-inf\\lib$<br />d:
\\WEB-INF\\tmp$<br />d:
\\\.svn$<br />d:
\\CVS$</font></big></p><big>&nbsp;</big></td>
<td width="29%">


<p><br />
</p>




<br /><br />
<p><font face="Times New Roman, serif">include</font><span lang="zh-TW">的意思是下列的檔案</span><font face="Times New Roman, serif">(f:)</font><span lang="zh-TW">與目錄</span><font face="Times New Roman, serif">(d:)</font><span lang="zh-TW">設定要加入過濾條件裡，符合的檔案<b><font color="#ff0000">不會</font></b>被比對</span></p>

<p lang="zh-TW"><br />
</p>
<p lang="zh-TW"><font face="Times New Roman, serif">f:</font>指定副檔名，因為點<font face="Times New Roman, serif">(.)</font>是<font face="Times New Roman, serif">Regular expression</font>的
特殊符號，副檔名的點要用<font face="Times New Roman, serif"><b><font color="#ff0000">\.</font></b></font>來表示；結尾注
意要有<font face="Times New Roman, serif">Dollar-sign(<b><font color="#ff0000">$</font></b>)</font></p>


<p lang="zh-TW"><font face="Times New Roman, serif">d:</font>指定不要比對的目錄，必須以<font face="Times New Roman, serif"><b><font color="#ff0000">\\</font></b></font>開頭，<font face="Times New Roman, serif"><b><font color="#ff0000">$</font></b></font>結尾</p>


<p lang="zh-TW"><font face="Times New Roman, serif">\\\.svn</font>前兩個反斜線表示目錄，
第三個反斜線和<font face="Times New Roman, serif">.</font>構成<font face="Times New Roman, serif"><br />
<b><font size="4"><font color="#ff0000">.</font></font></b></font>符
號</p>
</td>
</tr>
</tbody>
</table>

</li></ol>
##<br />

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/2127388.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/2127388.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/2127388.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sun, 10 Sep 2006 12:44:10 +0800</pubDate>
</item>
<item>
	<title>試用TortoiseSVN 1.4 RC1</title>
	<description><![CDATA[
			TortoiseSVN 1.4.0 RC1早於2006/08/05就釋出了，直到今天才安裝起來使用。這個版本主要是配合即將更版的Subversion 1.4，由其Release Notes來看，強化了許多功能；Subversion 1.4 RC5的Release Notes可由此檢視。要
特別注意的：新版的TortoiseSVN會在你存取工作複本的同時，自動的變更.svn裡的檔案格式，變更後的格式無法使用以前的版本來讀取，
Subversion client的svn.exe也必須同步更新到1.4才能操作。但因Subversion
client尚未釋出Binary檔，因此在格式變更後會無法以svn.exe來下命令。但，如果所有的操作都是透過TortoiseSVN的話，就可忽
略這個狀況了。What's New in TortoiseSVN 1.4TortoiseSVN 1.4 is a superset of all previous TortoiseSVN releases.
Anything in 1.0.x, 1.1.x, 1.2.x or 1.3.x is also in 1.4, but 1.4 contains
features and bugfixes not present in any earlier release. It is
linked with Subversion 1.4.

Action dialogs (commit/check for modification/add...)
       
       &quot;Compare with BASE&quot; is now possible for added and deleted files too.
       The diff viewer will show the diff against an empty file in that case.
       
       The columns shown are configurable. You can choose which columns are
       shown and what sizes they have. The configuration is saved between
       sessions. See issue #80 
       for details.
       
       The 'OK' button is disabled until at least one file/folder is selected
       to avoid empty operations.
       
       Files and folders shown can be dragged to other applications. Also files and
       folder can be dragged from the explorer on to those dialogs.
       See issue #213 
       and issue #212 
       for details.
       
       The dialogs can be interrupted while the status is fetched by clicking on 'Cancel'.
       
       Switched files/folders are indicated with an '(s)' after the status text.
       See issue #229 
       for details.
       
       Subversion properties can be edited/set/deleted directly from these dialogs with
       a right-click. See issue #231 
       for details.
       
       
   Log dialog
       
       New column showing the bugtraq ID string assigned to the revision.
       
       You can now specify a range for which the log messages should be fetched
       to avoid having to either click on 'Next 100' repeatedly or fetch all
       messages at once.
       
       The log messages can contain simple formatting. You can write text in *bold*, ^italic^
       or _underlined_. Of course, the formatting is also done in the commit dialog while you are
       writing the log message.Explorer
       
       The context menu shows different icons depending on what entry the menu is
       for. If you right-click on a shortcut, two entries are shown, one with a link icon
       and one with a folder or file icon (depending on what the shortcut points to).
       If you right-click on a file, again two entries are shown. One with a file icon for
       the file itself, and one with a folder icon for the parent folder.
       
       New &quot;Move and rename&quot; entry in the context menu.
       
       New column for showing the svn:eol-style property.
       
       
    Revision graph
        
        The Revision graph got some major improvements. It has been rewritten
        almost completely to address some issues users reported in the past.
        
        Analyzing the data is much faster.
        
        Ability to show all revisions, not just the ones where there was a copy
        operation.
        
        Ability to have the graph sort the nodes by path.
        
        Better zooming support.
        
        
    Repository browser
        
        When dragging items, folders are opened and closed automatically
        if hoovering over them for more than two seconds.
        
        Dragging items beyond the visible area makes the browser scroll the
        view automatically.
        
        Checkout of multiple urls at once. See issue #247
        for details.
        
        
    Status cache
        
        An option to disable the cache process completely and either fetch the status
        only for the currently visible folder or not show any overlays at all.
        
        
    TortoiseMerge
        
        Changes inside lines are colored differently to better see what exactly has
        changed. See issue #254 for details.
        
        Changed blocks which have only changed in whitespace are marked with a white
        circle. Such changes usually happen due to code cleanups and have no functional
        changes. Now those blocks are clearly marked so you can easily go over them.
        
        Files in UTF-8 format are recognized automatically.
        
        Files in UTF-16 format can be diffed.
        
        
    TortoiseIDiff
        
        This is a new tool which shows two images side-by-side. If you have images in
        your working copy (e.g. screenshots or partial screenshots for the helpfile/documentation)
        then you can now easily compare the new version of the image with the old one.
        This tool is for images what TortoiseMerge is for text files.
        
        
    Comparing two branches/tags
        
        Due to a new function available in the Subversion 1.4 library, comparing
        two branches/tags is now much faster and reliable. Also it's now immediately clear
        if the file or property contents were changed.
        
    
       Many many more small improvements and bug fixes.
       See the Change Log for full details.
   ##

		]]>
	</description>
	<content:encoded><![CDATA[
			<a target="_blank" href="http://sourceforge.net/project/showfiles.php?group_id=138498&package_id=151948">TortoiseSVN 1.4.0 RC1</a>早於2006/08/05就釋出了，直到今天才安裝起來使用。這個版本主要是配合即將更版的Subversion 1.4，由其Release Notes來看，強化了許多功能；Subversion 1.4 RC5的Release Notes可<a target="_blank" href="http://subversion.tigris.org/svn_1.4_releasenotes.html">由此檢視</a>。<br /><br />要
特別注意的：新版的TortoiseSVN會在你存取工作複本的同時，自動的變更.svn裡的檔案格式，變更後的格式無法使用以前的版本來讀取，
Subversion client的svn.exe也必須同步更新到1.4才能操作。但因Subversion
client尚未釋出Binary檔，因此在格式變更後會無法以svn.exe來下命令。但，如果所有的操作都是透過TortoiseSVN的話，就可忽
略這個狀況了。<br /><br /><table cellspacing="1" cellpadding="2" border="0" style="text-align: left; background-color: rgb(0, 153, 0); width: 100%;"><tbody><tr align="center" style="color: rgb(255, 255, 102);"><td><h2>What's New in TortoiseSVN 1.4</h2></td></tr><tr><td style="background-color: rgb(255, 255, 204);"><p>TortoiseSVN 1.4 is a superset of all previous TortoiseSVN releases.
Anything in 1.0.x, 1.1.x, 1.2.x or 1.3.x is also in 1.4, but 1.4 contains
features and bugfixes not present in any earlier release. It is
linked with Subversion 1.4.</p>

<ul><li><p>Action dialogs (commit/check for modification/add...)</p>
       <ul><li>
       &quot;Compare with BASE&quot; is now possible for added and deleted files too.
       The diff viewer will show the diff against an empty file in that case.
       </li><li>
       The columns shown are configurable. You can choose which columns are
       shown and what sizes they have. The configuration is saved between
       sessions. See <a href="http://tortoisesvn.net/issues/?do=details&id=80">issue #80</a> 
       for details.
       </li><li>
       The 'OK' button is disabled until at least one file/folder is selected
       to avoid empty operations.
       </li><li>
       Files and folders shown can be dragged to other applications. Also files and
       folder can be dragged from the explorer on to those dialogs.
       See <a href="http://tortoisesvn.net/issues/?do=details&id=213">issue #213</a> 
       and <a href="http://tortoisesvn.net/issues/?do=details&id=212">issue #212</a> 
       for details.
       </li><li>
       The dialogs can be interrupted while the status is fetched by clicking on 'Cancel'.
       </li><li>
       Switched files/folders are indicated with an '(s)' after the status text.
       See <a href="http://tortoisesvn.net/issues/?do=details&id=229">issue #229</a> 
       for details.
       </li><li>
       Subversion properties can be edited/set/deleted directly from these dialogs with
       a right-click. See <a href="http://tortoisesvn.net/issues/?do=details&id=231">issue #231</a> 
       for details.
       </li></ul>
       
   </li><li><p>Log dialog</p>
       <ul><li>
       New column showing the bugtraq ID string assigned to the revision.
       </li><li>
       You can now specify a range for which the log messages should be fetched
       to avoid having to either click on 'Next 100' repeatedly or fetch all
       messages at once.
       </li><li>
       The log messages can contain simple formatting. You can write text in <b>*bold*</b>, <i>^italic^</i>
       or <u>_underlined_</u>. Of course, the formatting is also done in the commit dialog while you are
       writing the log message.</li></ul></li><li><p>Explorer</p>
       <ul><li>
       The context menu shows different icons depending on what entry the menu is
       for. If you right-click on a shortcut, two entries are shown, one with a link icon
       and one with a folder or file icon (depending on what the shortcut points to).
       If you right-click on a file, again two entries are shown. One with a file icon for
       the file itself, and one with a folder icon for the parent folder.
       </li><li>
       New &quot;Move and rename&quot; entry in the context menu.
       </li><li>
       New column for showing the svn:eol-style property.
       </li></ul>
       
    </li><li><p>Revision graph</p>
        <p>
        The Revision graph got some major improvements. It has been rewritten
        almost completely to address some issues users reported in the past.
        </p><ul><li>
        Analyzing the data is much faster.
        </li><li>
        Ability to show all revisions, not just the ones where there was a copy
        operation.
        </li><li>
        Ability to have the graph sort the nodes by path.
        </li><li>
        Better zooming support.
        </li></ul>
        
    </li><li><p>Repository browser</p>
        <ul><li>
        When dragging items, folders are opened and closed automatically
        if hoovering over them for more than two seconds.
        </li><li>
        Dragging items beyond the visible area makes the browser scroll the
        view automatically.
        </li><li>
        Checkout of multiple urls at once. See <a href="http://tortoisesvn.net/issues/?do=details&id=247">issue #247</a>
        for details.
        </li></ul>
        
    </li><li><p>Status cache</p>
        <ul><li>
        An option to disable the cache process completely and either fetch the status
        only for the currently visible folder or not show any overlays at all.
        </li></ul>
        
    </li><li><p>TortoiseMerge</p>
        <ul><li>
        Changes inside lines are colored differently to better see what exactly has
        changed. See <a href="http://tortoisesvn.net/issues/?do=details&id=254">issue #254</a> for details.
        </li><li>
        Changed blocks which have only changed in whitespace are marked with a white
        circle. Such changes usually happen due to code cleanups and have no functional
        changes. Now those blocks are clearly marked so you can easily go over them.
        </li><li>
        Files in UTF-8 format are recognized automatically.
        </li><li>
        Files in UTF-16 format can be diffed.
        </li></ul>
        
    </li><li><p>TortoiseIDiff</p>
        <ul><li>
        This is a new tool which shows two images side-by-side. If you have images in
        your working copy (e.g. screenshots or partial screenshots for the helpfile/documentation)
        then you can now easily compare the new version of the image with the old one.
        This tool is for images what TortoiseMerge is for text files.
        </li></ul>
        
    </li><li><p>Comparing two branches/tags</p>
        <p>
        Due to a new function available in the Subversion 1.4 library, comparing
        two branches/tags is now much faster and reliable. Also it's now immediately clear
        if the file or property contents were changed.
        </p>
    </li><li>
       Many many more small improvements and bug fixes.
       See the <a href="http://tortoisesvn.tigris.org/ChangeLog.txt">Change Log</a> for full details.
   </li></ul></td></tr></tbody></table><br />##<br />

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/2113102.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/2113102.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/2113102.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 06 Sep 2006 21:32:20 +0800</pubDate>
</item>
<item>
	<title>取出Subversion檔案庫裡被刪除的檔案的步驟</title>
	<description><![CDATA[
			
在Subversion的檔案庫裡找回被刪除的檔案或目錄的步驟；就像時光回溯器或小叮噹的時光機器，我們隨時能回到某個特定點，取回任何需要的資料：點選「檔案庫瀏覽器」選到要操作的目錄處點選「顯示記錄」，找到刪除的記錄後，將游標停在該記錄將游標移到刪除檔案的前一個版本，即版本61上按右鍵選「瀏覽檔案庫」檔案庫瀏覽器會開啟成一個新的視窗，右上角的版本會顯示在步驟4選取的版本，表示目前瀏覽器使用的是該版本的內容，亦即是版本62，而非最新版本(HEAD)；再用匯出或取出，並將版本改成61(刪除操作的版本減1)，即可把要找到檔案給複製出來了。##


		]]>
	</description>
	<content:encoded><![CDATA[
			
在<font face="Verdana"><span lang="en-US">Subversion的檔案庫裡</span></font>找回被刪除的檔案或目錄的步驟；就像時光回溯器或小叮噹的時光機器，我們隨時能回到某個特定點，取回任何需要的資料：<br /><br /><ol><li>點選「檔案庫瀏覽器」</li><li>選到要操作的目錄處</li><li>點選「顯示記錄」，找到刪除的記錄後，將游標停在該記錄<br /><img alt="看不到圖請連http://blog.xuite.net/emisjerry/tech" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/7865877/0.jpg" /></li><li>將游標移到刪除檔案的前一個版本，即版本61上按右鍵選「瀏覽檔案庫」<br /><img alt="看不到圖請連http://blog.xuite.net/emisjerry/tech" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/7865877/7.jpg" /></li><li>檔案庫瀏覽器會開啟成一個新的視窗，右上角的版本會顯示在步驟<font face="Verdana"><span lang="en-US">4</span></font>選取的版本，表示目前瀏覽器使用的是該版本的內容，亦即是版本62<font face="Verdana"><span lang="en-US"></span></font>，而非最新版本<font face="Verdana"><span lang="en-US">(HEAD)</span></font>；再用匯出或取出，並將版本改成<font face="Verdana"><span lang="en-US">61(</span></font><b><font color="#ff0000">刪除操作的版本減</font></b><font face="Verdana"><span lang="en-US"><b><font color="#ff0000">1)</font></b></span></font>，即可把要找到檔案給複製出來了。<br /><img alt="看不到圖請連http://blog.xuite.net/emisjerry/tech" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/7865877/8.jpg" /></li></ol>##


		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/2069206.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/2069206.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/2069206.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sun, 27 Aug 2006 00:48:05 +0800</pubDate>
</item>
<item>
	<title>SVN2CL: 自動產生變動紀錄的腳本</title>
	<description><![CDATA[
			
處於高度緊張期的開發階段專案無時無刻都有許多新增、修改、刪除等變動，若每次都要用TortoiseSVN檢視記錄，委實需要浪費許多時間，因此找了能產生變動紀錄(ChangeLog)的程式來將這部份自動化。我試了下列兩個都是Open source的腳本程式：svn2log：使用Python撰寫，雖然其首頁上聲稱Windows也可以執行，但安裝了最新版的Python 2.4.3，仍然出現找不到xml.utils的錯誤，弄了許久仍無法解決，寫信給作者也未接獲回覆，最後只好放棄了svn2cl：原先以為只適用於Linux環境，後來發現已經有人將之移植到Windows環境了：svn2cl-win，Shell script被改寫成了VBScript(svn2cl.vbs)。最終便是採用了這個小工具來產生Change log。以下是幾個簡單的操作紀要：要執行的電腦裡必須安裝SVN Client，並且修改PATH使之能讀到svn.exe執行svn2cl.vbs的指令是cscript.exe或wscript.exe，預設的PATH裡都能直接執行得到顯示選項：cscript svn2cl.vbs  --help執行語法：cscript svn2cl.vbs SVN檔案庫的URL  選項範例：cscript svn2cl.vbs http://mySVNserver.com/svn/trunk/myProject  --group-by-day  -i  --html加入--html選項便能產生成HTML格式，預設使用的編碼是UTF-8，因此必須先修改做為網頁樣本的svn2html.xsl，將utf-8換成Big5-i指定把Subversion的版本號碼也產生出來產生出的ChangeLog.html若要拷貝到別的網站供連結，svn2html.css樣式檔必須一起拷貝，網頁樣式才會正確產生的範例，首先是文字格式( cscript svn2cl.vbs http://localhost:8080/svn -i --group-by-day )：ChangeLog.txt2006-08-06  jerry    * [r52] demo/新增文字文件.txt: 商品資料維護。    * [r51] demo/demo1.txt: 222    * [r50] demo/demo1.txt: test    * [r49] demo/新增文字文件.txt: test2006-07-24  jerry    * [r48] demo/1E.xml: commit.    * [r47] demo/1E.xml: commit.    * [r46] demo/1E.xml: 商品資料維護。接著是網頁格式( cscript svn2cl.vbs http://localhost:8080/svn -i --group-by-day --html )：##

		]]>
	</description>
	<content:encoded><![CDATA[
			
處於高度緊張期的開發階段專案無時無刻都有許多新增、修改、刪除等變動，若每次都要用<a href="http://tortoisesvn.tigris.org" target="_blank">TortoiseSVN</a>檢視記錄，委實需要浪費許多時間，因此找了能產生變動紀錄(<span style="font-weight: bold;">ChangeLog)</span>的程式來將這部份自動化。我試了下列兩個都是Open source的腳本程式：<br /><ol><li><a href="http://www.core.com.pl/svn2log/" target="_blank">svn2log</a>：使用Python撰寫，雖然其首頁上聲稱Windows也可以執行，但安裝了最新版的<a href="http://www.python.org" target="_blank">Python 2.4.3</a>，仍然出現找不到<span style="font-style: italic;">xml.utils</span>的錯誤，弄了許久仍無法解決，寫信給作者也未接獲回覆，最後只好放棄了</li><li><a href="http://ch.tudelft.nl/%7Earthur/svn2cl/downloads.html" target="_blank">svn2cl</a>：原先以為只適用於Linux環境，後來發現已經有人將之移植到Windows環境了：<a href="http://www.cosmo-system.jp/iwasa/svn2clwin.html" target="_blank">svn2cl-win</a>，Shell script被改寫成了VBScript(svn2cl.vbs)。最終便是採用了這個小工具來產生Change log。</li></ol>以下是幾個簡單的操作紀要：<br /><ol><li>要執行的電腦裡必須安裝SVN Client，並且修改PATH使之能讀到svn.exe</li><li>執行svn2cl.vbs的指令是cscript.exe或wscript.exe，預設的PATH裡都能直接執行得到</li><li>顯示選項：cscript svn2cl.vbs  --help</li><li>執行語法：cscript svn2cl.vbs SVN檔案庫的URL  選項</li><li>範例：cscript svn2cl.vbs http://mySVNserver.com/svn/trunk/myProject  --group-by-day  -i  --html</li><li>加入--html選項便能產生成HTML格式，預設使用的編碼是UTF-8，因此必須先修改做為網頁樣本的svn2html.xsl，將utf-8換成Big5</li><li>-i指定把Subversion的版本號碼也產生出來</li><li>產生出的ChangeLog.html若要拷貝到別的網站供連結，svn2html.css樣式檔必須一起拷貝，網頁樣式才會正確</li></ol>產生的範例，首先是文字格式( cscript svn2cl.vbs http://localhost:8080/svn -i --group-by-day )：<br /><table cellspacing="2" cellpadding="2" border="1" style="text-align: left; background-color: rgb(51, 204, 0); width: 70%;"><tbody><tr align="center"><td><span style="color: rgb(255, 255, 102); font-weight: bold;">ChangeLog.txt</span></td></tr><tr><td style="background-color: rgb(255, 255, 204);">2006-08-06  jerry<br /><br />    * [r52] demo/新增文字文件.txt: 商品資料維護。<br />    * [r51] demo/demo1.txt: 222<br />    * [r50] demo/demo1.txt: test<br />    * [r49] demo/新增文字文件.txt: test<br /><br />2006-07-24  jerry<br /><br />    * [r48] demo/1E.xml: commit.<br />    * [r47] demo/1E.xml: commit.<br />    * [r46] demo/1E.xml: 商品資料維護。</td></tr></tbody></table><br />接著是網頁格式( cscript svn2cl.vbs http://localhost:8080/svn -i --group-by-day --html )：<br /><img alt="看不到圖請連http://blog.xuite.net/emisjerry/tech" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/7821147/0.jpg" /><br /><br />##<br />

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/2056611.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/2056611.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/2056611.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 23 Aug 2006 22:42:22 +0800</pubDate>
</item>
<item>
	<title>[Subversion] 可重覆使用的性質設定批次命令</title>
	<description><![CDATA[
			
在初試TortoiseSVN的收穫這篇裡提及，可以在Subversion的工作複本資料夾裡，設定與Bug Tracking System整合的性質(Property)，
如bugtraq:url、bugtraq:message、bugtraq:number、bugtraq:append等，一般是在工作複本最上層，
以檔案總管→內容→Subversion頁籤裡來設定，並勾選「遞迴」使上層的性質同步存到子目錄裡。但如果每個不同的專案都要依樣重複這個設定一次，那
可就有點累人了，因此今天試著寫一支批次檔，以方便能重覆執行。首先遇到了用來填入Bug號碼的識別字
%BUGID%，其中的百分號是Windows
shell的環境變數擴展字元，例如%WINDIR%擴展後的是C:\\Windows，或C:\\WINNT，為了不讓%BUGID%擴展，因此必須找
到其Escape字元，以抑制其擴展的動作。查了半天，Shell的Escape字元是^符號，在DOS裡執行OK(^%BUGID^%→%BUGID
%)，但放在批次檔裡卻又整個變成一個 ^ 符號。最後終於確認在批次檔裡用兩個百分號就可以解決了。接著，由於bugtraq:message裡使用到中文，被轉換成 \?數字 的格式，即使設定了iconv的變數也無法正常，最後只好放棄而改用英文。以下是我的範例：set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconvsvn propset bugtraq:url &quot;http://your.track.com/printItem.do?key=%%BUGID%%&quot; . -Rsvn propset bugtraq:append &quot;true&quot; . -Rsvn propset bugtraq:number &quot;true&quot; . -Rsvn propset bugtraq:message &quot;Issue Number: [%%BUGID%%]&quot; . -Rsvn propset bugtraq:warnifnoissue &quot;true&quot; . -Rbugtraq:append=true表示Bug號碼插入於紀錄訊息的最末端bugtraq:number=true表示Bug號碼是數值型態bugtraq:message 是Bug號碼的表示字串bugtraq:warnifnoissue=true表示Commit時若未輸入Bug號碼則顯示警告視窗，但確定後仍可Commit##

		]]>
	</description>
	<content:encoded><![CDATA[
			
在<a target="_blank" href="http://blog.xuite.net/emisjerry/tech/3968949"><span class="titlename">初試TortoiseSVN的收穫</span></a>這篇裡提及，可以在Subversion的工作複本資料夾裡，設定與Bug Tracking System整合的性質(<span style="font-weight: bold;">Property</span>)，
如bugtraq:url、bugtraq:message、bugtraq:number、bugtraq:append等，一般是在工作複本最上層，
以檔案總管→內容→Subversion頁籤裡來設定，並勾選「遞迴」使上層的性質同步存到子目錄裡。但如果每個不同的專案都要依樣重複這個設定一次，那
可就有點累人了，因此今天試著寫一支批次檔，以方便能重覆執行。<br /><br />首先遇到了用來填入Bug號碼的識別字
%BUGID%，其中的百分號是Windows
shell的環境變數擴展字元，例如%WINDIR%擴展後的是C:\\Windows，或C:\\WINNT，為了不讓%BUGID%擴展，因此必須找
到其Escape字元，以抑制其擴展的動作。查了半天，Shell的Escape字元是^符號，在DOS裡執行OK(^%BUGID^%→%BUGID
%)，但放在批次檔裡卻又整個變成一個 ^ 符號。最後終於確認在批次檔裡用<span style="font-weight: bold;">兩個百分號</span>就可以解決了。<br /><br />接著，由於bugtraq:message裡使用到中文，被轉換成<span style="font-style: italic;"> \?數字</span> 的格式，即使設定了iconv的變數也無法正常，最後只好放棄而改用英文。<br />以下是我的範例：<br /><br /><table cellspacing="1" cellpadding="2" border="0" style="text-align: left; background-color: rgb(51, 51, 255); width: 100%;"><tbody><tr><td style="background-color: rgb(255, 255, 204);">set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv<br />svn propset bugtraq:url &quot;http://your.track.com/printItem.do?key=%%BUGID%%&quot; . -R<br />svn propset bugtraq:append &quot;true&quot; . -R<br />svn propset bugtraq:number &quot;true&quot; . -R<br />svn propset bugtraq:message &quot;Issue Number: [%%BUGID%%]&quot; . -R<br />svn propset bugtraq:warnifnoissue &quot;true&quot; . -R</td></tr></tbody></table><br /><ul><li>bugtraq:append=true表示Bug號碼插入於紀錄訊息的最末端</li><li>bugtraq:number=true表示Bug號碼是數值型態</li><li>bugtraq:message 是Bug號碼的表示字串</li><li>bugtraq:warnifnoissue=true表示Commit時若未輸入Bug號碼則顯示警告視窗，但確定後仍可Commit</li></ul>##

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/1884253.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/1884253.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/1884253.html</guid>
	<category>專案管理工具</category>
	<pubDate>Thu, 13 Jul 2006 23:25:28 +0800</pubDate>
</item>
<item>
	<title>[Subversion] 修改舊版次的訊息與作者名稱</title>
	<description><![CDATA[
			
Subversion能夠修改已存儲存過的紀錄訊息或作者名稱，因此漏打了一些資訊的或需要更正的，就有修改的機會。但修改並儲存時卻出現下列訊息：DAV要求失敗；可能是檔案庫的 pre-revprop-change 掛勾執行失敗，或是不存在至少有一個性質變更失敗；檔案庫未更動研讀了文件後才知道要修改訊息或作者必須手動設定 ＜Subversion安裝資料夾＞\hooks\pre-revprop-change.＜系統執行檔名＞所
謂的＜系統執行檔名＞指的是Subversion
Server的作業系統所能執行的檔案類型，例如在UNIX或Linux裡一般是.sh，Windows裡一般是.bat、.vbs或.exe等，只要複
製hooks資料夾裡的pre-revprop-change.tmpl成.sh或.bat即可。tmpl就是Template樣版的意思，而revprop-change指的是版次(rev, revision)的性質(prop, Property)的修改，檔名開頭的pre則是在修改動作要儲存至檔案庫「之前」要執行的程式，若程式傳回 0 表示沒有問題可以儲存，但若傳回  非0的數值 則表示發生狀況，因此要取消後續的儲存處理。由pre-revprop-change.tmpl可以看出Subversion系統會傳出５個參數：檔案庫名稱 (Repository)要修改的版次 (Revision)作者名稱 (User)性質名稱 (Property Name)操作的動作 (Action)透過這幾個參數，就能方便的控制是否允許對訊息和作者這兩個重要的性質做變更了。以下是我將pre-revprop-change.tmpl的Bourne-shell改寫成Windows的.bat範例：rem    [1] REPOS-PATH   (the path to this repository)rem    [2] REVISION     (the revision being tweaked)rem    [3] USER         (the username of the person tweaking the property)rem    [4] PROPNAME     (the property being set on the revision)rem    [5] ACTION       (the property is being 'A'dded, 'M'odified, or 'D'eleted)set REPOS=%1set REV=%2set USER=%3set PROPNAME=%4set ACTION=%5echo &quot;%PROPNAME%/%ACTION%&quot; &gt; &quot;chg%REV%.txt&quot;if &quot;%ACTION%&quot;==&quot;M&quot; goto MODIFYgoto CANNOT_DOIT:MODIFYif &quot;%PROPNAME%&quot;==&quot;svn:log&quot; goto DOITgoto CANNOT_DOIT:DOIT  exit 0  goto END:CANNOT_DOIT  echo &quot;Changing revision properties other than svn:log is prohibited&quot; &gt;&amp;2  exit 1:END##

		]]>
	</description>
	<content:encoded><![CDATA[
			
<a target="_blank" href="http://subversion.tigris.org">Subversion</a>能夠修改已存儲存過的紀錄訊息或作者名稱，因此漏打了一些資訊的或需要更正的，就有修改的機會。但修改並儲存時卻出現下列訊息：<br /><br /><span style="font-weight: bold;">DAV要求失敗；可能是檔案庫的 pre-revprop-change 掛勾執行失敗，或是不存在</span><br style="font-weight: bold;" /><span style="font-weight: bold;">至少有一個性質變更失敗；檔案庫未更動</span><br /><br />研讀了文件後才知道要修改訊息或作者必須手動設定 <span style="font-weight: bold;">＜Subversion安裝資料夾＞\hooks\pre-revprop-change.＜系統執行檔名＞</span><br />所
謂的＜系統執行檔名＞指的是Subversion
Server的作業系統所能執行的檔案類型，例如在UNIX或Linux裡一般是.sh，Windows裡一般是.bat、.vbs或.exe等，只要複
製hooks資料夾裡的pre-revprop-change.tmpl成.sh或.bat即可。<br /><br />tmpl就是Template樣版的意思，而revprop-change指的是<span style="font-weight: bold;">版次</span>(rev, revision)的<span style="font-weight: bold;">性質(</span>prop, Property)的<span style="font-weight: bold;">修改</span>，檔名開頭的pre則是在修改動作要儲存至檔案庫<span style="font-weight: bold;">「之前」</span>要執行的程式，若程式傳回 <span style="font-weight: bold;">0</span> 表示沒有問題可以儲存，但若傳回  <span style="font-weight: bold;">非0的數值</span> 則表示發生狀況，因此要取消後續的儲存處理。<br /><br />由pre-revprop-change.tmpl可以看出Subversion系統會傳出５個參數：<br /><ol><li>檔案庫名稱 (Repository)</li><li>要修改的版次 (Revision)</li><li>作者名稱 (User)</li><li>性質名稱 (Property Name)</li><li>操作的動作 (Action)<br /></li></ol>透過這幾個參數，就能方便的控制是否允許對訊息和作者這兩個重要的性質做變更了。以下是我將pre-revprop-change.tmpl的Bourne-shell改寫成Windows的.bat範例：<br /><table cellspacing="1" cellpadding="2" border="0" style="text-align: left; background-color: rgb(51, 51, 255); width: 100%;"><tbody><tr><td style="background-color: rgb(255, 255, 204);">rem    [1] REPOS-PATH   (the path to this repository)<br />rem    [2] REVISION     (the revision being tweaked)<br />rem    [3] USER         (the username of the person tweaking the property)<br />rem    [4] PROPNAME     (the property being set on the revision)<br />rem    [5] ACTION       (the property is being 'A'dded, 'M'odified, or 'D'eleted)<br /><br />set REPOS=%1<br />set REV=%2<br />set USER=%3<br />set PROPNAME=%4<br />set ACTION=%5<br /><br />echo &quot;%PROPNAME%/%ACTION%&quot; &gt; &quot;chg%REV%.txt&quot;<br />if &quot;%ACTION%&quot;==&quot;M&quot; goto MODIFY<br />goto CANNOT_DOIT<br />:MODIFY<br />if &quot;%PROPNAME%&quot;==&quot;svn:log&quot; goto DOIT<br />goto CANNOT_DOIT<br />:DOIT<br />  exit 0<br />  goto END<br />:CANNOT_DOIT<br />  echo &quot;Changing revision properties other than svn:log is prohibited&quot; &gt;&amp;2<br />  exit 1<br />:END<br /></td></tr></tbody></table><br />##

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/1864948.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/1864948.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/1864948.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sun, 09 Jul 2006 00:01:47 +0800</pubDate>
</item>
<item>
	<title>SVN Web Client: 不只是View，還能更新!</title>
	<description><![CDATA[
			
由對岸的Subversion中文站論壇看了一個Web介面的Subversion client：SVN Web Client 2.5.0，初步試了一會，功能還頗齊全的。安裝步驟如下：把下載的壓縮檔裡的svnwebclient.war拷貝到AP Server的webapps目錄內（如C:＼Resin＼webapps）啟動AP Server，待WAR檔都解開後停止AP Server修改Webapps＼svnwebclient＼WEB-INF＼web.xml，設定各項參數修改並儲存web.xml後，再新啟動AP Server有了這個工具，就能到處存取到Subversion的內容了，但當然要特別注意安全性的問題囉。## 

		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->由對岸的<a target="_blank" href="http://www.subversion.org.cn/bbs/index.php">Subversion中文站論壇</a>看了一個Web介面的Subversion client：<a target="_blank" href="http://www.polarion.org/index.php?page=download&project=svnwebclient">SVN Web Client 2.5.0</a>，初步試了一會，功能還頗齊全的。安裝步驟如下：<br /><ol><li>把下載的壓縮檔裡的svnwebclient.war拷貝到AP Server的webapps目錄內（如C:＼Resin＼webapps）</li><li>啟動AP Server，待WAR檔都解開後停止AP Server</li><li>修改Webapps＼svnwebclient＼WEB-INF＼web.xml，設定各項參數</li><li>修改並儲存web.xml後，再新啟動AP Server</li></ol>有了這個工具，就能到處存取到Subversion的內容了，但當然要特別注意安全性的問題囉。<br /><br /><img src="http://www.polarion.org/projects/svnwebclient/images/sc1b.gif" alt="SVNWebClient-browsing" style="width: 985px; height: 533px;" /><br /><br /><img src="http://www.polarion.org/projects/svnwebclient/images/sc4b.gif" alt="SVNWebClient-diff" style="width: 985px; height: 533px;" /><br />## 

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/1837249.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/1837249.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/1837249.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sat, 01 Jul 2006 18:43:23 +0800</pubDate>
</item>
<item>
	<title>兩個Subversion的前端工具：QSvn、Subcommander</title>
	<description><![CDATA[
			
雖然TortoiseSVN非
常方便好用，但因為用慣了WinCVS，
雖然看到類似操作模式的Subversion Client時，還是會下載來試看看。最近在試用的是兩套多平台的工具：QSvn
0.4.0與Subcommander 1.0。

操作直覺、簡單是優點，但都處於開發的初期，雖算尚屬堪用，但穩定度稍差。

QSvn 0.4.0
(按
圖放大)


Subcommander 1.0


##



		]]>
	</description>
	<content:encoded><![CDATA[
			
雖然<a href="http://tortoisesvn.tigris.org" target="_blank">TortoiseSVN</a>非
常方便好用，但因為用慣了<a href="http://www.wincvs.org" target="_blank">WinCVS</a>，
雖然看到類似操作模式的Subversion Client時，還是會下載來試看看。最近在試用的是兩套多平台的工具：<a href="http://freshmeat.net/projects/qsvn-qtbasedsubversiongui/?branch_id=57494&release_id=228915" target="_blank">QSvn
0.4.0</a>與<a href="http://subcommander.tigris.org" target="_blank">Subcommander 1.0</a>。<br />
<br />
操作直覺、簡單是優點，但都處於開發的初期，雖算尚屬堪用，但穩定度稍差。<br />
<br />
QSvn 0.4.0<br />
<a href="http://download.freshmeat.net/screenshots/53551.png" target="_blank"><img style="width: 146px; height: 113px;" alt="QSvn" src="http://download.freshmeat.net/screenshots/53551_thumb.png" /></a>(按
圖放大)
<br />
<br />
Subcommander 1.0<br />
<img alt="Qsvn screenshot" src="http://b.blog.xuite.net/b/3/a/c/11893557/blog_10351/txt/6956952/0.jpg" /><br />
<br />
##<br />
<br />


		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/1807318.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/1807318.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/1807318.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 23 Jun 2006 23:15:03 +0800</pubDate>
</item>
<item>
	<title>Subversion與TortoiseSVN釋出新版1.3</title>
	<description><![CDATA[
			
最近幾天Subversion與TortoiseSVN陸續推出新版：Subversion 1.3: Path-based authorization for svnserve Improved logging and repository listing in mod_dav_svn Hugely improved python and ruby bindings A handful of new commandline switches Some client and server performance improvements Many improved APIs More than 30 new bugfixes TortoiseSVN 1.3.0-RC1: TortoiseSVN 1.3 is a superset of all previous TortoiseSVN releases. Anything in 1.0.x, 1.1.x, or 1.2.x is also in 1.3, but 1.3 contains features and bugfixes not present in any earlier release. It is linked with Subversion 1.3.The &quot;_svn&quot; hack is now officially supported: since some versions of ASP.NET don't allow directories beginning with dot (e.g., &quot;.svn&quot;, the standard Subversion working copy administrative directory), TortoiseSVN now treats the environment variable SVN_ASP_DOT_NET_HACK specially. If this variable is set (to any value), it will use &quot;_svn&quot; instead of &quot;.svn&quot;. Note that once the environment variable is set, working copies with standard &quot;.svn&quot; directories will stop working, and will need to be re-checked-out to get &quot;_svn&quot; instead.After you've set the environment variable, you must restart the shell for the changes to take effect.During http:// and https:// transfers, TortoiseSVN now shows information about the transferred data (transfer speed, bytes transferred).TortoiseSVN can now authenticate against apache based repositories with SSPI automatically. That means you don't have to enter username/passwords anymore but TortoiseSVN automatically authenticates with your windows login data.The shell context menu now has key accelerators for better use with the keyboard. The revision graph has been redesigned to make it easier to read, and to show complex branching more reliably. Colours used in TortoiseSVN are configurable in the settings dialog. TortoiseMerge supports sideways scrolling using the keyboard. Many many more small improvements and bug fixes. See the Change Log for full details. 找個空更新看看吧。##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->最近幾天<a href="http://subversion.tigris.org/">Subversion</a>與<a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>陸續推出新版：<br /><ul><li><a href="http://subversion.tigris.org/svn_1.3_releasenotes.html">Subversion 1.3:</a> <ul><li>Path-based authorization for svnserve </li><li>Improved logging and repository listing in mod_dav_svn </li><li>Hugely improved python and ruby bindings </li><li>A handful of new commandline switches </li><li>Some client and server performance improvements </li><li>Many improved APIs </li><li>More than 30 new bugfixes </li></ul></li><li><a href="http://tortoisesvn.tigris.org/download.html">TortoiseSVN 1.3.0-RC1:</a> <ul><li><p>TortoiseSVN 1.3 is a superset of all previous TortoiseSVN releases. Anything in 1.0.x, 1.1.x, or 1.2.x is also in 1.3, but 1.3 contains features and bugfixes not present in any earlier release. It is linked with Subversion 1.3.</p></li><li><p>The &quot;<b>_svn</b>&quot; hack is now officially supported: since some versions of ASP.NET don't allow directories beginning with dot (e.g., &quot;.svn&quot;, the standard Subversion working copy administrative directory), TortoiseSVN now treats the environment variable SVN_ASP_DOT_NET_HACK specially. If this variable is set (to any value), it will use &quot;_svn&quot; instead of &quot;.svn&quot;. Note that once the environment variable is set, working copies with standard &quot;.svn&quot; directories will stop working, and will need to be re-checked-out to get &quot;_svn&quot; instead.</p><p class="infomark">After you've set the environment variable, you must restart the shell for the changes to take effect.</p></li><li><p>During http:// and https:// transfers, TortoiseSVN now shows information about the transferred data (transfer speed, bytes transferred).</p></li><li><p>TortoiseSVN can now authenticate against apache based repositories with SSPI automatically. That means you don't have to enter username/passwords anymore but TortoiseSVN automatically authenticates with your windows login data.</p></li><li>The shell context menu now has key accelerators for better use with the keyboard. </li><li>The revision graph has been redesigned to make it easier to read, and to show complex branching more reliably. </li><li>Colours used in TortoiseSVN are configurable in the settings dialog. </li><li>TortoiseMerge supports sideways scrolling using the keyboard. </li><li>Many many more small improvements and bug fixes. See the <a href="file:///ChangeLog.txt">Change Log</a> for full details. </li></ul></li></ul>找個空更新看看吧。<br /><br />##<br />
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/961700.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/961700.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/961700.html</guid>
	<category>專案管理工具</category>
	<pubDate>Thu, 05 Jan 2006 22:22:18 +0800</pubDate>
</item>
<item>
	<title>由Subversion檔案庫匯出特定專案的內容</title>
	<description><![CDATA[
			
由於區域的關係，我們使用了兩個Subversion的檔案庫，最近決定要合併到台北來。閱讀了文件後得知可以用svnadmin指令把檔案庫裡的內容傾印出來，但發覺並沒有參數能只輸出需要的某個模組（模組是CVS的用語），最後由JiaYun的Blog查到了svndumpfilter可以達成輸出特定內容的功效：svnadmin dump /path/to/repos | svndumpfilter include project --drop-empty-revs --renumber-revs &gt; dumpfile原來在 Version Control with Subversion 的 svndumpfilter 那一節裡就有詳細說明了。##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->由於區域的關係，我們使用了兩個Subversion的檔案庫，最近決定要合併到台北來。<br /><br />閱讀了文件後得知可以用svnadmin指令把檔案庫裡的內容傾印出來，但發覺並沒有參數能只輸出需要的某個模組（模組是CVS的用語），最後由<a href="http://www.jiayun.org/plog/1_jiayun/archive/40_svndumpfilter.html">JiaYun的Blog</a>查到了svndumpfilter可以達成輸出特定內容的功效：<br /><br /><table cellspacing="2" cellpadding="2" border="1" style="width: 100%; height: 56px; background-color: rgb(255, 255, 153); text-align: left;"><tbody><tr><td>svnadmin dump /path/to/repos | svndumpfilter include project --drop-empty-revs --renumber-revs &gt; dumpfile</td></tr></tbody></table><br />原來在 <a href="http://svnbook.red-bean.com/">Version Control with Subversion</a> 的<a href="http://svnbook.red-bean.com/en/1.0/ch05s03.html"> svndumpfilter </a>那一節裡就有詳細說明了。<br /><br />##<br />
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/909547.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/909547.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/909547.html</guid>
	<category>專案管理工具</category>
	<pubDate>Sun, 25 Dec 2005 14:11:48 +0800</pubDate>
</item>
<item>
	<title>CVS轉Subversion</title>
	<description><![CDATA[
			
終於要開始將CVS轉換到Subversion了。原本想使用網站上建議的轉換工具，發現這些工具操作的CVS和Subversion必須在同一部主機上，而且必須有Python或Perl的執行環境；由於是兩部主機，且一部在台北一部在高雄，只能放棄這些工具。最後的決議是：盡量保留檔案的修改歷史，至於log message則無法轉換過來，真的需要時就回CVS查詢吧。為了方便操作，寫了下列批次檔來簡化這些雷同的簽出、拷貝、匯入等工作：cvs2svn.batif &quot;%1&quot;==&quot;&quot; goto ERRORset SVN=&quot;d:\svn-win32-1.2.3\bin\svn.exe&quot;set CVS=&quot;c:\program files\wincvs1.3\cvsnt\cvs.exe&quot;set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconvrem %CVS% -d :pserver:your_name@CVS_SERVER:/repository export -r V1-00-00 -d d:\svn\source_wc -- sourcerem 把CVS的某個版本寫出到某個local目錄%CVS% -d :pserver:your_name@CVS_SERVER:/repository export -r %1 -d d:\svn\source_%1 -- sourced:cd \svn\source_wcrem 把某版本檔案內容拷貝到source_wc, 再把source_wc commit至SVNxcopy d:\svn\source_%1  \svn\source_wc /s/yrem 原有但被異動的檔案預設在commit時會重傳，但新加的檔案必須指定add才會被加入%SVN% add com --force%SVN% commit com --message &quot;import from CVS %1&quot;goto END:ERRORecho Usage: cvs2ftp  tagName:END用這樣的格式把CVS上的某個tag存到本地端，再複製給Subversion的Working copy，再Commit回Subversion：cvs2svn  V1-00-00## 
		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->終於要開始將CVS轉換到Subversion了。原本想使用網站上建議的轉換工具，發現這些工具操作的CVS和Subversion必須在同一部主機上，而且必須有Python或Perl的執行環境；由於是兩部主機，且一部在台北一部在高雄，只能放棄這些工具。最後的決議是：盡量保留檔案的修改歷史，至於log message則無法轉換過來，真的需要時就回CVS查詢吧。<br /><br />為了方便操作，寫了下列批次檔來簡化這些雷同的簽出、拷貝、匯入等工作：<br /><br /><table cellspacing="2" cellpadding="2" border="1" style="width: 100%; height: 420px; background-color: rgb(255, 255, 153); text-align: left;"><tbody><tr align="center"><td>cvs2svn.bat</td></tr><tr><td>if &quot;%1&quot;==&quot;&quot; goto ERROR<br />set SVN=&quot;d:\svn-win32-1.2.3\bin\svn.exe&quot;<br />set CVS=&quot;c:\program files\wincvs1.3\cvsnt\cvs.exe&quot;<br />set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv<br />rem %CVS% -d :pserver:your_name@CVS_SERVER:/repository export -r V1-00-00 -d d:\svn\source_wc -- source<br />rem 把CVS的某個版本寫出到某個local目錄<br />%CVS% -d :pserver:your_name@CVS_SERVER:/repository export -r %1 -d d:\svn\source_%1 -- source<br />d:<br />cd \svn\source_wc<br />rem 把某版本檔案內容拷貝到source_wc, 再把source_wc commit至SVN<br />xcopy d:\svn\source_%1  \svn\source_wc /s/y<br />rem 原有但被異動的檔案預設在commit時會重傳，但新加的檔案必須指定add才會被加入<br />%SVN% add com --force<br />%SVN% commit com --message &quot;import from CVS %1&quot;<br />goto END<br />:ERROR<br />echo Usage: cvs2ftp  tagName<br />:END</td></tr></tbody></table><br />用這樣的格式把CVS上的某個tag存到本地端，再複製給Subversion的Working copy，再Commit回Subversion：<br /><br /><table cellspacing="2" cellpadding="2" border="1" style="width: 202px; height: 52px; background-color: rgb(255, 255, 153); text-align: left;"><tbody><tr><td>cvs2svn  V1-00-00</td></tr></tbody></table><br />## 
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/894544.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/894544.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/894544.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 21 Dec 2005 18:39:55 +0800</pubDate>
</item>
<item>
	<title>[Subversion] Hook scripts的使用方法</title>
	<description><![CDATA[
			
為了達成Subversion在Commit前後能自行控管，例如：Commit之前(Pre-commit)自行檢查權限，只有符合者能繼續CommitCommit之後(Post-commit)自動寄Mail給特定人員Commit之後將異動資訊寫入資料庫，以方便日後查詢Subversion提供了下列幾種可供自行處理的事件，供自行擴充的檔案稱為Hook scripts(必須是可執行檔，在Windows裡就是副檔名為.bat、.exe、.cmd等的檔案），其範例樣板皆存放於Subversion檔案庫的hooks資料夾裡：序事件功能說明範例樣板1Pre-commitCommit之前被執行 pre-commit.tmpl2Pre-lock檔案鎖定之前被執行pre-lock.tmpl3Pre-revprop-change檔案庫被新增、修改或刪除前被執行 pre-revprop-change.tmpl4Pre-unlock檔案解除鎖定之前被執行pre-unlock.tmpl5Post-commitCommit之後被執行post-commit.tmpl6Post-lock檔案鎖定之後被執行post-lock.tmpl7Post-revprop-change檔案庫被新增、修改或刪除後被執行post-revprop-change.tmpl8Post-unlock檔案解除鎖定之後被執行post-unlock.tmpl9start-commit異動開始前被執行start-commit.tmpl這裡的處理觀念都和CVS類似（可參加我先前寫的這篇：loginfo.rb：自動寄送修改記錄信件），但麻煩的是Subversion只傳出檔案庫路徑和發生異動的Revision序號，其他資料資訊如作者、異動時間、異動檔案、異動內容等，都不會直接傳出來給Hook scripts；看了一些文件和範例程式後，發現這些資訊必須透過\svn-win32-1.2.3\bin\svnlook.exe才能取得，我做了個簡單的測試，檔名是 檔案庫目錄/hooks/post-commit.bat：指令說明set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv設定語系Localeecho %1 %2 &gt;&gt; d:\repo\hooks\post.txt看Post-commit後傳了那些東西給hook scriptecho ---changed: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK changed &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把異動檔名寫入post.txtecho ---date: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK date &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把異動時間寫入post.txtecho ---log: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK log &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把commit時輸入的Log訊息寫入post.txtecho ---author: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK author &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把作者寫入post.txtecho ---youngest: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK youngest &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把最後的異動序號寫入post.txtecho ---diff: &gt;&gt; d:\repo\hooks\post.txtd:\svn-win32-1.2.3\bin\SVNLOOK diff &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt把差異內容寫入post.txt最後再寫一支程式去解析post.txt就可以了。嗯，post.txt的檔名還要再加上可分辨的序號才可以，以防止同時有許多人在Commit。##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<p><!--StartFragment -->為了達成Subversion在Commit前後能自行控管，例如：<br /></p><ul><li>Commit之前(Pre-commit)自行檢查權限，只有符合者能繼續Commit</li><li>Commit之後(Post-commit)自動寄Mail給特定人員</li><li>Commit之後將異動資訊寫入資料庫，以方便日後查詢</li></ul><p>Subversion提供了下列幾種可供自行處理的事件，供自行擴充的檔案稱為<span style="font-weight: bold;">Hook scripts</span>(必須是可執行檔，在Windows裡就是副檔名為.bat、.exe、.cmd等的檔案），其範例樣板皆存放於Subversion<big><span style="font-weight: bold;">檔案庫的hooks資料夾</span></big>裡：<br /><br /><table cellspacing="1" cellpadding="2" border="0" style="width: 100%; background-color: rgb(0, 204, 204); text-align: left;"><tbody><tr><td style="color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">序</td><td style="width: 159px; color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">事件</td><td style="width: 291px; color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">功能說明</td><td style="width: 167px; color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">範例樣板</td></tr><tr><td style="background-color: rgb(255, 255, 153); text-align: center;">1</td><td style="width: 159px; background-color: rgb(255, 255, 153);">Pre-commit</td><td style="width: 291px; background-color: rgb(255, 255, 153);">Commit之前被執行</td><td style="width: 167px; background-color: rgb(255, 255, 153);"> pre-commit.tmpl</td></tr><tr><td style="background-color: rgb(255, 255, 153); text-align: center;">2</td><td style="width: 159px; background-color: rgb(255, 255, 153);">Pre-lock</td><td style="width: 291px; background-color: rgb(255, 255, 153);">檔案鎖定之前被執行</td><td style="width: 167px; background-color: rgb(255, 255, 153);">pre-lock.tmpl</td></tr><tr><td style="background-color: rgb(255, 255, 153); text-align: center;">3</td><td style="width: 159px; background-color: rgb(255, 255, 153);">Pre-revprop-change</td><td style="width: 291px; background-color: rgb(255, 255, 153);">檔案庫被新增、修改或刪除前被執行</td><td style="width: 167px; background-color: rgb(255, 255, 153);"> pre-revprop-change.tmpl</td></tr><tr><td style="background-color: rgb(255, 255, 153); text-align: center;">4</td><td style="width: 159px; background-color: rgb(255, 255, 153);">Pre-unlock</td><td style="width: 291px; background-color: rgb(255, 255, 153);">檔案解除鎖定之前被執行</td><td style="width: 167px; background-color: rgb(255, 255, 153);">pre-unlock.tmpl</td></tr><tr><td style="background-color: rgb(153, 255, 153); text-align: center;">5</td><td style="width: 159px; background-color: rgb(153, 255, 153);">Post-commit</td><td style="width: 291px; background-color: rgb(153, 255, 153);">Commit之後被執行</td><td style="width: 167px; background-color: rgb(153, 255, 153);">post-commit.tmpl</td></tr><tr><td style="background-color: rgb(153, 255, 153); text-align: center;">6</td><td style="width: 159px; background-color: rgb(153, 255, 153);">Post-lock</td><td style="width: 291px; background-color: rgb(153, 255, 153);">檔案鎖定之後被執行</td><td style="width: 167px; background-color: rgb(153, 255, 153);">post-lock.tmpl</td></tr><tr><td style="background-color: rgb(153, 255, 153); text-align: center;">7</td><td style="width: 159px; background-color: rgb(153, 255, 153);">Post-revprop-change</td><td style="width: 291px; background-color: rgb(153, 255, 153);">檔案庫被新增、修改或刪除後被執行</td><td style="width: 167px; background-color: rgb(153, 255, 153);">post-revprop-change.tmpl</td></tr><tr><td style="background-color: rgb(153, 255, 153); text-align: center;">8</td><td style="width: 159px; background-color: rgb(153, 255, 153);">Post-unlock</td><td style="width: 291px; background-color: rgb(153, 255, 153);">檔案解除鎖定之後被執行</td><td style="width: 167px; background-color: rgb(153, 255, 153);">post-unlock.tmpl</td></tr><tr><td style="background-color: rgb(204, 204, 204); text-align: center;">9</td><td style="width: 159px; background-color: rgb(204, 204, 204);">start-commit</td><td style="width: 291px; background-color: rgb(204, 204, 204);">異動開始前被執行</td><td style="width: 167px; background-color: rgb(204, 204, 204);">start-commit.tmpl</td></tr></tbody></table><br />這裡的處理觀念都和CVS類似（可參加我先前寫的這篇：<a href="http://blog.xuite.net/emisjerry/tech/3444114"><span class="titlename">loginfo.rb：自動寄送修改記錄信件</span></a>），但麻煩的是Subversion只傳出檔案庫路徑和發生異動的Revision序號，其他資料資訊如作者、異動時間、異動檔案、異動內容等，都不會直接傳出來給Hook scripts；看了一些文件和範例程式後，發現這些資訊必須透過<span style="font-weight: bold; text-decoration: underline;">\svn-win32-1.2.3\bin\svnlook.exe</span>才能取得，我做了個簡單的測試，檔名是 檔案庫目錄/hooks/post-commit.bat：<br /><br /><table cellspacing="1" cellpadding="2" border="0" style="width: 100%; background-color: rgb(0, 153, 0); text-align: left;"><tbody><tr><td style="width: 544px; color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">指令</td><td style="width: 260px; color: rgb(255, 255, 102); background-color: rgb(51, 51, 255); text-align: center;">說明</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv</td><td style="width: 260px; background-color: rgb(255, 255, 204);">設定語系Locale</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo %1 %2 &gt;&gt; d:\repo\hooks\post.txt</td><td style="width: 260px; background-color: rgb(255, 255, 204);">看Post-commit後傳了那些東西給hook script</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---changed: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK changed &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把異動檔名寫入post.txt</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---date: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK date &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把異動時間寫入post.txt</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---log: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK log &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把commit時輸入的Log訊息寫入post.txt</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---author: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK author &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把作者寫入post.txt</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---youngest: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK youngest &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把最後的異動序號寫入post.txt</td></tr><tr><td style="width: 544px; background-color: rgb(255, 255, 204);">echo ---diff: &gt;&gt; d:\repo\hooks\post.txt<br />d:\svn-win32-1.2.3\bin\SVNLOOK diff &quot;%1&quot; &quot;%2&quot; &gt;&gt; d:\repo\hooks\post.txt<br /></td><td style="width: 260px; background-color: rgb(255, 255, 204);">把差異內容寫入post.txt</td></tr></tbody></table><br />最後再寫一支程式去解析post.txt就可以了。嗯，post.txt的檔名還要再加上可分辨的序號才可以，以防止同時有許多人在Commit。<br /><br />##<br /></p>
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/844150.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/844150.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/844150.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 09 Dec 2005 23:01:09 +0800</pubDate>
</item>
<item>
	<title>[Subversion] 檔案庫的儲存格式比較</title>
	<description><![CDATA[
			
Subversion自從2004起，檔案庫的格式除了BerkeleyDB之外，也能用作業系統的檔案系統做為其儲存格式（稱為FSFS），二者的比較彙總如下：Repository Data-Store ComparisonFeatureBerkeley DBFSFSSensitivity to interruptionsvery; crashes and permission problems can leave the database “wedged”, requiring journaled recovery procedures.quite insensitive.Usable from a read-only mountnoyesPlatform-independent storagenoyesUsable over network filesystemsnoyesRepository sizeslightly largerslightly smallerScalability: number of revision treesdatabase; no problemssome older native filesystems don't scale well with thousands of entries in a single directory.Scalability: directories with many filesslowerfasterSpeed: checking out latest codefasterslowerSpeed: large commitsslower, but work is spread throughout commitfaster, but finalization delay may cause client timeoutsGroup permissions handlingsensitive to user umask problems; best if accessed by only one user.works around umask problemsCode maturityin use since 2001in use since 2004##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->Subversion自從2004起，檔案庫的格式除了BerkeleyDB之外，也能用作業系統的檔案系統做為其儲存格式（稱為FSFS），二者的比較彙總如下：<br /><br /><div lang="zh-TW" class="moz-text-html"><div><p style="margin: 9pt 126pt 9pt 0cm;" class="title"><b><span lang="EN" style="font-family: Arial;">Repository Data-Store Comparison</span></b><span lang="EN" style="font-family: Arial;"><p /></span></p><table cellspacing="1" cellpadding="0" border="1" style="margin-left: 12pt;"><thead><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p align="center" style="margin: 0cm 0cm 0pt; text-align: center;" class="MsoNormal"><b><span lang="EN-US" style="font-family: Arial;">Feature<p /></span></b></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p align="center" style="margin: 0cm 0cm 0pt; text-align: center;" class="MsoNormal"><b><span lang="EN-US" style="font-family: Arial;">Berkeley DB<p /></span></b></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p align="center" style="margin: 0cm 0cm 0pt; text-align: center;" class="MsoNormal"><b><span lang="EN-US" style="font-family: Arial;">FSFS<p /></span></b></p></td></tr></thead><tbody><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Sensitivity to interruptions<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">very; crashes and permission problems can leave the database “<span class="quote">wedged</span>”, requiring journaled recovery procedures.<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">quite insensitive.<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Usable from a read-only mount<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">no<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">yes<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Platform-independent storage<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">no<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">yes<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Usable over network filesystems<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">no<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">yes<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Repository size<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">slightly larger<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">slightly smaller<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Scalability: number of revision trees<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">database; no problems<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">some older native filesystems don't scale well with thousands of entries in a single directory.<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Scalability: directories with many files<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">slower<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">faster<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Speed: checking out latest code<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">faster<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">slower<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Speed: large commits<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">slower, but work is spread throughout commit<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">faster, but finalization delay may cause client timeouts<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Group permissions handling<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">sensitive to user umask problems; best if accessed by only one user.<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">works around umask problems<p /></span></p></td></tr><tr><td width="196" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 117.6pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">Code maturity<p /></span></p></td><td width="293" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 175.65pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">in use since 2001<p /></span></p></td><td width="183" style="border: medium none rgb(212, 208, 200); padding: 0.75pt; width: 110.05pt; background-color: transparent;"><p style="margin: 0cm 0cm 0pt;" class="MsoNormal"><span lang="EN-US" style="font-family: Arial;">in use since 2004<p /></span></p></td></tr></tbody></table><br />##<br /><h4 style="margin: 9pt 90pt auto 0cm;"><span lang="EN-US"><p /></span></h4></div></div>
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/582659.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/582659.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/582659.html</guid>
	<category>專案管理工具</category>
	<pubDate>Tue, 11 Oct 2005 22:52:12 +0800</pubDate>
</item>
<item>
	<title>初試TortoiseSVN的收穫</title>
	<description><![CDATA[
			
今天終於還是把TortoiseSVN給安裝起來開始測試，並且仔細的讀了一遍它的Help文件，發覺這份文件寫得淺顯易懂，又提供了一些實務操作上的建議，值得一讀。不過最大的收穫應該算是TortiseSVN和Bug Tracking System之間的整合功能了。只要在根目錄加入bugtraq:url、bugtraq:message等性質(Property)的話，則在Commit時會出現額外的「Bug編號/事項編號」欄位，輸入編號後會自動以bugtraq:url的網址型態新增到log-message內。bugtraq:url則依使用的Bug Tracking System來提供連結的網址，編號的部份則用%BUGID%來表示，到時log-message內會在%BUGID%的位置替換成輸入欄位的值，如圖三的95。bugtraq性質似乎是Subversion的標準，但可惜IDEA使用的JSVN仍未提供，因此在IDEA中就無法自動建立可連結的Bug編號。(圖一) (圖二) (圖三)##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<p><!--StartFragment -->今天終於還是把<a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>給安裝起來開始測試，並且仔細的讀了一遍它的Help文件，發覺這份文件寫得淺顯易懂，又提供了一些實務操作上的建議，值得一讀。<br /><br />不過最大的收穫應該算是TortiseSVN和Bug Tracking System之間的整合功能了。只要在根目錄加入<span style="font-weight: bold;">bugtraq:url</span>、<span style="font-weight: bold;">bugtraq:message</span>等性質(Property)的話，則在Commit時會出現額外的「Bug編號/事項編號」欄位，輸入編號後會自動以<span style="font-weight: bold;">bugtraq:url</span>的網址型態新增到log-message內。<br /><br /><span style="font-weight: bold;">bugtraq:url</span>則依使用的Bug Tracking System來提供連結的網址，編號的部份則用<span style="font-weight: bold;">%BUGID%</span>來表示，到時log-message內會在%BUGID%的位置替換成輸入欄位的值，如圖三的95。<br /><br />bugtraq性質似乎是Subversion的標準，但可惜IDEA使用的JSVN仍未提供，因此在IDEA中就無法自動建立可連結的Bug編號。<br /><br /><img style="width: 524px; height: 668px;" alt="SVN-property" src="http://blog.xuite.net/_users/b3/ac/11893557/blog_10351/txt/3968778/3968778_0.jpg" />(圖一)<br /><br /><img style="width: 533px; height: 136px;" alt="Issue-Number" src="http://blog.xuite.net/_users/b3/ac/11893557/blog_10351/txt/3968778/3968778_7.jpg" /> (圖二)<br /><br /><br /><img style="width: 720px; height: 381px;" alt="svn-BTS" src="http://blog.xuite.net/_users/b3/ac/11893557/blog_10351/txt/3968778/3968778_6.jpg" /> (圖三)</p><p>##<br /><br /><br /><br /></p>
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/491751.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/491751.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/491751.html</guid>
	<category>專案管理工具</category>
	<pubDate>Fri, 16 Sep 2005 23:48:58 +0800</pubDate>
</item>
<item>
	<title>[Subversion] Keywords擴展設定</title>
	<description><![CDATA[
			
Subversion的Keywords與CVS的有著小小差異。在功能上二者相同，但在處理上則有不同。CVS只要在Commit的文件中有符合規則的Keywords，就會自動擴展成對應的文字，但Subversion則預設不會擴展，必須針對需要擴展的檔案設定性質(Property) svn:keywords:要用的Keywords，例如：svn:keywords=Id$Id: t4.jsp 95 2005-09-03 10:14:35Z jerry $svn:keywords=Date$Date: 2005-09-03 18:14:35 +0800 (星期六, 03 九月 2005) $不幸的，$Id$的處理和CVS一樣：時間都少了8個小時，而呈現格林威治的零時時間，而$Date$(其實就是$LastChangeDate$的縮寫)則是正確的中原標準時間。$Id$擴展的內容又和使用的Client而有所不同；eSVN和TortoiseSVN都是產生成上列表格第一列的少了8小時的文字，IDEA透過JavaSVN則產生成類似第二列的有中文的文字，然而IDEA寫回來的中文字是UTF-8的編碼，但Java或JSP若編碼為ANSI-950時，中文字就變成亂碼了。這個亂碼問題除非全面改用UTF-8編碼，否則看來是無解的。如果專案裡的檔案都要一個一個的去設定性質，那可是太煩人的工作了。為了將Keywords擴展變成是預設的行為，我們必須修改Subversion client的系統設定檔：C:Documents and Settings用戶名Application DataSubversionconfig。把config檔案內做如下修改，即能讓所有檔案自動具有Keywords擴展的功能：[miscellany]enable-auto-props = yes[auto-props]*.jsp = svn:keywords=Id URL*.jspf = svn:keywords=Id URL*.java = svn:keywords=Id URL*.htm = svn:keywords=Id URL*.html = svn:keywords=Id URL*.xml = svn:keywords=Id URL*.js = svn:keywords=Id URL##
		]]>
	</description>
	<content:encoded><![CDATA[
			
<!--StartFragment -->Subversion的Keywords與CVS的有著小小差異。在功能上二者相同，但在處理上則有不同。<br /><br />CVS只要在Commit的文件中有符合規則的Keywords，就會自動擴展成對應的文字，但Subversion則預設<span style="font-weight: bold;">不會</span>擴展，必須針對需要擴展的檔案設定性質(Property) <span style="font-weight: bold; text-decoration: underline;">svn:keywords:要用的Keywords</span>，例如：<br /><table cellspacing="2" cellpadding="2" border="1" style="width: 561px; height: 140px; background-color: rgb(255, 255, 102); text-align: left;"><tbody><tr><td>svn:keywords=Id</td><td>$Id: t4.jsp 95 2005-09-03 10:14:35Z jerry $</td></tr><tr><td>svn:keywords=Date</td><td>$Date: 2005-09-03 18:14:35 +0800 (星期六, 03 九月 2005) $</td></tr></tbody></table><br />不幸的，$Id$的處理和CVS一樣：時間都少了8個小時，而呈現格林威治的零時時間，而$Date$(其實就是$LastChangeDate$的縮寫)則是正確的中原標準時間。<br /><br />$Id$擴展的內容又和使用的Client而有所不同；eSVN和TortoiseSVN都是產生成上列表格第一列的少了8小時的文字，IDEA透過JavaSVN則產生成類似第二列的有中文的文字，然而IDEA寫回來的中文字是<span style="font-weight: bold;">UTF-8</span>的編碼，但Java或JSP若編碼為ANSI-950時，中文字就變成亂碼了。這個亂碼問題除非全面改用UTF-8編碼，否則看來是無解的。<br /><br />如果專案裡的檔案都要一個一個的去設定性質，那可是太煩人的工作了。為了將Keywords擴展變成是預設的行為，我們必須修改Subversion client的系統設定檔：<big>C:Documents and Settings用戶名Application DataSubversionconfig</big>。<br /><br />把config檔案內做如下修改，即能讓所有檔案自動具有Keywords擴展的功能：<br /><table cellspacing="2" cellpadding="2" border="1" style="width: 252px; background-color: rgb(255, 255, 102); text-align: left;"><tbody><tr><td style="width: 242px;">[miscellany]<br />enable-auto-props = yes</td></tr><tr><td style="width: 242px; background-color: rgb(255, 255, 102);">[auto-props]<br />*.jsp = svn:keywords=Id URL<br />*.jspf = svn:keywords=Id URL<br />*.java = svn:keywords=Id URL<br />*.htm = svn:keywords=Id URL<br />*.html = svn:keywords=Id URL<br />*.xml = svn:keywords=Id URL<br />*.js = svn:keywords=Id URL</td></tr></tbody></table><br />##<br /><br />
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/462745.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/462745.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/462745.html</guid>
	<category>專案管理工具</category>
	<pubDate>Thu, 08 Sep 2005 21:13:40 +0800</pubDate>
</item>
<item>
	<title>[Subversion] 尋找Subversion Client工具</title>
	<description><![CDATA[
			
開始準備要將版本控制系統由CVS換到Subversion（咦～CVS首頁www.cvshome.org怎麼換掉了？）。安裝了Subversion client後用svn.exe連上新建的Repository，顯示出來的字串是問號、反斜線和一堆數字，看了文件後才知道要設定環境變數（我的 Subversion client是安裝在d:\svn-win32-1.2.3）：set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv同時也找了一些GUI的Client程式，大部份人都是介紹使用TortoiseSVN，但以前用過這支小海龜的CVS版本（TortoiseCVS），感覺會把Shell Menu加上一大堆選項，也把圖示弄得怪模怪樣，因此不太想用它，另外再找比較像WinCVS的工具，試了下列幾個：JSVN：Java 寫的0.8版，感覺還在初期開發階段，不甚好用RapidSVN：C ++寫的，有很多指令功能好會像都還沒做出來SmartSVN：SmartCVS 的孿生兄弟，和SmartCVS一樣有中文的問題eSVN：用Qt寫的Client，感覺操面與WinCVS較類似，功能也較齊全因此在未找到更合適的Client前，就先以eSVN來熟悉Subversion的操作吧。  (按圖放大)## 
		]]>
	</description>
	<content:encoded><![CDATA[
			
開始準備要將版本控制系統由<a href="http://www.nongnu.org/cvs/">CVS</a>換到<a href="http://subversion.tigris.org/">Subversion</a>（咦～CVS首頁www.cvshome.org怎麼換掉了？）。<br /><br />安裝了Subversion client後用svn.exe連上新建的Repository，顯示出來的字串是問號、反斜線和一堆數字，看了文件後才知道要設定環境變數（我的 Subversion client是安裝在d:\svn-win32-1.2.3）：<br /><br /><table cellspacing="2" cellpadding="2" border="1" style="width: 434px; height: 52px; background-color: rgb(255, 255, 102); text-align: left;"><tbody><tr><td>set APR_ICONV_PATH=d:\svn-win32-1.2.3\iconv</td></tr></tbody></table><br />同時也找了一些GUI的Client程式，大部份人都是介紹使用<a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a>，但以前用過這支小海龜的CVS版本（TortoiseCVS），感覺會把Shell Menu加上一大堆選項，也把圖示弄得怪模怪樣，因此不太想用它，另外再找比較像<a href="http://www.wincvs.org/">WinCVS</a>的工具，試了下列幾個：<br /><ul><li><a href="http://jsvn.alternatecomputing.com/">JSVN</a>：Java 寫的0.8版，感覺還在初期開發階段，不甚好用</li><li><a href="http://rapidsvn.tigris.org/">RapidSVN</a>：C ++寫的，有很多指令功能好會像都還沒做出來</li><li><a href="http://www.smartcvs.com/">SmartSVN</a>：SmartCVS 的孿生兄弟，和SmartCVS一樣有中文的問題</li><li><a href="http://esvn.umputun.com/">eSVN</a>：用Qt寫的Client，感覺操面與WinCVS較類似，功能也較齊全</li></ul>因此在未找到更合適的Client前，就先以eSVN來熟悉Subversion的操作吧。<br /><a target="_blank" href="http://esvn.umputun.com/picts/snapshot-esvn-big411ba9f82.jpg"><img src="http://esvn.umputun.com/picts/snapshot-esvn-big_thn411ba9f82.jpg" /></a>  (按圖放大)<br /><br />## 
		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/433918.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/433918.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/433918.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 31 Aug 2005 23:47:48 +0800</pubDate>
</item>
<item>
	<title>[Tools] 測試中的CVS Client：LinCVS</title>
	<description><![CDATA[
			
在操作CVS的Windows環境裡，WinCVS幾
乎是官方的版本，而另一個和Windows shell整合在一起的TortoiseCVS(海龜CVS)雖
然也很方
便，但用起來總還是不像WinCVS那般習慣。WinCVS在1.2、1.3版打轉了兩、三年後，今年終於升到2.0版了（2005/06/02剛推出
2.0.2版）。



WinCVS只能用在Windows，其實還有別的跨平台的CVS Client，例如用Java寫的SmartCVS，去年在試它的3.0版時中文有問題，新版未再試，因此並不清楚是否已經改善了沒。



另一個是最近在試的LinCVS
1.7.0 pre-2，是使用Qt做的、能運行於Windows與
Linux，雖然並無中文介面，但能正確的顯示與儲存中文，操作起來感覺比WinCVS直覺，但有遇到幾個小狀況：

Show
History似乎有點問題，好像會Traverse整個Repository tree，造成Loading繁重能顯示Modules，但讀Repository後只出現部份
Modules

這些問題或許是因為是pre-2的關係，不過，會再多試看看。


(按圖放大)
##

		]]>
	</description>
	<content:encoded><![CDATA[
			
在操作CVS的Windows環境裡，<a href="http://www.wincvs.org/">WinCVS</a>幾
乎是官方的版本，而另一個和Windows shell整合在一起的<a href="http://www.tortoisecvs.org/">TortoiseCVS(海龜CVS)</a>雖
然也很方
便，但用起來總還是不像WinCVS那般習慣。WinCVS在1.2、1.3版打轉了兩、三年後，今年終於升到2.0版了（2005/06/02剛推出
2.0.2版）。<br />

<br />

WinCVS只能用在Windows，其實還有別的跨平台的CVS Client，例如用Java寫的<a href="http://www.smartcvs.com/">SmartCVS</a>，去年在試它的3.0版時中文有問題，新版未再試，因此並不清楚是否已經改善了沒。<br />

<br />

另一個是最近在試的<a href="http://www.lincvs.org/">LinCVS
1.7.0 pre-2</a>，是使用Qt做的、能運行於Windows與
Linux，雖然並無中文介面，但能正確的顯示與儲存中文，操作起來感覺比WinCVS直覺，但有遇到幾個小狀況：<br />

<ul><li>Show
History似乎有點問題，好像會Traverse整個Repository tree，造成Loading繁重</li><li>能顯示Modules，但讀Repository後只出現部份
Modules</li></ul>

這些問題或許是因為是pre-2的關係，不過，會再多試看看。<br />

<br />
(按圖放大)<a href="http://lincvs.com/shots/shot2.jpg" target="_blank">
<img style="border: 0px solid ; width: 50%; height: 60%;" alt="LinCVS" src="http://lincvs.com/shots/shot2.jpg" /></a><br /><br />##<br />

		<a class="acontinues" href="http://blog.roodo.com/emisjerry/archives/176412.html">(繼續閱讀...)</a>
		]]>
	</content:encoded>
	<link>http://blog.roodo.com/emisjerry/archives/176412.html</link>
	<guid>http://blog.roodo.com/emisjerry/archives/176412.html</guid>
	<category>專案管理工具</category>
	<pubDate>Wed, 08 Jun 2005 23:59:47 +0800</pubDate>
</item>
</channel>
</rss>