1 / 41

版本控制軟體 svn

IDIC. 版本控制軟體 svn . 圑隊開發. 圑隊開發通常會共用同一份程式,很有可能被很多人同時修改,所以會有以下問題 檔案被覆蓋 例如:王小明跟李小華改同一份程式,但彼此都不知道都有改,就自行上傳至共同開發的伺服器。 檔案被誤刪 例如:王小明刪除了開發伺服器中重要的套件。 就會導致同一份程式不能被不同人修改。. 版本控管系統-Subversion. 可以依時間記錄檔案修改的內容 運用版本控制的觀念 檔案的修改都會用版本去做記錄 萬一發生檔案被覆或誤刪時,可找回之前的版本還原 利用複製-修改-合併的方式解決多人開發同一個檔案的問題

mahdis
Download Presentation

版本控制軟體 svn

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IDIC 版本控制軟體 svn

  2. 圑隊開發 • 圑隊開發通常會共用同一份程式,很有可能被很多人同時修改,所以會有以下問題 • 檔案被覆蓋 • 例如:王小明跟李小華改同一份程式,但彼此都不知道都有改,就自行上傳至共同開發的伺服器。 • 檔案被誤刪 • 例如:王小明刪除了開發伺服器中重要的套件。 • 就會導致同一份程式不能被不同人修改。

  3. 版本控管系統-Subversion • 可以依時間記錄檔案修改的內容 • 運用版本控制的觀念 • 檔案的修改都會用版本去做記錄 • 萬一發生檔案被覆或誤刪時,可找回之前的版本還原 • 利用複製-修改-合併的方式解決多人開發同一個檔案的問題 • 版本控管系統在這裡我們用目前使用的是 Subversion, SVN

  4. SVN 的架構 • 版本控管系統通常會有一個集中的檔案庫我們叫做 Repository • 所有的程式碼都會儲放在檔案庫中。 • 開發人員修改的檔案會放在本機,需要使用 SVN 客戶端工具把檔案傳到檔案庫中。

  5. 一般檔案系統 • 不同人修改相同檔案,會被覆蓋的問題

  6. SVN - 鎖定-修改-解鎖 • 避免發生檔案覆蓋情形的解決方法

  7. SVN - 鎖定-修改-解鎖缺點 • 當有人鎖定檔案的時候,別人就無法存取那個檔案。 • 當有人忘記解鎖的時候,就變成沒有人可以修改。

  8. SVN - 複製-修改-合併 • 避免檔案忘記解鎖導致無法修改的方法

  9. SVN - 複製-修改-合併(續) • 避免檔案忘記解鎖導致無法修改的方法

  10. 每次修改程式需要做的事 • 取得檔案庫的檔案(Checkout) • 依開發需要, 變更檔案(Add, Delete, …) • 看目前什麼檔案有變更(Diff) • 更新目前的工作複本(Update) • 更新是用來檢查是否有別人修改同一份檔案 • 解決發生衝突的一些檔案(Resolve Conflict) • 當電腦無法判斷如何合併別人修改的檔案,就必需人工做合併。 • 將檔案送交到檔案庫中(Commit) • 必需將修改的內容說明放置(Commit Message)

  11. Subversion-運作流程

  12. 版本控制系統-關鍵字說明 • 工作複本(Working Copy) • 允許使用者在本機端修改檔案庫中的檔案 • 使用者可將本機端變更的檔案分享給其他人 • 每個目錄都會有 .svn 的子目錄不允許刪除 • 版本(Revision) • 代表檔案庫的某一次修改的內容 • 做為檔案還原、比較、追蹤的依據 • HEAD 表示最新版本

  13. SVN 客戶端 • 預設的SVN客戶端是透過指令的方式操作,另外一種就是圖型化的介面,目前我們使用的是 • 下載位置: http://tortoisesvn.net/downloads.html • 教育訓練-測試用檔案庫 • http://203.64.105.131/svn/idic_training • 帳號/密碼 學號/學號

  14. TortoiseSVN – 操作介面 • 安裝後,於電腦桌面按右鍵就可以操作 SVN。

  15. TortoiseSVN – 操作指令步驟 • 取得檔案庫的檔案(Checkout) • 依開發需要, 變更檔案(Add, Delete, …) • 看目前什麼檔案有變更(Diff) • 更新目前的工作複本(Update) • 更新是用來檢查是否有別人修改同一份檔案 • 解決發生衝突的一些檔案(Resolve Conflict) • 當電腦無法判斷如何合併別人修改的檔案,就必需人工做合併。 • 將檔案送交到檔案庫中(Commit) • 必需將修改的內容說明放置(Commit Message)

  16. TortoiseSVN – 操作介面(續) • 當本機端的資料具有 SVN 的存取權時,會以不同圖示標示目前資料夾或檔案的狀態

  17. 使用 SVN 注意事項 • 請勿刪除 .svn/ 檔, 否則 SVN 無法正常取得檔案的修正資訊 • 每次開發的第一件事, 就是 Update 全部的資料夾 • 每次 Commit 必需填寫修改記錄至 Commit message • 請勿將 .tmp 的檔案上傳至檔案庫, 否則會導致資料庫無法正常存取資料 • 所有的 SVN 檔案, 發生衝突(Conflicts)時, 務必先用 Edit Conflicts 解決衝突

  18. 練習1 • 新增檔案至 Repository • 建立資料夾,名稱用學號。 • 在資料夾建立一個文字檔,名稱用學號

  19. 練習2 • 修改檔案至 Repository • 於學號.txt 填入 “hello world” 內容

  20. 練習3 • 刪除檔案至 Repository • 將自已學號的資料夾從 Repository 移除

  21. 常見問題修改同一份程式碼發生衝突(Conflict) • SVN client提供以下三種資訊做為解決的參考 • filename.mine :表示你自已修改的檔案 • filename.r舊版號:表示未修改前的檔案內容 • Filename.r新版號:表示檔案庫中最新的檔案內容

  22. TortoiseSVN- Commit 的衝突訊息

  23. TortoiseSVN- 解決衝突 • “手動” 合併發生衝突

  24. 編緝衝突

  25. 確認衝突已修正

  26. TortoiseSVN- 常見問題情境1-解決方式1 (步驟3) • 透過 Edit conflicts 編緝完後, 點選上角工具列的三角形勾勾。 • 確認程式碼是否皆正確,而且可執行 • 最後再 Commit 即完成

  27. TortoiseSVN- 常見問題Tree Conflict 當檔案被刪除,其他人不知道又修改了檔案要 Commit 到 Repository 就會發生此種衝突

  28. TortoiseSVN- Commit 衝突訊息

  29. TortoiseSVN- 檔案被誤刪的處理方式 • “手動” Edit Conflicts 編緝衝突

  30. TortoiseSVN-檔案被誤刪的處理方式 • 需由開發人員判斷要保留哪份檔案 • 是要刪除檔案( Remove the file) • 還是要保留本機的檔案(Keep the local file)

  31. TortoiseSVN- 常見問題還原檔案 • SVN 提供以下三種解法 • 未Commit • Revert • 將修改內容還原成未修改的內容 • 已Commit • show_log > Revert to this revision • 還原至某個版本 • show_log > Revert changes from this revison • 將某版本的修改內容移除

  32. TortoiseSVN- Revert to this revision • 情境

  33. TortoiseSVN- Revert to this revision • 步驟1

  34. TortoiseSVN- Revert to this revision • 步驟2

  35. TortoiseSVN- Revert to this revision • 步驟3

  36. TortoiseSVN- Revert to this revision • 步驟4 • 將還原後的檔案做 commit 送交到 檔案庫中

  37. TortoiseSVN- Revert changes from this revison • 情境 正常版本

  38. TortoiseSVN- Revert changes from this revison • 步驟1

  39. TortoiseSVN- Revert changes from this revison • 步驟2

  40. TortoiseSVN- Revert changes from this revison • 步驟3

  41. TortoiseSVN- Revert changes from this revison • 步驟4 • 將還原後的檔案做 commit 送交到 檔案庫中

More Related