CodeIgniter 搭配 svn:externals 做無痛升級

昨天看到了 CodeIgniter 釋出了新版的 1.7.0, 所以就打算來升級一下, 不過想起以往在升級 CodeIgniter 的時候, 由於有使用 SVN 來當作 VCS, 所以每個目錄裡面都會有 .svn, 所以沒辦法直接覆蓋目錄, 所以當時就一個一個目錄的打開, 把該升級的檔案覆蓋掉, 沒辦法直接換目錄, 否則 svn 的資訊就都會不見了。

所以昨天找了一下 svn:externals 的用法, 透過 svn:externals 就可以很快的昇級 CodeIgniter system。

一開始新的 CI project 我都會把 /system/application 這個目錄給搬出來。 可以直接搬出來成為 /application 而不用改任何程式。 平常也根本動不到 /system 目錄裡面的東西。 如此一來只要把 /system 設為 svn:externals 指到 CodeIgniter SVN 就可以自動更新了。 但前提是沒有修改 /system 裡面的檔案。

先來看一下我 CodeIgniter 的配置。

/index.php<br></br>
/application<br></br>
/css<br></br>
/js<br></br>
/images<br></br>
/system```

 以下都在 project 的的根目錄執行

1. 把 system 給刪掉  
`rm -rf system`
2. 設定 svn:externals  
`svn propedit svn:externals .`  
 然後輸入內容如下  
`system http://dev.ellislab.com/svn/CodeIgniter/tags/v1.7.0/system/`  
 然後 commit  
`svn ci`
3. 最後更新 svn  
`svn update`  
 done! 之後只要有新版的 CI 釋出, 就修改 svn:externals 指到新的 svn tags 然後 update 就可以無痛升級啦! :D 不過有些地方還是得看看 CodeIgniter 的 [upgrades instruction](http://codeigniter.com/user_guide/installation/upgrading.html)。

很勇敢的話其實是可以把 svn:externals 指到 trunk XD

備註:  
 一開始我沒有將 system 刪掉, 就設定 svn:externals, 在 update 會出現下面這個訊息。  

Fetching external item into 'system'


svn: Working copy 'system' locked


svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)```

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!