01.源代碼管理之SVN命令的使用,Cornerstone基本使用,Xcode Svn的使用

@(〓〓 iOS-實用技術)[代碼管理 Git/SVN]


目錄

  • 01.源代碼管理之SVN命令的使用,Cornerstone基本使用,Xcode Svn的使用
  • 1.UNIX基本命令
    • 1.1 必學命令
    • 1.2 常用命令
    • 1.3 UNIX基本知識
    • 1.4 使用注意
  • 2.掌握-SVN終端演練(個人開發)
    • 2.1 命令格式
    • 2.2 必學命令
    1. SVN命令的使用
    • 3.1 項目經理初始化項目,并上傳到SVN服務器
    • 3.2 程序猿從服務器下載一份完整代碼到本地開始開發
    • 3.3 修改文件提交
    • 3.4 新建文件提交
    • 3.5 刪除文件提交
    • 3.6 常用命令補充
    • 3.7 版本控制中,各個文件狀態參考
    • 3.8 注意事項
  • 4.SVN終端演練(多人開發)
    • 4.0 準備工作
    • 4.1 添加文件同步
    • 4.2 修改文件同步
    • 4.3 刪除文件同步
    • 4.4 多人合作開發中的常見問題
  • 5.版本回退
    • 5.1 版本回退概念以及原因?
    • 5.2 修改了,但未提交的情況下, 回退代碼
    • 5.3 修改了,并且提交了的情況反悔
  • 6.Cornerstone基本使用
    • 6.1 Cornerstone功能介紹
    • 6.2 Cornerstone checkout遠程倉庫遠程倉庫區域
    • 6.3 Cornerstone checkout遠程倉庫本地倉庫區域
    • 6.4 忽略沒必要提交的文件
  • 7.Xcode管理SVN
    • 7.1 基本操作
    • 7.2 版本回退
    • 7.3 超時和沖突
      • 解決超時和沖突的問題
  • 8.SVN目錄規范
  • 9.SVN 托管平臺
    • 9.1 svnspot
    • 9.2 svnchina

1.UNIX基本命令

1.1 必學命令

  • help [子命令] : 查看某一個具體的子命令的使用方法

1.2 常用命令

  • cd path : 將當前路徑切換到path路徑
  • pwd :查看當前所在路徑
  • ls (-a / -l / -G) : 查看當前文件夾下所有文件及文件夾
  • touch filename1 filename2 : 創建一個或者多個文件
  • rm filename : 刪除文件
  • open filename :打開文件
  • cat filename :查看文件內容
  • more filename :分頁查看文件內容
  • mkdir 文件夾名稱 :創建一個文件夾
  • mv oldFilePath newFilePath :移動文件(可借助此命令給文件重命名)

1.3 UNIX基本知識

. 代表當前文件路徑
.. 代表上級目錄
.開頭的文件,代表隱藏文件

  • 顯示隱藏文件
    defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
  • 不顯示隱藏文件
    defaults write com.apple.finder AppleShowAllFiles No && killall Finder

1.4 使用注意

  • 命令和參數之間需要添加空格
  • 如果要使用當前目錄中的文件名,輸入到一半時,按TAB鍵能夠補全.

2.掌握-SVN終端演練(個人開發)

2.1 命令格式

  • SVN命令格式

    命令行格式:
    svn <subcommand> [options] [args]
    svn 子命令 [選項] [參數]
    其中中括號里面的內容可以省略

2.2 必學命令

  • SVN查詢命令help

    svn [子命令] --help
    svn help [子命令]


3. SVN命令的使用

3.1 項目經理初始化項目,并上傳到SVN服務器

  • 1.1 方案1
- (1) 創建項目
- (2) `svn import [path] URL --username=用戶名 --password=密碼 -m "注釋"`
  • 1.2 方案2(推薦)
- (1) `svn checkout URL [path] --username=用戶名 --password=密碼` : 初始化本地倉庫
- (2) 創建項目
- (3) 使用 `svn add` 命令將項目所有文件添加到本地版本控制
- (4) 使用 `svn commit` 提交本地項目到遠程服務器

3.2 程序猿從服務器下載一份完整代碼到本地開始開發

svn checkout URL [path] --username=用戶名 --password=密碼

3.3 修改文件提交

(1) 修改文件

(2) 使用svn commit -m "注釋" : 提交本地文件到服務器

3.4 新建文件提交

(1) 新建文件
(2) 使用 svn add 命令將項目所有文件添加到本地版本控制
(3) 使用 svn commit -m "注釋" : 提交本地項目到遠程服務器

3.5 刪除文件提交

一定不要手動刪除文件
(1) svn remove filename 或者 svn delete filename 從本地版本控制以及對應文件刪除
(2) svn commit -m "注釋" : 提交本地操作到服務器, 使服務器也刪除對應的文件

3.6 常用命令補充

  1. svn status
    查看當前工作空間內, 所有 有變化的文件 的狀態
    如果執行此命令什么都沒輸出, 代表本地沒有東西要提交
  2. svn log
    查看當前版本的操作日志(什么人, 什么時間, 做了什么操作)

3.7 版本控制中,各個文件狀態參考

' ' 沒有修改
'A' 被添加到本地版本控制
'C' 沖突
'D' 被刪除(通過svn命令刪除的文件)
'I' 被忽略
'M' 被修改
'R' 被替換
‘G’ 被合并
‘U’ 已經更新
‘E’ 已經存在
'X' 外部定義創建的版本目錄
'?' 文件沒有被添加到本地版本控制
'!' 文件丟失或者不完整(不是通過svn命令刪除的文件)
'' 受控文件被其他文件阻隔

3.8 注意事項

  • 任何本地的操作, 如果想讓服務器也做同樣的操作, 就直接通過 commit操作 提交到服務器
  • 任何向服務器提交的操作,都要加注釋 添加 -m參數

4.SVN終端演練(多人開發)

4.0 準備工作

CoderOne代表程序猿一,CoderTwo代表程序猿二

CoderOne和CoderTwo,分別使用svn checkout URL [path] --username=用戶名 --password=密碼命令初始化本地版本控制庫

4.1 添加文件同步

  • 1.CoderOne創建文件并提交到服務器

svn add fileName
svn commit -m "新增文件"

  • 2.CoderTwo從服務器更新文件

svn update

4.2 修改文件同步

  • 1.CoderOne修改文件并提交到服務器

svn commit -m "修改文件"

  • 2.CoderTwo從服務器更新文件

svn update

4.3 刪除文件同步

  • 1.CoderOne刪除文件并提交到服務器

svn delete fileName
svn commit -m "刪除文件"

  • 2.CoderTwo從服務器更新文件

svn update

4.4 多人合作開發中的常見問題


  • 1.問題一 : 超時

    • 問題描述:

    當本地文件版本小于服務器文件版本時, 如果要提交本地文件,就會報 out of date 超時錯誤

    • 產生原因:

    SVN通過版本號管理每一個文件,如果一個文件被修改并提交到服務器,那么服務器上的對應文件版本號就會加1, 如果你的版本號小于服務器版本號,就說明,肯定有別人在后來又修改了那個文件

    • 解決方案:

    針對于超時問題,對應的解決方案,就是先從服務器更新下最新版本, 保證本地版本號與服務器版本號一致,這是文件可以提交的前提


  • 2.問題二 : 沖突

    • 問題描述:

    為了解決超時問題,只能更新.而在更新過程中,如果幾個人修改了同一文件的同一行代碼,此時就會產生沖突

    • 產生原因:

    版本控制器不會那么智能, 去決定應該使用誰的代碼作為最終代碼,只能將選擇權拋給用戶,讓用戶解決

    • 解決方案:

    系統提供三種解決方案:
    (p) postpone,
    延遲處理(待會我自己處理), 如果選擇這一種, 會自動生成三個文件供用戶參考決策. 并將沖突部分代碼塊合并到一起. 而一旦解決完畢, 需要執行 svn resolved fileName 來告訴版本控制器已經解決, 然后版本控制器就會自動刪除三個參考文件

    (mc) mine-conflict
    使用我的(本地的), 如果代碼產生沖突, 則以本地代碼為準

    (tc) theirs-conflict
    使用他人的(服務器), 如果代碼產生沖突, 則以服務器代碼為準

<<<<<<< .mine
    此處代表是我的代碼
=======
    此處代表服務器代碼
>>>>>>> .r7

5.版本回退

5.1 版本回退概念以及原因?

概念: 是指將代碼(本地代碼或者服務器代碼), 回退到之前記錄的某一特定版本
原因: 如果代碼做錯了, 想返回之前某個狀態重做;


5.2 修改了,但未提交的情況下, 回退代碼

方案1: (大力推薦)
svn revert (作用:返回到上次提交后版本對應的最原始的狀態)

方案2: (不推薦)
刪除整個項目,重新checkout


5.3 修改了,并且提交了的情況反悔

  • 方案1: 大力推薦

    • svn update
      (作用: 將本地代碼更新到與服務器相同的版本)
    • svn merge 文件名 -r 版本1:版本2
      (作用: 把版本1 -> 版本2 的 diff 作用在當前版本)
    • svn commit -m “本地和服務器都回退到某一指定版本”
      (作用: 讓服務器代碼也退回到之前某個版本狀態)
  • 方案2:

    • svn update -r 指定版本號(此時本地代碼已經變化,但是服務器沒有改變)
      --------以下步驟是為了讓服務器代碼也回滾到以前的版本----------
    • 修改部分文件
    • svn update (此時會產生沖突, 選擇使用自己的代碼即可)
    • 再次提交代碼
  • 方案3:

    • 手動保存需要回退的文件內容
    • 刪除文件,提交到服務器
    • 重新添加文件,上傳到服務器

6.Cornerstone基本使用

  • 1.掌握如何添加遠程代碼倉庫的關聯
  • 2.掌握如何checkout, 下載服務器代碼, 以及初始化本地版本控制庫
  • 3.掌握如何新建文件提交, 修改文件提交, 刪除文件提交
  • 4.掌握版本日志查看, 以及了解版本回退
  • 5.掌握多人開發中的超時問題和沖突問題的解決

6.1 Cornerstone功能介紹

  • 1.Cornerstone界面區域
    • 1.頂部工具條區域
      • 對應svn命令: checkout(檢出),tag(重要版本備份),branch(分支),revert(重置),update(更新),commit(提交),merge(合并),import(導入),export(導出)
    • 2.本地倉庫區域
    • 3.遠程倉庫區域
    • 4.選中倉庫區域
    • 5.底部工具條區域
      • 對應svn命令: add(添加),resolved(解決沖突),log(查看日志)
      • Timeline: 各版本的內容比較
01.Cornerstone功能介紹.png

  • 2.頂部工具條
02.頂部工具條.png

  • 3.底部工具條
03.底部工具條.png

6.2 Cornerstone checkout遠程倉庫遠程倉庫區域

  • checkout遠程倉庫到遠程倉庫區域
04.checkout遠程倉庫遠程倉庫區域.png

6.3 Cornerstone checkout遠程倉庫本地倉庫區域

  • checkout遠程倉庫到本地倉庫區域
05.checkout遠程倉庫本地倉庫區域.png

6.4 忽略沒必要提交的文件

  • 開發經驗: 最好忽略沒必要提交的文件

    • 過濾不需要上傳的文件, 忽略文件(xcuserdata文件夾)

    文件打開狀態
    斷點信息
    文件夾關閉打開狀態

    • 注意:projct setting文件不要忽略

    存放一些文件順序和文件夾結構,文件引用等信息


  • 忽略或刪除文件操作
06.忽略或刪除文件操作.png

7.Xcode管理SVN

  • 1.掌握怎樣添加遠程代碼倉庫的關聯
  • 2.掌握怎樣checkout, 下載服務器代碼, 以及初始化本地版本控制庫
  • 3.掌握怎樣新建文件提交, 修改文件提交, 刪除文件提交
  • 4.掌握版本日志查看, 以及了解版本回退
  • 5.掌握多人開發中的超時問題和沖突問題的解決

7.1 基本操作

  • 1.管理帳號
    • command + ,選中Account
07.管理帳號.png

  • 2.Xcode checkout項目操作
    • 打開Xcode選中Source Control/Check out,選中以上配置項目
    • 根據提示保存到本地文件夾中
08.Xcode checkout項目操作.png

  • 3.Xcode版本比較,責任追究,日志查看
09.Xcode版本比較,責任追究,日志查看.png
  • 4.XCode SVN提交
10.XCode SVN提交.png
  • 5.Xcode中的Source Control介紹
11.Source Control介紹.png

7.2 版本回退


  • 1.單個文件版本回退
12.單個文件版本回退.gif

7.3 超時和沖突

解決超時和沖突的問題

  • 超時提示: 當修改完文件,使用Xcode中的Source Control/Commit提交時彈出以下提示表示超時up to date
13.超時提示.png
  • 解決超時方案

1.先更新Update

14.更新操作.png

2.更新完后,彈出沖突提示

15.沖突提示.png

3.根據實際情況選擇對應的沖突解決方案

16.沖突解決方案.png

4.最后修改完沖突后,點擊Update提交到服務器,必須填寫提交信息,否則無法提交.


8.SVN目錄規范

  • 1.文件目錄作用?

    • trunk : 主干,當前開發項目的主目錄;
      我們之前更新代碼,提交代碼都是在這個文件夾進行操作
    • brannches:分支目錄
      添加非主線功能時使用,開發測試之后,可以合并到主干項目中。修復Bug,研發不確定的新功能都在這里做
    • tags:標記目錄,通常作為重大版本的備份;
      如果有發布版本出現Bug,可以快速的找到對應版本的項目備份,然后開一個分支,進行Bug修復,用于與主干區分
  • 2.掌握利用圖形客戶端版本備份流程

  • 3.了解已發布版本bug解決流程


9.SVN 托管平臺

9.1 svnspot

鏈接: http://code.svnspot.com

9.2 svnchina

鏈接: http://www.svnchina.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 源代碼管理工具-SVN 一. 了解-源代碼管理工具概述 1. 源代碼管理工具的作用?> 能追蹤一個項目從誕生一直到...
    Louis_hey閱讀 11,464評論 1 8
  • iOS 開發 SVN 版本控制器 更多技術交流請加群 iOS技術聯盟 27512466 SVN是Subversio...
    Sunny_Fight閱讀 8,827評論 7 63
  • &開發過程中離不開源代碼的管理, 目地:為了解決在軟件開發過程中,由源代碼引發的各種蛋疼、繁瑣的問題。 目前開發使...
    早起的蟲兒子被鳥吃閱讀 2,460評論 0 16
  • 源代碼管理工具的起源 為什么會出現源代碼管理工具? 為了解決在軟件開發過程中,由源代碼引發的各種蛋疼繁瑣問題 源代...
    小白文_Vincent閱讀 3,214評論 2 8
  • 前往漠河的綠皮火車呼呼的響著,在原野中疾馳而過。我的臉頰緊貼著車壁,冰冷得像我的心。車壁上扭曲的皮質一...
    五月mz閱讀 392評論 2 12