1. 程式人生 > >最課程階段大作業之01:使用SVN實現版本控制

最課程階段大作業之01:使用SVN實現版本控制

       版本控制在友軍那裡都是放在整個培訓的最後階段才開始講的,但我們打算放到SE階段。與其匆匆在專案實戰階段弄個半生不熟,然後進入實際工作中接受他人對你的懷疑,不如……早死早超生~~~。

       可是,我們畢竟現在才剛學了Java一個月,程式碼都寫的不溜呢,甚至都不知道目前掌握的知識能做點撒實際有用的工作,怎麼就來個版本控制?版本控制是撒?

       抄一段百科的版本控制解釋:版本控制是指對軟體開發過程中各種程式程式碼、配置檔案及說明文件等檔案變更的管理,是軟體配置管理的核心思想之一。

       看到沒,版本控制是一種思想,但是程式猿不跟你講思想,跟你講實實在在的東西,所以,實現這個思想的一定是個實實在在的工具。在最課程的整個學習過程中,商業專案實戰階段程式碼的版本控制工具,我們使用

SVN。而,個人工具程式碼集,我們要求使用git,放到github中。

       為什麼要現在就開始體驗版本控制呢?因為我曾經詢問過很多學員,大家對於畢業後軟體公司的真實開發流程很茫然。而最課程想要帶你做的,就是提前適應真實的開發,讓學員從儘可能早的時刻,就參與到需求管理、版本控制、同行review、解決程式碼衝突、移行、測試、釋出的整個過程。

       我們在培訓班學習,重點絕不應該僅僅是編碼知識(那還不如去自學看視訊),而應該是如何使用學到的知識應用到真實的開發中。

       來提前感知下,整個開發流程大概是個什麼樣子的吧

軟體開發中的精簡併行過程(SPP)

       以上整個

SPP過程包括:6大階段、12個過程域、28個規程、31個文件模板。你有沒有準備好到我們最課程來感知一下呢?

       不管怎麼樣,讓我們先首先學習這整個過程中最重要也是最基礎的一環:版本控制吧。

1. 什麼是版本控制

       上文已經簡單介紹過了,現在我們用白話來再介紹一下它有什麼用:

       首先,能將程式碼提交到伺服器,這樣本機即使被炸掉了,或者你突然離職消失了,只要伺服器沒被老闆娘砸掉(什麼,有這種事情?是的,回頭給你們講講我一個客戶的故事),公司的程式碼就都還在;

       其次,能將程式碼回退到以前的任何一次提交上。這是什麼意思呢?比如,你一個月前寫了一個功能:讓

APP的背景隨手機殼顏色的變化而變化,但是一個禮拜前你按照產品經理的要求把功能修改為:讓APP的背景隨我心情的變化而變化。但是,怎麼又一個但是?但是就是這麼任性,但是這在實際的開發中就是這麼容易出現。但是現在產品經理跑來告訴你:我不想要你上週剛實現的功能了,你把功能回退到一個月前的那個背景隨手機殼顏色變化而變化的功能吧。此刻,你心中的心情應該是這樣的:

       要知道,程式碼在本機可是已經覆蓋了,這個時候,版本控制管理工具就可以發揮作用了,你可以將程式碼回退到歷史上任何一個時刻。

       這裡來個小插曲,要想不被產品經理欺負,可以嘗試準備如下工具:

       最後,版本控制的另一個重要功能是,任何稍微大型點的軟體,都不可能是一個人完成的,所以,我們需要一個工具將團隊成員的程式碼合併到一起,看上去像是一個人寫的一樣。所以,程式碼的提交和合並也是我們真實開發的日常。

       好了,暫時對於初學者來說,就講到這吧。目前夠用了。

2. SVN介紹

3. Svn伺服器端安裝

       下載回來大概長這樣

      雙擊安裝

       如上選擇,next

       選擇標準安裝

       注意哦,預設是不需要https的,如果有同學手賤想嘗試https,也是可以的。但我牆裂建議你不選擇https,因為……在區域網中,沒撒特別的意義。而且,在整個學習的過程中,還要求其他同學連線到你的原始碼伺服器上,選擇了https的話,有些同學的電腦可能會連不上你的電腦。

       安裝完畢在系統服務裡有svn的服務,如下:

       伺服器端在公司裡,是真的安裝在一臺伺服器上的。在我們的學習過程中,那就跟客戶端一樣安裝在你自己的學習機上就行了。

4. Svn客戶端安裝

       客戶端大致長如下這樣

       我們一路next下去就行,沒什麼特別需要注意的地方。

5. 配置svn server

       開啟伺服器管理介面,新增使用者,按提示來,新增上你自己的使用者名稱,比如:baobao

       倉庫有了,就要給這個倉庫分配許可權,因為,你可不想讓任何人都接觸到程式碼。來吧,給你剛建立的使用者新增程式碼的讀寫許可權吧:

       完畢。

6. 訪問svn

       訪問svn其實就跟訪問網站一樣,也是有一個地址的,但是地址怎麼得到呢?看下圖

       然後,在本地任意資料夾中點右鍵

       貼上剛才的地址,回車:

       你就可以看到下面的介面了

       這裡預設已經建立了3個目錄,每個目錄是什麼時候,我們會在專案管理的時候講到,這裡,我們只需要記住,我們所有的程式碼都放到trunk中就行了。

7. Elicpse外掛安裝

       那接下來要怎麼把程式碼放到伺服器上呢?一種方式是直接拖動檔案到上面的視窗中去,但是我們平時開發是在IDE中的(Ps:目前是eclipse,未來是idea)。那能不能直接從eclipse中提交程式碼到伺服器呢?

       當然是可以的。

       但是,要完成這個功能,我們就需要給eclipse裝外掛。這個外掛叫subversive。下載地址在:

       那怎麼安裝呢?首先是解壓,然後把下面兩個目錄複製到eclipse對應的目錄中去就可以了。

       然後,記得重啟elicpse。

8. SUBVERSIVE CONNECTOR 安裝

       但是,事情並不像我們想象的那麼簡單。要說怎麼java程式設計師這麼苦逼呢。當我們以為可以使用svn的時候,我們還需要一個connector,下載地址在:

       由於我們的subversive是3.0,故下載這個

       同樣,安裝也是執行目錄copy

       重啟eclipse,然後檢查下:

       如果像上圖一樣,該有的都有了,那麼我們的安裝就成功了。

9. 程式碼提交

       首先,像下圖那樣進行選擇

       然後,在該頁面new一個倉儲,輸入svn地址,得到:

       在trunk下建立一個資料夾,

       Ps1,這個資料夾最好和咱們在eclipse中建立的專案名一致);

       Ps2,我示例中的專案叫:parent;

       回到專案檢視,在專案上share project

       接著

       注意路徑選擇,路徑的命名首先要定位到trunk下,然後再加上專案的名

       接下來,是提交程式碼。在專案名上面,右鍵->team->commit,出現如下介面

       首先,讓我們寫上註釋。注意,註釋寫的越詳細越好,把你這次提交完成了什麼功能都寫上,免得我們將來檢視歷史的時候,不知道本次提交是幹什麼用的。

       其次,我們是提交全部檔案嗎?顯然也不是,除了程式碼檔案外,一些配置檔案或者附屬檔案我們不應該提交上來。

       但是,每次去提交的時候,選擇提交的檔案太麻煩了,那有沒有一種一次性批量忽略的辦法呢?當然是有的,如下圖:

       要忽略這幾個字尾:.settings,.project,.classpath

       提交後,在eclipse的專案上,會有受控標識,類似如下:

10. 檢視歷史

       在專案上右鍵->team->show history,看看會出現什麼?

       好了,以上是我們為了完成第一次大作業所要儲備的版本控制的知識。更多的功能,等我們慢慢後期挖掘中。

華麗分割線

===========================================================

1:最課程JavaEE+網際網路分散式新技術開班進行中,來http://www.zuikc.com來報名吧;

2:更多技術文章和開班資訊請加入,QQ群:

3:本文所涉及要下載的軟體可以進群向老師索取;

4:SVN的教學視訊可以進群向老師索取;

相關推薦

課程階段作業01使用SVN實現版本控制

       版本控制在友軍那裡都是放在整個培訓的最後階段才開始講的,但我們打算放到SE階段。與其匆匆在專案實戰階段弄個半生不熟,然後進入實際工作中接受他人對你的懷疑,不如……早死早超生~~~。        可是,我們畢竟現在才剛學了Java一個月,程式碼都寫的不溜呢,甚至都不知道目前掌握的知識能做點撒實

課程階段作業06U度節能平臺控制系統

除了網際網路專案,當今社會還有一個概念非常流行,那就是:物聯網。什麼是物聯網?物聯網是通過感測裝置,按約定的協議,把任意物品與網際網路相連線,進行資訊交換和通訊,以實現智慧化識別、定位、跟蹤、監控和管理的一種網路概念。物聯網是網際網路的一種延伸,將原本使用者與使用者的互動,延伸和擴充套件到物品與物品之間。

課程階段作業04毫無用處的學生管理系統

前面幾期就業班學生知道,我在做簡歷指導時說過:如果你的簡歷中專案經歷寫的是“學生管理系統”、“**辦公自動化”這樣的系統,那麼就等於告訴面試官:你沒有專案經驗。 對於面試找工作,學生管理系統這樣的專案簡直毫無用處,甚至是減分項。如果你一定要說你實現了一個NB的學生管理系統,那麼就需要拿出你在GITHUB上的

課程階段作業03用半天實現淘寶首頁?

       每一個在最課程學習的學生,到了最後幾乎都會來問我一個問題:老師,是不是實際的開發中,都會有一個前端開發工程師,把靜態頁面做好了,然後才交給我們後臺開發啊?        我只能說:你想多了。        我知道你這麼問的意思,HTML+CSS+各類前端框架學習起來太繁瑣了,是不是就沒有

課程階段作業02實現自己的利息計算器

       上文描述了版本控制後,此篇才真正到了作業本身。我們第一次大作業要完成的是一個利息計算器。        利息計算器或者說融資計算器有自己的圖形化版本,每一個學習的同學如果想要直觀的瞭解下功能,可以管自己的老師要或者加文末的QQ群向老師索取。不過我們今天要實現的是非圖形化的介面,是CS版本的,簡

課程階段作業05汙水處理系統以及百度地圖

吃著火鍋唱著歌,我們的課程已經進行了兩個月了,現在,我們終於有能力進行真正的軟體開發了。 往期學完課程面試歸來的同學,都知道有一句話:“面試造航母,實際工作擰螺絲釘”。 很慶幸的是,到目前為止,你已經掌握了大部分擰螺絲釘需要的知識了,這些知識就是:JavaSE+HTML+CSS+JavaScript+JQ

斯坦福深度學習課程cs231n assignment1作業筆記三softmax實現相關

任務 實現向量化的損失函式 實現向量化的梯度計算 分析梯度與數值梯度的驗證 使用驗證集來選擇超引數 使用SGD優化方法 視覺化權重 理論知識 softmax損失函式 令W為權重矩陣,大小為D×C;x為輸入,大小為1×D;b為偏置項,大小為1×C。那麼模型的輸

斯坦福深度學習課程cs231n assignment1作業筆記二SVM實現相關

前言 本次作業需要完成: 實現SVM損失函式,並且是完全向量化的 實現相關的梯度計算,也是向量化的 使用數值梯度驗證梯度是否正確 使用驗證集來選擇一組好的學習率以及正則化係數 使用SGD方法優化loss 視覺化最終的權重 程式碼實現 使用for迴圈計算SVM

面象對象設計6原則裏氏替換原則

c# 父類 之間 pre 如果 提升 lis 存在 全部 裏氏替換原則(LSP),The Liskov Substitution Principle 定義 所有引用基類的地方必須能透明地引用其子類的對象,即子類可以拓展父類的功能,但不能修改父類已有的功能。 也就是說在父類

面象對象設計6原則開放封閉原則

bug www 反轉 對象 方法 接口 下層 一個 影響 定義 一個軟件的實體,包括類、方法、模塊、應該對擴展開放,對修改關閉。 也就是說一個軟件的實體應該通過擴展的方式來修改變化,而不是修改已有實體源代碼。 開放封閉原則也是最基本需要遵守的原則,我們應該盡量保證系統的穩

面象對象設計6原則迪米特原則

可能性 也說 理論 依賴倒置原則 程序 可能 下層 優點 解決 迪米特原則(LOD),The Law Of Demeter,也稱為最少知識原則 定義 一個對象應該對其他對象有最少的了解。 也就是說一個類耦合和調用一個類應該知道的最少,它只關心被耦合和調用的類的公共方法

爬蟲作業廣商足球快訊(爬取足球新聞)

描述 brush slist white mat 完整 tps num pat 1.選一個自己感興趣的主題(所有人不能雷同)。 主題:爬取足球新聞相關信息 2.用python 編寫爬蟲程序,從網絡上爬取相關主題的數據。 3.對爬了的數據進行文本分析,生成詞雲。 txt

作業zabbix

.sql libevent -c inpu hash openipmi sqli web頁面 har 1、二進制安裝JDK(1.8):用於java-geteway上傳JDK到/usr/local/src/目錄下,解壓: [root@localhost src]# tar z

程式設計菜鳥到C語言程式(十二)

第十二天學習精要 遞迴初步 遞迴 一個函式,自己呼叫自己,就是遞迴。 # include <iostream> using namespace std; int factorial(int n) // 函式返回n的階乘 { if (n ==

程式設計菜鳥到計算機網路(一)

計算機網路概述 計算機網路基本概念 什麼是計算機網路? 計算機網路=通訊技術+計算機技術,即計算機網路是通訊技術與計算機技術緊密結合的 產物。 計算機網路就是一種通訊網路: 定義:計算機網路就是互連的、 自治的計算機集合。

python正則表示式作業模擬計算器(29行程式碼)

今天很開心,完成了一項艱鉅的作業,剛開始見到這個作業時我是有些懵逼的,一心想著用findall精準匹配,但是發現匹配後無法處理資料,後來看了點兒老師的思路——用search一個一個地匹配然後替換,然後

MongoDB簡單的入門教程使用Spring Boot操作MongoDB

Spring Boot 是一個輕量級框架,可以完成基於 Spring 的應用程式的大部分配置工作。Spring Boot的目的是提供一組工具,以便快速構建容易配置的Spring應用程式,省去大量傳統Spring專案的繁瑣配置。 MongoDB是一個基於分散式檔

程式設計菜鳥到演算法基礎(一)

第一天學習精要 列舉 完美立方 列舉:基於逐個嘗試答案的一種問題求解策略。 例題1:完美立方 題目描述 形如

程式設計菜鳥到C語言程式(五)

第五天學習精要 關係運算符和邏輯表示式 關係運算符 六種關係運算符用於數值的比較:相等 ==、不等 !=、大於 >、小於 <、大於等於 >=、小於等於 <=。 比較的結果是bool型別,成立則為true,反之為false。

程式設計菜鳥到C語言程式(六)

第六天學習精要 if語句 條件分支結構之if 語句 有時,並非所有的程式語句都要被順序執行到,會希望滿足某種條件就執行這部分語句,滿足另一條件就執行另一部分語句,這就需要“條件分支結構”。 依次計算表示式1、表示式2…只要碰到一個表示式i為真,則執行語