為什么會出現(xiàn)源代碼管理工具蜂大?
為了解決在軟件開發(fā)過程中,由源代碼引發(fā)的各種蛋疼蝶怔、繁瑣的問題
源代碼會引發(fā)哪些問題奶浦?
- 無法后悔:做錯了一個操作后,沒有后悔藥可以吃
- 版本備份:費空間踢星、費時間
- 版本混亂:因版本備份過多造成混亂澳叉,難于找回正確的想要的版本
- 代碼沖突:多人操作同一個文件(團隊開發(fā)中的常見問題)
- 權限控制:無法對源代碼進行精確的權限控制
- 追究責任:出現(xiàn)了嚴重的BUG,無法得知是誰干的沐悦,容易耍賴
幾種源代碼管理器的對比
CVS | SVN | GIT |
---|---|---|
1. 開啟版本控制之門 2. 1990年誕生成洗,“遠古時代”的主流源代碼管理工具 |
1. 全稱是Subversion,集中式版本控制之王者 2. 是CVS的接班人藏否,速度比CVS快瓶殃,功能比CVS多且強大 3. 在國內(nèi)軟件企業(yè)中使用最為普遍(70%~90%) |
1. 一款偉大的分布式源代碼管理工具 2. 目前被越來越多的開源項目使用 3. 不過在國內(nèi)企業(yè)尚未大范圍普及 |
基本操作
-
Checkout
只需做一次 - 每天下班前:
commit
“可運行版本” - 每天上班前:
update
前一天所有代碼
svn基礎操作.png - 還可以對應的設置用戶的
讀/寫
權限
讀取權限.png
使用環(huán)境
要想利用SVN管理源代碼,必須得有2套環(huán)境
服務器
用于存儲客戶端上傳的源代碼
可以在Windows上安裝VisualSVN Server
大部分情況下秕岛,公司的開發(fā)人員不必親自搭建SVN服務器
客戶端
上傳本地的源代碼到服務器碌燕,或者更新服務器的代碼到本地,保持同步
可以在Mac上使用命令行继薛、Versions、Cornerstone愈捅、Xcode
開發(fā)人員就屬于客戶端這個角色
VisualSVN Server 安裝
Visual SVN Server下載地址 :http://www.visualsvn.com/server/download/
安裝1.png
安裝2.png
安裝3.png
安裝4.png
安裝5.png
安裝6.png
安裝7.png
內(nèi)容展示.png
VisualSVN Server 操作
創(chuàng)建代碼倉庫
創(chuàng)建代碼倉庫.png
創(chuàng)建代碼倉庫.2.png
創(chuàng)建代碼倉庫.3.png
創(chuàng)建代碼倉庫.4.png
添加用戶
添加用戶.png
設置權限
設置權限.png
訪問SVN服務器
訪問SVN服務器.png
訪問SVN服務器2.png
SVN客戶端命令
命令 | 簡寫 | 含義 |
---|---|---|
svn checkout | svn co | 下載服務器的代碼到本地 |
svn commit | svnci | 將改動的文件提交到服務器 |
svn update | svn up | 更新服務器的代碼到本地 |
svn add | 向本地的版本控制庫中添加新文件 | |
svn delete svn remove |
svn del svnrm |
從本地的版本控制庫中刪除文件 |
svnmove | 移動文件或者目錄或文件更名 | |
svnmkdir | 創(chuàng)建納入版本控制下的新目錄 | |
svn revert | 撤銷之前的一切修改 | |
svnmerge | 將兩個版本之間的差異合并到當前文件 | |
svn info | 查看文件的詳細信息 | |
svn diff | 查看不同版本的區(qū)別 | |
svn log | 查看日志信息 | |
svn list | 列出版本庫下的文件和目錄列表 | |
svn status | svnst | 查看文件狀態(tài) |
svn help | 獲取幫助信息(比如svn help ci) | |
svnlock | 加鎖 | |
svnunlock | 解鎖 |
檢出
將項目檢出(下載)至本地
svn co URL [PATH]```
注意:這里的中括號[ ]代表可選(可以省略)
示例
svn checkout https://192.168.1.106/svn/Weibo/ /Users/Documents/workspace
* **藍色URL**代表的是:代碼倉庫的遠程地址
* **橙色[PATH]**代表的是:將代碼下載到本地的哪個路徑
* 如果省略橙色的路徑遏考,就下載到命令行當前所在的路徑
#提交
>將改動過的文件提交至服務器
```svn commit -m "注釋" [PATH]
svn ci -m "注釋" [PATH]```
注意:一定要養(yǎng)成寫注釋的良好習慣
示例
svn commit -m “修改了User.m文件” /Users/Desktop/workspace/Weibo/branches/User.m
**橙色[PATH]**代表的是:提交哪個文件到服務器
如果省略**橙色**的路徑,就將命令行所在路徑中所有改動過的文件提交到服務器
#添加
>提交一個新建的文件到服務器蓝谨,需要2個步驟
添加新建的文件到本地的版本控制庫中:`svn add`
提交剛才的添加操作到服務器:`svn commit`
如果直接提交一個沒有添加到本地版本控制庫中的文件灌具,會報下面的錯誤
is not a working copy
>向本地的版本控制庫中添加一個新文件 `svn add [PATH]`
示例
svn add /Users/Desktop/workspace/Weibo/branches/User.m
**橙色[PATH]**代表的是:添加哪個文件到版本控制庫中
#刪除
>刪除服務器上的某個文件,需要做2個步驟
將文件從本地的版本控制庫中移除:`svn delete 譬巫、svn remove`
提交剛才的刪除操作到服務器:`svn commit`
將文件從本地的版本控制庫中移除: `svn delete PATH`
示例
svn delete /Users/Desktop/workspace/Weibo/branches/User.m
**橙色**代表的是:將哪個文件從版本控制庫中移除
# 更新
>將服務器的最新代碼更新到本地 `svn update [PATH]`
示例
svn update /Users/lnj/Desktop/workspace/Weibo/branches/User.m
**橙色[PATH]**代表的是:更新哪個文件的內(nèi)容
如果省略橙色的路徑咖楣,就更新命令行所在路徑的所有內(nèi)容
>將文件恢復至某個版本 `svn update -r 版本號 [PATH]`
#常見問題總結(jié)
|流程|命令|
|---|---|
|第一次使用,下載公司的代碼到電腦上|svn checkout|
|修改了某個早已存在的舊文件芦昔,然后提交到服務器|svn commit|
|提交一個自己新建的文件到服務器|svn add --> svn commit|
|刪除一個早已存在的舊文件诱贿,然后同步到服務器上|svn delete --> svn commit|
|將其他同事提交的新代碼更新到自己電腦上|svn update|
|不小心寫錯了很多東西,想撤銷所寫的東西(還未把修改提交到服務器)|svn revert|
|不小心刪錯了文件,想把文件恢復回來(還未把刪除提交到服務器)|svn revert|
|不小心寫錯了很多東西珠十,想撤銷所寫的東西(已經(jīng)把修改提交到服務器)|
psvn update -r 版本號|
|不小心刪錯了文件料扰,想把文件恢復回來(已經(jīng)把刪除提交到服務器)|svn update -r 版本號|
# 注意
* `.svn`這個隱藏目錄記錄著非常關鍵的信息
* 千萬不要手工修改或刪除這個 `.svn`隱藏目錄和里面的文件!
否則將會導致本地的工作副本被破壞焙蹭,無法再進行操作
#目錄規(guī)范
正規(guī)項目的SVN目錄結(jié)構一般有3個文件夾
* trunk:`主干`晒杈,當前開發(fā)項目的`主目錄`
* branches:`分支`目錄,添加`非主線功能`時使用孔厉,開發(fā)測試之后拯钻,可以合并到主干項目中
*tags:`標記`目錄,通常作為重大版本的`備份`
#使用SVN小建議
1. 經(jīng)常更新:降低沖突的可能性
2. 提交前需在本機測試通過:降低將問題代碼傳到版本庫
3. 提交時一定寫備注(注釋):方便其他員工查看和自己以后回顧
4. 對于不需要提交的文件不要提交到版本庫
提示
1. 每次修改之前最好先更新
2.每天下班前提交當天運行通過的代碼
3.每天上班第一件事情更新前一天的代碼