使用場景:
假如你的專案(這裡指的是手機用戶端專案)的某個版本(例如1.0版本)已經完成開發、測試並且已經上線了,接下來接到新的需求,新需求的開發需要修改多個文件中的程式碼,當需求已經開始開發一段時間的時候,突然接到使用者或測試人員的回饋,專案中有個重大bug需要緊急修復,並且要求bug修復後要立即上線;此時該怎麼修復bug呢?是在目前已經開發新需求的基礎上進行修復嗎?答案是否定的,原因是:如果是在已經開發新需求的基礎上進行修復bug,那麼新需求還沒開發好,更沒有測試,怎麼立刻(或最可能快的)上線? !再次如果新功能的開發和bug修復的程式碼都牽涉到同一段程式碼衝突了怎麼辦 。很顯然無法在目前開發的程式碼基礎上進行bug修復工作完美的解決方案是:在當時完成的那個版本中進行bug fix,這樣帶來的好處是:
1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間
2:bug修復是在原來上線的那個版本進行修復的,引起新bug的風險小,如果是在新需求的基礎上修復bug, 那麼新功能可能會帶來新的bug
相關推薦:《SVN影片教學》
#SVN倉庫目錄結構Repository:
(1)trunk
(2)tags
(3)branches
trunk(主幹|主線) branchs(分支) tags(標記)
tag(標記):用於標記某個可用的版本,可以標記已經上線發布的版本,也可以標記正在測試的版本,通常是唯讀的。
一:建立倉庫
##---> TortoiseSVN
---> Create repository here(建立倉庫這裡)
---> Create folder structure(建立檔案結構) ---> Start Repobrowser(開始倉庫瀏覽) --- > Ok
--->repo-browser--> URL: file:///D:/TortoiseSVN/ Repository/Repo-iOS ---> Ok
---> 選取trunk資料夾右鍵##---> Add folder...常見問題
》#三:Check Out ######1. 在電腦任一位置創建一個存放項目程式碼的目錄,例如:D:\TortoiseSVN\Repository\Source#######2. 將程式碼檢出到該位置############## 四:開發週期######1. 在目錄D:\TortoiseSVN\Repository\Source\trunk\MyAppProject上進行開發,注意是在trunk主線上######因為專案剛建立,這是在開發新功能,所以要在主線上開發#########2. 開發一段時間後,經過測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController檔案中一段程式碼如下# ########[objc] view plain copy###### 在CODE上查看程式碼片派生到我的程式碼片###- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 0; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End }
3. 在D:\TortoiseSVN\Repository\Source\tags 目錄下新建一個目錄:1.0,並將該目錄提交到SVN上,然後右鍵 D:\TortoiseSVN\Repository\Source\trunk\MyAppProject該目錄---> TortoiseSVN---->Branch/tag... -----> To Path :/tags/1.0/MyAppProject 並選取Head revision in repository ---> Ok此時Source/ tags/1.0 目錄中沒有任何內容,需要更新一下該目錄做update操作。更新之後看到一個完整的專案原始碼保存到該目錄中(該目錄下的源碼可看做是trunk目錄下版本為1.0的一個副本),查看一下/tags/1.0/HomeViewController中的viewDidLoad和trunk/MyAppProject /HomeViewController中的viewDidLoad程式碼完全一樣。
4. 開發下一階段的新需求,開發中ing
5. 使用者或測試人員回饋應用程式有重大bug,需要立即修復該bug並儘快上線, 此時程式設計師需要為tags/1.0 下的MyAppProject 打一個分支branch,
操作流程如下:選取Source/ tags/1.0/MyAppProject 右鍵TortoiseSVN---->Branch/tag... -----> To Path:/branches/MyAppProject ---> Ok
此時看D: \TortoiseSVN\Repository\Source\branches目錄下仍然沒有任何內容,也需要update一下,更新之後發現該目錄下
也出現一個完整的項目代碼(該代碼可看做是tags/1.0/ MyAppProject的一個副本),注意打分支和打標記都是使用Branch/tag...選單,不同的是To Path 的目錄不一樣,圖解看打分支的圖,只是to path 值不一樣,此時branches /MyAppProject/HomeViewController中的viewDidLoad和tags/1.0/MyAppProject/HomeViewController中的viewDidLoad程式碼完全一致。
6. 切換工作空間,使用Xcode|Eclipse整合工具開啟/branches/MyAppProject下的項目,然後在此基礎上調試並修復bug,注意打開的必須是分支中的項目
7. bug 修復好後,先提交修改的文件,並進行客戶端App上線,上線完成後再將branches/MyAppProject/打個tag到1.0.1目錄下(tags/1.0.1) (操作步驟同步驟3),tag操作完成後,可以看到tags/1.0.1/HomeViewController.viewDidLoad 和 branches/ MyAppProject/HomeViewController.viewDidLoad是完全一致的,將branches/MyAppProject打一個新的tag是以便於下次在此基礎上再次修復bug,至此bug修復已經完成;修復bug後的程式碼如下:
#[objc] view plain copy
在CODE上查看程式碼片衍生到我的程式碼片
rrreee8. 接下來將branch和trunk進行合併,操作步驟如下:
右鍵branches/MyAppProject ------>TortoiseSVN
----> Merge...
---> Merge a range of revisions
----> Next ---> URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject
----> Next
- ---> Merge
#9. trunk和branches進行合併步驟如下,
右鍵/turnk/MyAppProject ----> Merge... -----> Merge a range of revisions -----> Next
-----> ; URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/branches/MyAppProject
步驟同上,只是URL to merge from 的路徑不一樣。合併完成後,請查看/trunk/MyAppProject/HomeViewController/viewDidLoad方法如下:
[objc] view plain copy
在CODE上檢視程式碼片衍生到我的程式碼片
- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 10; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End NSLog(@"1.0 版本闪退bug 已修复, 程序出现除0异常"); }
10. 此時合併徹底結束,branches目錄下的源碼如果不想要也可以刪掉,接著修改bug的這位程式設計師需要切換工作空間到主線上來,使用Xcode重新開啟trunk/ MyAppProject項目,接著開發尚未完成的新功能。 SVN目錄如下:
說明:
1. 分支開發與主幹發展是兩個完全獨立的過程,兩者可以同時進行開發
2. 因分支和主幹開發是並行的,所以兩者可以任意的多次提交當前工程所修改的文件
以上是svn怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP开发中进行版本控制是很常见的操作,其中最常用的工具就是SVN(Subversion)。它可以方便地管理代码的历史版本以及协同开发过程中的代码更新。下面将介绍如何在PHP开发中使用SVN进行版本控制。一、安装SVN客户端和服务端首先需要安装SVN客户端和服务端。SVN客户端可以在SVN官网上下载对应的版本,安装即可,而服务端则需要自行搭建,具体方法可以

SVN简介SVN(Subversion)是一种集中式版本控制系统,用于管理和维护代码库。它允许多个开发者同时协作开发代码,并提供对代码历史修改的完整记录。通过使用SVN,开发者可以:保障代码稳定性,避免代码丢失和损坏。追踪代码修改历史,轻松回滚到之前的版本。协同开发,多个开发者同时修改代码而不会冲突。SVN基本操作要使用SVN,需要安装SVN客户端,例如TortoiseSVN或SublimeMerge。然后,您可以按照以下步骤执行基本操作:1.创建代码库svnmkdirHttp://exampl

EclipseSVN插件的安装和设置方法详解Eclipse是一个广泛使用的集成开发环境(IDE),它支持许多不同的插件来扩展其功能。其中之一是EclipseSVN插件,它使开发人员能够与Subversion版本控制系统进行交互。本文将详细介绍如何安装和设置EclipseSVN插件,并提供具体的代码示例。第一步:安装EclipseSVN插件打开Eclipse

在linux下,直接使用svndiff命令查看代码的修改是很吃力的,于是在网上搜索到了一个比较好的解决方案,就是让vimdiff作为svndiff的查看代码工具,尤其对于习惯用vim的人来说真的是很方便。当使用svndiff命令比较某个文件的修改前后时,例如执行以下命令:$svndiff-r4420ngx_http_limit_req_module.c那么实际会向默认的diff程序发送如下命令:-u-Lngx_http_limit_req_module.c(revision4420)-Lngx_

在CentOS上安装SVN是非常常见的操作,它是一个功能强大的版本控制系统,可以用于管理和追踪软件开发过程中的变更,本文将详细介绍如何在CentOS上安装SVN,并提供一些常用的命令行安装方法。在CentOS上安装SVN有多种方法,下面将介绍两种常用的安装方式。1.打开终端,以root用户身份登录。2.运行以下命令更新系统软件包列表:```yumupdate3.运行以下命令安装SVN:yuminstallsubversion4.安装完成后,可以通过运行以下命令验证SVN是否成功安装:svn--v

区别:1、vss是微软开发的,是收费的,而svn是开源免费的;2、vss必须有客户端,而svn可以用客户端,也可以用命令行模式,还可以用网页方式只读访问;3、vss只支持windows系统,而svn支持windows和linux系统;4、vss是“锁定-编辑-解锁”模式,svn默认是“修改-冲突-合并”模式;5、vss的版本号对应的是单个文件,svn的版本号对应的是整个版本库。

身为Linux开发人员,往往需要运用SVN控制项目版本。对于优秀开发者而言,熟知如何查阅SVN版本无疑是必备技能之一。今日,笔者想借此机会和各位分享自己的心得,希望能助您更好地掌握这一实用技巧。1.安装SVN命令行工具请先在Linux环境中安装SVN命令行工具哦!请拨通终端,然后稳妥地输入下面这条指令来完成安装吧:```尊敬的用户,请执行sudoapt-getinstallsubversion以安装Subversion。2.连接到SVN服务器安装完毕后,我们需要连接到SVN服务器。输入以下命令:

作为一种常用的服务器端脚本语言,PHP凭借其开源、跨平台的优势,被广泛应用于Web开发领域。而在多人协作的开发中,版本控制是一个不可或缺的工具,它可以有效地管理源代码的修改与更新,避免因团队成员之间代码不同步而造成的冲突。而SVN作为一款流行的版本控制工具,在PHP开发中的应用也十分广泛。本文将为大家介绍PHP开发中的SVN版本控制的基础知识,包括SVN的安

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。