久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用SVN進行團隊開發(fā)協(xié)作生命周期詳解

 felwell 2019-05-29

前言

查找了SVN的相關知識無論是園子里還是百度都只有一些理論,而有實踐教程的都是點到為止,,并沒有一個完整的關于團隊如何使用SVN協(xié)同工作的教程,,因此寫下該篇希望能對大家起到一點幫助。

面向人群

本教程面向有一定svn基礎的,,而且之前都是單人開發(fā),,對團隊開發(fā)如何使用SVN并不了解,但急需了解的的同學,。

背景

由于團隊開發(fā)是如果沒有正確的使用SVN經(jīng)常出現(xiàn)A在做一個需求涉及到a,b項目,,而B再做另一個項目涉及到a,c項目。
然后A做完了直接提交了代碼,,但是并未經(jīng)過測試,。B的代碼測試完畢然后提交準備投產(chǎn),然后發(fā)現(xiàn)A已經(jīng)提交了代碼,,所以他就獲取了A的代碼,,編譯后如果不詢問A是否代碼經(jīng)過測試,,可能直接投產(chǎn)了,然后投產(chǎn)出現(xiàn)了問題,?;蛘咧懒薃的代碼還未測試,必須等測試通過后才能投產(chǎn),。否則只能恢復到測試完的代碼進行投產(chǎn),。最后甚至有可能就忘記提交了。

解決方案

規(guī)定代碼必須經(jīng)過測試后才能提交,,這一定程度上解決了這個問題,,但是這就偏離了版本控制的初衷而且每次開發(fā)代碼必須一次性開發(fā)完成,若開發(fā)中途發(fā)現(xiàn)問題,,導致一部分代碼需要重打,,那么就不能很好的回滾。

團隊開發(fā)生命周期

創(chuàng)建新項目

以下操作都是使用VS的VisualSVN插件,,其他插件使用方法都是差不多的,,在文件資源管理器中使用方法原理是一樣的。

首先針對我們的SVNTest1項目

1-2017115191232

  1. 在項目右擊菜單中將整個項目加入到SVN中

    2-2017115191532

  2. 首選選擇需要加入的根目錄點擊下一步

    3

  3. 新項目選擇新建倉庫,若已經(jīng)在SVN服務器創(chuàng)建目錄接口就選擇添加存在項目

    4

  4. 選擇SVN的路徑

    5

    在svn中我們創(chuàng)建的倉庫下包含trunk,,branches和tags三個文件夾,,trunk為主線,branches為分支而tags則是標簽
    trunk:用于存放主線代碼,,我們不能在這里進行開發(fā)
    branches:用于并行開發(fā)使用,,每個需求或者bug修復都需要創(chuàng)建一個分支
    tags:這里的代碼不能編輯,只可讀取,,每隔標志性版本我們可以在tags中創(chuàng)建一個標簽,,如V1.0正式版,那么當代碼合并到trunk后可以創(chuàng)建一個標簽,,如果接下來開發(fā)v2.0版本,,而突然發(fā)現(xiàn)v1.0有個bug,就可以將次代碼創(chuàng)建一個新分支用于修復bug,,修復完成后可以合并到主線任務中并創(chuàng)建v1.1標簽
    我們可以使用2種結構開發(fā)我們的項目,,第一種是每個項目文件夾下創(chuàng)建這三個目錄,然后進行開發(fā),;第二種方式在根目錄下就創(chuàng)建三個文件夾,,然后在這三個文件夾下有多個項目。這里我用第一種方式,,兩種方式只是結構不同,,原理一樣的

  5. 如果需要驗證輸入用戶名和密碼,然后點擊導入,新項目就導入成功

    6
    7
    8

  6. 導入成功只是在我們本地SVN緩存中導入成功,我們必須提交到服務器中

    9
    10
    11

  7. 我們可以將bin和obj這些目錄忽略掉,,否則每次編譯提交后他人更新都會有沖突,,在VisualSVN插件提交默認已經(jīng)忽略了這兩個目錄因此直接提交即可,。

    12
    13
    14
    15

創(chuàng)建分支

現(xiàn)在主線已經(jīng)創(chuàng)建好了 ,如果我們要進行開發(fā)或者修復bug,,請不要在主線上面開發(fā),,我們必須先創(chuàng)建分支,然后再分支上進行開發(fā),,這樣就不會影響到主線的代碼,,當分支開發(fā)完成并測試通過后可以合并到主線,同時若分支沒用即可刪除,。

16

在工具欄中有常用的按鈕,,方便我們使用,如果使用其他SVN插件也是類似的,,我們也可以直接在項目右擊進行操作

17

不知為何在菜單中沒有創(chuàng)建分支選項,,我們直接在工具欄中創(chuàng)建,在文件夾右擊創(chuàng)建分支也是一樣的

18
19

如果否選切換工作副本至新分支,,那么創(chuàng)建完會自動切換,,如果沒有鉤,那么我們還是在原來的主線,,我們暫時不勾選手動切換分支

20

創(chuàng)建完成由于我們沒有勾選自動切換,,svn就提示了我們手動切換,同時SVN服務器中也有了新的分支

21

切換分支

22

默認只有主線,這里我們選擇切換到其他分支

23
24
25

現(xiàn)在我們已經(jīng)切換到新的v0.1的分支了,,現(xiàn)在假設person2同學需要對對該項目進行同步開發(fā),,因此我們希望每個人能區(qū)分開來,我們可以將項目根據(jù)人來區(qū)分,,如/Test/branches/person1/v0.1,/Test/branches/person1/v0.1-bug1,/Test/branches/person2/v0.1等,,也可以根據(jù)項目來區(qū)分,如如/Test/branches/v0.1/person1/xxx,/Test/branches/v0.1/person1/fix-bug1,/Test/branches/v0.1/person2`等,。只要決定一個規(guī)范既可,。

  1. 現(xiàn)在我們約定以/Test/branches/v0.1/person1的方式來存放,,那么首先person1可以創(chuàng)建一個新的分支進行開發(fā),。

    26

  2. 模擬person2同學并行開發(fā),由于B同學需要獲取全新的項目,,因此需要首先從版本庫中獲取該項目

    27
    28
    29

    現(xiàn)在B同學需要創(chuàng)建一個新的分支到person2目錄

    30

    此時目錄結構如圖所示,為了避免干擾項,,我已從svn服務器刪除了第一個創(chuàng)建的分支

    31

  3. 現(xiàn)在person1和person2可以獨立進行開發(fā)并提交代碼到自己的分支上而不會影響主線,更不會影響其他人的開發(fā)了

    35
    36
    37

    我們發(fā)現(xiàn)他們可以正常提交而無需更新,因為實際他們是在不同的分支工作,,當然不會產(chǎn)生影響

    • person1添加了一個文件1.cs
      32
      33
      34

    • person2添加了一個文件2.cs

合并代碼

假設person1已經(jīng)開發(fā)完成并通過測試需要將分支合并到主線
  1. 切換到主線

  2. 點擊合并

    39
    40
    41
    42

    到此為止已經(jīng)將分支合并到我們的主線,,但是這里的主線只是我們本地的主線(svn會將分支保存到不同的目錄,因此我們本地不同分支會存放在不同的臨時目錄的,,在svn文件夾下,,不要手動去修改該目錄)

    43

  3. 將本地主線提交到服務器

    44

    我們可以看到合并到主線后,,我們的解決方案管理器有些黃色的圓點代表修改,我們看下svn服務器

    45

    發(fā)現(xiàn)我們雖然提交了代碼實際服務器主線還并沒有1.cs文件

    46
    47
    48

    提交成功后發(fā)現(xiàn)svn服務器主線已經(jīng)有該文件

    4. person2已經(jīng)開發(fā)完成并通過測試需要將分支合并到主線

    5. person2需要切換到主線

    49

    6. 切換完點擊合并

    50
    51
    52
    53

    會發(fā)先有沖突,因為person1已經(jīng)提交了代碼,,而你本地的代碼并不是最新代碼,所以合并之前先將主線代碼合并到分支,,然后分支解決沖突后提交到服務器分支。再重新切換到主線進行分支合并,,此時完整的流程即走完

  4. 以上3個步驟忽略,,不要直接切換主線,而是提交代碼前先保證分支代碼最新,,首先將主線合并到分支

    54
    55
    56

  5. 解決沖突后,,即可提交代碼

    57

    代碼還未提交時SVN服務器person2目錄實際還沒有1.cs文件

    58

    提交代碼后就有了

    59

  6. 合并分支到主線

    60
    61
    62
    63

  7. 提交主線代碼

    64

    由于person1并未獲取person2的代碼因此person1實際只有1.cs,而person2由于在person1提交的代碼后更新了主線代碼,因此perosn2有1.cs和2.cs

正式版本發(fā)布

版本發(fā)布只針對trunk的目錄進行發(fā)布
現(xiàn)在開發(fā)任務已經(jīng)完成,,我們認為這個版本已經(jīng)很成熟,,我們希望把這個版本定為v1.0,我們現(xiàn)在可以刪除分支,同時將該版本打個標記

  1. 刪除分支

    直接刪除無用分支即可
    65

  2. 做v1.0的標記

    標記其實就是一個分支,,只不過tags文件夾應該設置為只讀權限

    66

    切換到主線切出一個tags

    67
    68

bug修復

現(xiàn)在我們可能在開發(fā)2.*的版本了,,突然發(fā)現(xiàn)1.0的版本有bug

  1. 從tags/v1.0版本中切除一個分支修復bug

    69
    70

  2. 修復bug后做一個v1.1的tags,或者根據(jù)情況合并當trunk

    71
    72

  3. 修復bug后合并到trunk分支

    73
    74
    75

結束語

至此整個團隊開發(fā)生命周期就講解完畢,,接下來就是不斷佚代的過程,。
以上是我個人理解,如果看來此篇文章略有所學,,請支持下,,如若有誤煩請指正。

PS: 第一次用vs code編寫,還是挺好用的(●ˇ?ˇ●)

76



    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多