差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
tech:svn_patch [2010/03/24 19:00] jonathantech:svn_patch [2010/03/25 10:12] (目前版本) – 增加針對特定 Revision 匯出功能 jonathan
行 1: 行 1:
 +====== SVN 比對與產生 Patch 工具(尚未完成) ======
 +因為有多個 SVN repos 給不同階段使用, 所以就會出現比對差異的需求以及產生 Patch 的標準程序, 也因此在這裡整理測試實驗的紀錄資訊。
 +
 +===== 環境說明 =====
 +  * svn 1 : 開發版本 /tmp/develop/
 +  * svn 2 : 驗證版本 /tmp/rc1/
 +  * svn 3 : 正式版本 /tmp/release/
 +
 +===== 比對工具 =====
 +<code sh>
 +svn_cmpdir.pl 31503 /tmp/develop/bgproc /tmp/rc1/bgproc > /tmp/diff_files.txt
 +</code>
 +產生 develop/bgproc 的 Revision 31503 與目前 rc1/bgproc 差異檔案清單, svn_cmpdir.pl 主要是執行 svn update / svn export / svn status 產生出來的結果
 +<code>
 +cd /tmp/develop/bgproc
 +svn update -q
 +cd /tmp/rc1/bgproc
 +svn update -q
 +find . -type f | sed "s#^.#rm -f $(pwd)#" | grep -v ".svn" | sh
 +svn export -r 31503 -q --force /tmp/develop/bgproc .
 +svn status /tmp/rc1/bgproc
 +find . -type f | sed "s#^.#rm -f $(pwd)#" | grep -v ".svn" | sh
 +svn update -q
 +</code>
 +===== 修改 svn 目標 repos 狀態 =====
 +
 +<code sh>
 +svn_patch.pl 31503 /tmp/develop/bgproc /tmp/rc1/bgproc
 +</code>
 +
 +主要針對 svn_cmpdir.pl 產生出來的結果內容依據第一位元
 +  * ! : 增加 svn del
 +  * ? : 增加 svn add
 +
 +然後執行 svn commit
 +
 +<code>
 +cd /tmp/develop/bgproc
 +svn update -q
 +cd /tmp/rc1/bgproc
 +svn update -q
 +find . -type f | sed "s#^.#rm -f $(pwd)#" | grep -v ".svn" | sh
 +cp -a /tmp/rc1/bgproc /tmp/rc1/bgproc.bak
 +svn export -r 31503 -q --force /tmp/develop/bgproc .
 +svn status /tmp/rc1/bgproc | grep "     " | sed "s#^!      #svn del #" | sh
 +svn status /tmp/rc1/bgproc | grep "?      " | sed "s#^?      #svn add #" | sh
 +</code>
 +
 +
 +{{tag>svn subversion patch draft}}