中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

教程:Apache Subversion最佳實踐

發(fā)布于:2021-02-15 00:00:28

0

362

0

apache subversion svn 教程 版本控制

版本控制是軟件開發(fā)的有用工具,尤其是當一個項目涉及多個開發(fā)人員時,apache subversion仍然是世界上最流行的開源版本控制系統(tǒng)之一。它也是最成熟的,擁有一個充滿活力的客戶端工具、gui和插件生態(tài)系統(tǒng),可以滿足您所有的版本控制需求。

然而,有一些潛在的陷阱需要注意,特別是對于顛覆新手。您應(yīng)該如何構(gòu)建存儲庫?如何實現(xiàn)一個不會讓你頭痛的分支和合并策略?

在本文中,我們將介紹apachesubversion的一些基本最佳實踐,包括存儲庫結(jié)構(gòu)、項目布局,以及最后的分支和與SVN的合并。

存儲庫結(jié)構(gòu)

apachesubversion沒有強加嚴格的文件結(jié)構(gòu),它允許您優(yōu)化存儲庫布局以滿足項目的特定需要。然而,所有這些自由都會導(dǎo)致不必要的管理開銷——從一開始就實現(xiàn)正確的項目布局是至關(guān)重要的。

在啟動新項目時,首先需要回答的問題之一是:我應(yīng)該為多個項目使用單個存儲庫,還是為每個項目使用單獨的存儲庫?

單個存儲庫

單個存儲庫通常最適合于需要交叉跟蹤和交叉引用的多個項目。單一存儲庫方法的好處是,只有一個位置可以訪問所有代碼,并且可以在項目之間輕松共享資源(例如庫)。管理開銷通常也較少,因為新項目不需要新的存儲庫,而且數(shù)據(jù)可以在項目之間移動,而不會丟失任何版本控制信息。但是,也有一些缺點:執(zhí)行管理任務(wù)(例如轉(zhuǎn)儲和加載一個巨大的存儲庫)將更加耗時,特別是因為項目的規(guī)模有增加的趨勢。另一個值得記住的問題是Subversion將其修訂號應(yīng)用于整個樹;這意味著無論進行什么更改,所有項目的修訂號都將同時增加。

多個存儲庫

它們通常用于多個不相關(guān)的項目。多個存儲庫為用戶提供了定制每個存儲庫以適應(yīng)單個項目的自由,并確保版本號對每個項目都有意義。但是,共享代碼可能會成為一個問題,因為Subversion不支持在存儲庫之間合并代碼,合并的代碼隨后將出現(xiàn)在新的repo中,而沒有歷史記錄。

項目布局

一旦決定了是在單個存儲庫結(jié)構(gòu)中還是在多個存儲庫結(jié)構(gòu)中組織項目,下一步就是規(guī)劃項目布局。事先考慮一下布局,可以省去以后移動文件的管理麻煩。

對于大多數(shù)項目,遵循主干/分支/標記布局并明確區(qū)分每個項目中包含的代碼是一種很好的做法:

Trunk –僅在此處存儲當前版本代碼!主干應(yīng)該始終是穩(wěn)定的和可編譯的。

Tags –這些標記用于提供項目歷史中特定點的代碼快照。

Branches –用于處理代碼的重大更改、變體等,而不會中斷主干中的穩(wěn)定代碼。

一個快速的互聯(lián)網(wǎng)搜索將會發(fā)現(xiàn)無數(shù)關(guān)于分支和合并的故事,但是如果使用得當,分支和合并對于Subversion用戶來說是一個非常寶貴的工具。遵循一些最佳實踐可以確保您充分利用Subversion強大的分支和合并功能。

合并最佳實踐

  • 始終從簽出或更新開始–始終確保您擁有主干中的最新代碼,并在開始合并之前已提交所有更改。

  • 合并邏輯檢查點–在大多數(shù)情況下,當分支達到一定的穩(wěn)定性和成熟度水平時,合并是有意義的。對分支進行實驗性更改后,切勿合并。

  • 始終使用日志消息–幾個月后,當您需要檢查合并發(fā)生的時間,合并發(fā)生的更改等情況時,這些消息可能是寶貴的信息來源。您在日志消息中提供的相關(guān)信息越多越好。

  • 很快合并–您可以更快地執(zhí)行合并并將所做的更改提交回存儲庫,團隊的其他成員可以更快地在自己的開發(fā)工作中考慮到您的更改。

  • 隔離合并–可能很容易合并,然后在執(zhí)行提交之前進行一些其他更改。但是,如果您需要重新訪問此修訂,將很難區(qū)分哪些更改來自合并,哪些更改是其余開發(fā)工作的一部分。

  • 運行頻繁的“ SVN更新” -即使您的分支似乎與干線中正在進行的工作沒有任何關(guān)系,但是當您完成分支的完善時,干線可能已經(jīng)發(fā)展到難以解決的地步合并。執(zhí)行定期更新,以確保所有新提交都適合您自己的更改。

  • 遇到問題了嗎?剛開始!–如果合并沒有按計劃進行,則始終可以放棄工作副本中的更改并重新開始。還原將覆蓋存儲庫中代碼的所有本地更改。它使用“ svn revert”命令,后跟工作副本的位置 (圖2):

提示:TortoiseSVN是流行的用于Windows的Subversion客戶端,它有一個有用的tsvn:日志大小'屬性,該屬性可以確保所有團隊成員都留下日志消息。要設(shè)置此屬性:

從TortoiseSVN菜單中選擇properties選項。在隨后的屬性對話框中,選擇“新建”屬性并單擊“日志大小”。(圖3)。

指定提交消息的最小字符數(shù)。TortoiseSVN將阻止任何日志消息短于指定字符的提交。(圖4)

 

分支最佳實踐

  • 刪除不需要的分支–在Subversion中刪除分支對存儲庫大小沒有影響,因為該分支僅從有問題的修訂版和所有后續(xù)修訂版中刪除。刪除的分支仍存在于所有以前的修訂中,可以隨時查看和恢復(fù)。盡管刪除分支并不能節(jié)省空間,但仍應(yīng)刪除不需要的分支,如果:您已成功執(zhí)行了合并–合并后,該分支變得完全冗余,應(yīng)將其刪除。您已經(jīng)運行了-reintegrate命令–該命令指示Subversion比較主干和分支,并將結(jié)果差異應(yīng)用于主干。一旦執(zhí)行了“重新整合”合并,分支就不能再用于開發(fā),因為任何未來的重新整合都將被解釋為主干更改。為避免這種情況,合并后應(yīng)始終刪除分支。或者對于一般的內(nèi)務(wù)管理-定期刪除分支有助于減少分支目錄中的混亂,使您可以一眼就看到活動開發(fā)。

  • 測試,測試,測試-考慮對功能分支進行CI和斷言測試,這是表示代碼成熟度和進度的有用方法。

  • 跟蹤分支——如果您同時維護多個分支,很容易失去跟蹤。TortoiseSVN的“修訂圖”功能通過分析修訂歷史和創(chuàng)建分支之間關(guān)系的圖形表示,幫助您了解不同的分支。

在修訂圖中,每個節(jié)點代表一個修訂,其中有更改,并且每個更改由不同顏色的形狀表示。(圖5)

  • 添加或復(fù)制的項目–項目已添加到Subversion,或通過復(fù)制現(xiàn)有文件/文件夾創(chuàng)建。

  • 分支提示修訂–這表示每個分支的標題修訂節(jié)點。請注意,該頭不是指存儲庫中的最新版本,而是指在該路徑上提交的最新版本。(圖6)。

  • 已刪除的項目–已刪除的分支。

  • (可選)工作副本修訂版–如果從“查看”菜單中選擇“顯示W(wǎng)C修訂版”選項,則基本修訂版將以粗體輪廓顯示。(圖7)