SVN 比對與產生 Patch 工具(尚未完成)

因為有多個 SVN repos 給不同階段使用, 所以就會出現比對差異的需求以及產生 Patch 的標準程序, 也因此在這裡整理測試實驗的紀錄資訊。

  • svn 1 : 開發版本 /tmp/develop/
  • svn 2 : 驗證版本 /tmp/rc1/
  • svn 3 : 正式版本 /tmp/release/
svn_cmpdir.pl 31503 /tmp/develop/bgproc /tmp/rc1/bgproc > /tmp/diff_files.txt

產生 develop/bgproc 的 Revision 31503 與目前 rc1/bgproc 差異檔案清單, svn_cmpdir.pl 主要是執行 svn update / svn export / svn status 產生出來的結果

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
svn_patch.pl 31503 /tmp/develop/bgproc /tmp/rc1/bgproc

主要針對 svn_cmpdir.pl 產生出來的結果內容依據第一位元

  • ! : 增加 svn del
  • ? : 增加 svn add

然後執行 svn commit

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
  • tech/svn_patch.txt
  • 上一次變更: 2010/03/25 10:12
  • jonathan