사용 시나리오:
프로젝트의 특정 버전(예: 버전 1.0)(여기서는 모바일 클라이언트 프로젝트를 나타냄)이 개발, 테스트를 완료하고 온라인 상태인 경우 새 항목을 받게 됩니다. 새로운 요구사항을 개발하려면 여러 파일의 코드를 수정해야 합니다. 요구사항이 일정 기간 개발되면 갑자기 사용자나 테스터로부터 긴급하게 수정해야 할 주요 버그가 있다는 피드백을 받습니다. , 버그가 요청되면 수리 후 즉시 온라인에 올려야 합니다. 이때 버그를 어떻게 수정해야 합니까? 수리는 개발된 새로운 요구 사항을 기반으로 합니까? 대답은 '아니요'이며, 그 이유는 개발된 새로운 요구 사항을 기반으로 버그가 수정된 경우 새로운 요구 사항이 아직 개발되지 않은 경우, 어떻게 즉시 온라인에 게시할 수 있는지입니다. 최대한 빨리)? ! 셋째, 새로운 기능 개발과 버그 수정을 위한 코드가 동일한 코드와 충돌하는 경우 어떻게 해야 합니까? 물론, 현재 개발된 코드를 기반으로 버그 수정을 수행할 수는 없습니다. 완벽한 솔루션은 당시 완료된 버전에서 버그 수정을 수행하는 것입니다.
1: 버그가 수정된 후, 새로운 요구 사항이 완료되거나 테스트되지 않았기 때문에 출시 시간이 지연되지 않습니다.
2: 버그 수정은 원래 출시된 버전에서 수정되며 새로운 버그가 발생할 위험이 적습니다. 새로운 요구 사항에 따라 버그가 수정되면 새로운 기능으로 인해 새로운 버그가 발생할 수 있습니다
관련 권장 사항: "SVN Video Tutorial"
SVN 웨어하우스 디렉토리 구조 저장소:
(1) 트렁크
(2) 태그
(3) 브랜치
트렁크(트렁크|본선) 브랜치(브랜치) 태그(마크)
트럭(트렁크|본선|본선) : 주요 방향 전개에 사용됩니다. 새로운 기능 중 일부는 메인라인에 모듈로 배치되어야 하며, 개발이 완료된 후 수정이 필요한 경우에는 브랜치를 사용하세요.
branch(브랜치): 브랜치 개발과 메인라인 개발을 동시에 수행할 수 있습니다. 즉, 병렬 개발은 일반적으로 버그를 수정하는 데 사용됩니다.
tag(태그): 사용 가능한 버전을 표시하는 데 사용됩니다. 온라인에 출시된 버전은 일반적으로 읽기 전용인 테스트 중인 것으로 표시될 수도 있습니다.
SVN 특정 작업 단계: (TortoiseSVN 버전: 1.8.8)
One: 창고 만들기
1 디렉터리 구조를 만듭니다. D:TortoiseSVNRepositoryRepo-iOS
2.
---> TortoiseSVN
---> 폴더 구조 생성(파일 구조 생성) ---> -> Ok
둘: 프로젝트를 SVN에 업로드
바탕화면에서 마우스 오른쪽 버튼을 클릭하세요
--->repo-browser - -> URL: file:///D:/TortoiseSVN/Repository/Repo-iOS ---> Ok
---> 트렁크 폴더를 마우스 오른쪽 버튼으로 클릭하세요
---> 폴더 추가..
---> SVN에 업로드할 프로젝트의 가장 바깥쪽 디렉터리를 선택하고 로그를 입력하세요
FAQ"
3: 체크아웃 1. 프로젝트 코드를 컴퓨터 어디에든 저장할 디렉터리를 만듭니다(예: D:TortoiseSVNRepositorySource
2. 이 위치에서 코드를 확인하세요
4: 개발 주기1. D: TortoiseSVNRepositorySourcetrunkMyAppProject 디렉토리에서 개발하세요. 프로젝트가 방금 구축되었고 새로운 기능이 개발 중이므로 메인 라인에서 개발해야 합니다. 테스트 후 App Store로 이동하여 Android를 다른 앱 스토어에 업로드하고 다음과 같이 HomeViewController 파일에서 코드를 추출합니다
[objc] 일반 사본 보기 내 코드 조각에서 파생된 CODE의 코드 조각 보기- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 0; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End }
3. D:TortoiseSVNRepositorySourcetags 디렉터리 아래에 1.0이라는 새 디렉터리를 만들고 해당 디렉터리를 SVN에 제출한 다음 D:TortoiseSVNRepositorySourcetrunkMyAppProject---> TortoiseSVN---->Branch/tag.. . -----> 경로:/tags/1.0/MyAppProject로 이동하고 저장소에서 Head revision을 선택합니다. ---> 현재 Source/tags/1.0 디렉터리에는 아무것도 없습니다. 업데이트 작업을 위한 디렉터리입니다. 업데이트 후에는 이 디렉터리에 저장된 전체 프로젝트 소스 코드를 볼 수 있습니다. (이 디렉터리의 소스 코드는 트렁크 디렉터리에 있는 버전 1.0의 복사본으로 간주될 수 있습니다.) /tags/1.0/에서 viewDidLoad 및 트렁크/MyAppProject를 확인하세요. HomeViewController /HomeViewController의 viewDidLoad 코드는 정확히 동일합니다.
4. 개발 중인 다음 단계를 위한 새로운 요구 사항 개발
5. 사용자 또는 테스터는 애플리케이션에 심각한 버그가 있다고 보고하며, 이를 즉시 수정하고 가능한 한 빨리 온라인에 올려야 합니다. 이때 프로그래머는 Tags/1.0 아래에 MyAppProject에 대한 분기를 생성해야 합니다. 작업 프로세스는 다음과 같습니다. Source/tags/1.0/MyAppProject를 선택하고 TortoiseSVN---->Branch/tag...를 마우스 오른쪽 버튼으로 클릭합니다. ----> To Path :/branches/MyAppProject ---> Ok
7 . 버그 수정 마지막으로 수정된 파일을 먼저 제출하고 클라이언트 앱으로 온라인에 접속합니다. 온라인이 완료된 후 1.0.1 디렉터리(tags/1.0.1)에 Branch/MyAppProject/ 태그를 지정합니다. (작업 단계는 동일합니다.) 3단계)와 같이 태그 작업이 완료되면 Tags/1.0.1/HomeViewController.viewDidLoad와 Branch/MyAppProject/HomeViewController.viewDidLoad가 완전히 일치하는 것을 확인할 수 있습니다. Branch/MyAppProject에 새 태그를 추가하여 다음 버그를 수정하세요. 현재 버그 수정이 완료되었습니다. 버그 수정 후의 코드는 다음과 같습니다.
[objc] view plain copy
- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 10; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End NSLog(@"1.0 版本闪退bug 已修复, 程序出现除0异常"); }
--- > 다음 ---> 병합할 URL: file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject
- ---> Next
----> ; Merge
9. > 병합... -----> 다양한 버전 병합 -----> 다음
------> /Repository/Repo-iOS/branches/MyAppProject
단계는 위와 동일하며 URL만 병합할 경로가 다릅니다. 병합이 완료된 후 다음과 같이 /trunk/MyAppProject/HomeViewController/viewDidLoad 메소드를 확인합니다.
[objc] view plain copy
이때 내 코드 조각에서 파생된 코드 조각을 봅니다
- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = <strong>10</strong>; // <strong>可以看到branches分支中的代码已经合并到主线上了</strong> int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End NSLog(@"<strong>1.0 版本闪退bug 已修复, 程序出现除0异常</strong>"); NSLog(@"其他同事在主线trunk中进行新需求开发..."); NSLog(@"其他同事在主线trunk中进行新需求开发..."); }
10. , 병합이 완전히 완료되었습니다. 브랜치 디렉토리에 소스 코드가 필요하지 않으면 이를 삭제할 수 있습니다. 그런 다음 버그를 수정한 프로그래머는 작업 공간을 메인 라인으로 전환하고 Xcode를 사용하여 트렁크/를 다시 열어야 합니다. MyAppProject 프로젝트를 수행한 다음 아직 완료되지 않은 새로운 기능을 개발합니다. SVN 디렉터리는 다음과 같습니다.
설명:
1. 브랜치 개발과 트렁크 개발은 완전히 독립적인 두 가지 프로세스이며 동시에 개발할 수 있습니다.
2. 따라서 둘 다 현재 프로젝트의 수정된 파일을 원하는 만큼 제출할 수 있습니다
위 내용은 SVN을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!