回顧一下之前所新建的SVN倉庫
在上一講中,我們一起學習瞭如何來安裝SVN服務器並且新建了一個名稱爲taotao-javaee
的空的倉庫,如下圖所示。
從上圖中我們可以清楚地看到taotao-javaee
倉庫下有三個空的文件夾,它們分別是branches、tags以及trunk,你不僅就要問了,這三個文件夾分別代表什麼意思呢?下面我就來告訴大家,如有講得不好的地方,還請指出,大家可以一起討論。
branches
branches文件夾代表的是分支。如何理解分支這一概念呢?舉個例子,我們在開發項目時往往會分版本,比如1.0、2.0之類的,當我們開發完1.0版本之後,往往就要拉一個分支出來,這時主幹繼續開發2.0版本。但是1.0版本上線之後肯定會遇到一些bug,遇到bug我們肯定要處理啊,那麼我們在哪兒進行處理呢?答案是在分支上,因爲主幹上的代碼加入了很多新特性,還未經過詳細測試,不穩定性比較高,而分支上的代碼是舊的代碼,並沒有加入新特性,因此改動起來更簡單也更穩定些。當然了,在分支上改完之後,肯定要把分支上修改的代碼合併到主幹上來,因爲我們不能讓1.0版本的bug在2.0版本再重現。如果修復的是1.0版本的bug,那麼修改完之後新建版本應該是1.1、1.2、1.3等等。
tags
tags文件夾代表的是標籤,它主要是記錄一些關鍵時間點,比如某個版本發佈的時間,某個大的bug修改的版本等,我們在tags做下標記,這樣方便我們根據標籤找回我們想要的以前某個版本的代碼。
trunk
trunk文件夾代表的是主幹,它是我們平時開發所在的目錄,也就是說在正常情況下,我們開發的代碼應放在主幹這兒。
主幹的代碼始終是最新的,版本也是不穩定的,需要經過多輪測試才能驗收通過,這時再新建分支,然後接着開發新的版本。
你有可能對於這句話,不是那麼的很明瞭,接下來,希望通過我比較通俗的話語可以讓你理解得更加的深刻。舉個例子,比方說我們開發一個項目,就拿淘淘商城這個項目來說,該淘淘商城項目有不同的版本進行迭代,例如taotao v1.0
、taotao v2.0
、taotao v3.0
、······,這些不同的版本是主幹上的版本。當我們開發出來taotao v1.0
這個版本之後,就得發佈一版。接下來,我們就要繼續開發taotao v2.0
這個版本了,這個時候我們依然是在主幹上進行開發的。那麼好了,現在taotao v1.0
這個版本有bug了,改不改呢?那當然得改了,改的時候,能在主幹上改嗎?答案是不能。這個時候,主幹已經開發完taotao v2.0
這裏面的功能了,你即便是在taotao v2.0
這個主幹上改完了,你也不能進行發佈。因爲taotao v2.0
增加了一些新的功能,可能都還沒有進行測試,這個時候,你再重新發布,那就肯定會包含一些有問題的功能點,所以,你不能在主幹這兒改。
taotao v1.0
這個版本一旦發佈了之後,你就應該建一個分支(branches),然後主幹繼續向前開發。如果分支這裏面有bug,那麼就在分支裏面進行修改,這樣勢必就會出現taotao v1.1
、taotao v1.2
、taotao v1.3
等這些小版本號。在分支裏面改完bug之後,要不要合併到主幹呢?這肯定要合併到主幹,因爲你都知道有bug了,難道主幹就不改了嗎?難道你還能把這個bug帶到taotao v2.0
版本中嗎?所以你得把分支裏面修改的內容合併到主幹,這樣保證我們主幹裏面的內容是最新的。我們主幹一旦把taotao v2.0
這個版本開發完,並且測試完之後,再爲該版本建一個分支,接着繼續開發taotao v2.0
這個版本。
由於我們現在還處於開發項目的過程中,所以我們應該把代碼上傳到trunk主幹之上。
上傳代碼
要向SVN服務器上傳代碼,首先我們需要知道上傳的地址,如何獲取要上傳的地址呢?很簡單,方法是在trunk
文件夾上右鍵,再在其子菜單中點擊Copy URL to Clipboard
,如下圖所示。
粘貼我們剛纔複製的URL到記事本上,你便可以看到https://liayun:8443/svn/taotao-javaee/trunk
這樣的一個URL,它是以https開頭的,也就是安全模式,https默認的端口號是433,如果本地有進程佔用了433端口請先關掉那個進程。
上傳代碼秉承先獨立後依賴的原則。比方說,taotao-parent就是個獨立的工程,它並沒有依賴任何別的工程,因此我們便先上傳它,然後taotao-common工程只依賴了taotao-parent,而其他工程都依賴於它,因此第二個便上傳taotao-common工程,接着taotao-manager工程依賴於taotao-common,因此我們第三個便上傳taotao-manager工程,這裏值得說明的是,由於taotao-manager是個聚合工程,它聚合了下面四個子工程,因此我們只需要上傳taotao-manager工程即可,不用再單獨上傳它下面的四個子工程。最後我們上傳taotao-manager-web工程。
上傳taotao-parent工程的代碼
第一步,我們在taotao-parent工程上右鍵,然後在其子菜單中選擇Team
,接着再在其子菜單中點擊Share Project...
,如下圖所示。
第二步,彈出如下窗口,並在窗口中選擇SVN
,然後點擊Next
按鈕。
第三步,我們可以看到如下圖所示的窗口,在該窗口中,我們選擇使用默認的創建新的資源庫位置
,然後點擊Next
按鈕。
第四步,我們會看到如下圖所示的窗口,然後在URL一欄中輸入我們上面複製過來的URL,然後點擊Next
按鈕。
第五步,在彈出的如下窗口中,我們使用默認配置即可,然後點擊Finish
按鈕。
第六步,此時,會彈出如下窗口,讓我們輸入SVN的用戶名和密碼,輸入完之後,記得勾選保存密碼
前面的框框,然後點擊OK
按鈕。
第七步,此時我們會看到如下圖所示的窗口,點擊Yes
按鈕即可。
第八步,此時,我們會進入同步視圖,在同步視圖中我們可以看到本地和服務端的差異。
第九步,我們在上傳文件前需要先排除不需要上傳的文件,比如.settings文件,我們就不能上傳到服務端,因爲每一個人的本地的配置都有一個.settings,並且都不一樣,如果你傳上去,別人一更新,那麼你的.settings就會覆蓋他本地,可能就造成這個工程壞了,各種各樣奇怪的問題都會隨之出現,所以最好不要把.settings傳上去,也就是說這個時候.settings就需要被忽略。
那麼如何忽略該文件呢?我們可以在其上右鍵,並在右鍵菜單中點擊添加至svn:ignore(D)
,如下圖所示。
然後,我們會看到如下圖所示的窗口,點擊OK
按鈕即可。
接着,我們就可以看到我們的taotao-parent工程已經沒有.settings文件了。
以上這種方式只針對當前文件有效。其實,忽略某些文件還有另外一種方式,即配置忽略規則,這種方式更好一點。
那麼如何來配置忽略規則呢?首先,點擊Eclipse菜單欄中的Window
菜單,在其下拉列表中選擇Preferences
,如下圖所示。
然後,彈出如下窗口,並在該窗口的左側找到Team
,在Team
下有一項Ignored Resources
,我們點擊它,在右側可以看到當前默認添加的忽略的資源,還可以看到,其中並沒有忽略.settings文件和.project文件,因此我們需要把這兩個加到這裏面來。
接着,我們點擊Add Pattern...
按鈕,會彈出添加忽略格式的窗口,我們在輸入框中輸入.settings,然後點擊OK
按鈕,如下圖所示。
添加完.settings之後,我們再來添加.project,這時我們可以看到在忽略的資源當中已經有我們剛纔輸入的.settings和.project了,緊接着,依次點擊Apply
和OK
按鈕。
最後,忽略完.settings和.project這兩個文件之後,我們可以看到工程下已經沒有他倆了,而且這樣做,以後其它項目在提交的時候也會自動忽略掉.settings和.project這倆文件。
第十步,我們開始把taotao-parent工程的代碼上傳到服務器。首先右鍵taotao-parent工程,然後在其子菜單中點擊提交(C)
,如下圖所示。
正式提交前需要寫下提交的內容,如下圖所示,然後點擊OK
按鈕。
提交完taotao-parent工程的代碼之後,我們來看下SVN服務器上是否已經有我們剛纔上傳的工程了,刷新一下trunk文件夾,發現它下面確實出現了taotao-parent工程了,這已然說明taotao-parent工程的代碼上傳成功了!