SVN 使用

為什么會出現(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.每天上班第一件事情更新前一天的代碼
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撰豺,一起剝皮案震驚了整個濱河市粪般,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌郑趁,老刑警劉巖腰素,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撩嚼,居然都是意外死亡按咒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門梭纹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躲惰,“玉大人,你說我怎么就攤上這事变抽〈〔Γ” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵绍载,是天一觀的道長诡宗。 經(jīng)常有香客問我,道長击儡,這世上最難降的妖魔是什么塔沃? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮阳谍,結(jié)果婚禮上蛀柴,老公的妹妹穿的比我還像新娘。我一直安慰自己矫夯,他們只是感情好鸽疾,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著训貌,像睡著了一般制肮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天弄企,我揣著相機與錄音超燃,去河邊找鬼。 笑死拘领,一個胖子當著我的面吹牛意乓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播约素,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼届良,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了圣猎?” 一聲冷哼從身側(cè)響起士葫,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎送悔,沒想到半個月后慢显,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡欠啤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年荚藻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洁段。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡应狱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祠丝,到底是詐尸還是另有隱情疾呻,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布写半,位于F島的核電站岸蜗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叠蝇。R本人自食惡果不足惜散吵,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蟆肆。 院中可真熱鬧,春花似錦晦款、人聲如沸炎功。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛇损。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淤齐,已是汗流浹背股囊。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留更啄,地道東北人稚疹。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像祭务,于是被迫代替她去往敵國和親内狗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • SVN版本:1.5 及更新版本 名詞說明: WC:Working Copy 你的工作區(qū) Versioned:受控的...
    日風和閱讀 4,288評論 1 23
  • iOS 開發(fā) SVN 版本控制器 更多技術交流請加群 iOS技術聯(lián)盟 27512466 SVN是Subversio...
    Sunny_Fight閱讀 8,786評論 7 63
  • 前言: 1.本文講的是SVN版本控制工具常用功能义锥,包括命令行和界面化操作2.如果想了解GIT使用方式柳沙,請移步這里 ...
    珍此良辰閱讀 17,585評論 10 57
  • 一. SVN和Git區(qū)別 SVN : 集中式的版本控制工具Git : 分布式的版本控制工具 二. SVN介紹 SV...
    奮斗的蝸牛閱讀 3,083評論 0 1
  • 好久沒有寫點什么了赂鲤!忙碌、壓力柱恤,時刻催人匆忙趕路数初,來不及思考。終于膨更,2016年如此曲曲折折的一年終究溜走了妙真。 出于...
    楓霜寒客閱讀 506評論 1 1