使用シナリオ:
プロジェクトの特定の部分 (ここではモバイル クライアント プロジェクトを指します) の場合バージョン (バージョン 1.0 など) が開発、テストされ、オンラインで公開されました。次に、新しい要件を受け取ります。新しい要件の開発には、複数のファイルのコードを変更する必要があります。要件が一定期間開発されたとき、突然のリクエストが受信されました。ユーザーまたはテスターからのフィードバックによると、プロジェクトには緊急に修正する必要がある重大なバグがあり、バグ修正後すぐにオンラインにする必要があります。バグを修正するにはどうすればよいですか?現時点では?修理は新たに生じたニーズに基づいていますか?答えはノーで、その理由は次のとおりです: 開発された新しい要件に基づいてバグが修正される場合、新しい要件はまだ開発されておらず、ましてやテストされていません。どうすればすぐにオンラインにできるでしょうか (またはそのままオンラインにできるのでしょうか)できるだけ早く)? ! 3 番目に、新機能の開発とバグ修正のためのコードに同じコード部分との競合が含まれる場合はどうすればよいでしょうか。当然ながら、現在開発されているコードに基づいてバグ修正を実行することはできません。完璧な解決策は、その時点で完成したバージョンでバグ修正を実行することです。この利点は次のとおりです。
1: バグが発生した後修正済み すぐに起動でき、新しい要件が完了またはテストされていないために起動時間が遅れることはありません。
2: バグ修正は最初に起動されたバージョンで修正されており、次のようなリスクがあります。新しいバグの原因となるものは小さいです。要件に基づいて新しいバグを修正する機能に含まれている場合は、新機能によって新しいバグが発生する可能性があります
関連する推奨事項: 「SVN ビデオ チュートリアル 」
SVN ウェアハウス ディレクトリ構造 リポジトリ:
(1) トランク
(2) タグ
(3) )branch
trunk(幹線|本線)branch(枝)タグ(マーク)
truck(幹線|本線|主分岐): メイン方向の開発に使用されます。新しい機能はモジュールとしてメインラインに配置し、開発完了後、修正が必要な場合はブランチを使用します。
branch (ブランチ): ブランチ開発とメインライン開発を同時に実行できる、つまり並行開発が可能です。ブランチは通常、バグ修正に使用されます。
tag (タグ):タグに使用されます。利用可能なバージョンは、オンラインでリリースされたバージョンまたはテスト中のバージョンとしてマークできます。通常は読み取り専用です。
SVN 固有の操作手順: (TortoiseSVN バージョン: 1.8.8)
1: ウェアハウスを作成します
1。ディレクトリ構造 D:\TortoiseSVN\Repository\Repo-iOS
2 を作成します。ディレクトリ構造
# を右クリックします。 ## ---> ここにリポジトリを作成
---> フォルダ構造の作成 (ファイル構造の作成) ---> Repobrowser の起動 (リポジトリの参照の開始) --- > OK
#2: プロジェクトを SVN にアップロードします
デスクトップを右クリックします
---> TortoiseSVN
--->リポブラウザ--> URL: file:///D:/TortoiseSVN/ リポジトリ/Repo-iOS ---> OK
---> トランク フォルダを右クリック
#---> フォルダを追加...
---> SVN にアップロードするプロジェクトの最も外側のディレクトリを選択し、ログを入力します
##---> Ok
#関連する推奨事項: "
FAQ"
3: チェックアウト1. コンピューター上の任意の場所に作成します。プロジェクト コードが保存されている場所 (例: D:\TortoiseSVN\Repository\Source
2)。コードをこの場所にチェックアウトします。4:開発サイクル
1. ディレクトリ D:\TortoiseSVN\Repository\Source\trunk\MyAppProject で開発します。トランクのメインライン上にあることに注意してください。
プロジェクトは確立されたばかりなので、 , これは新しい機能を開発しているため、メインラインで開発する必要があります##2. 一定の開発期間を経て、テストを経て、App Store に公開され、Android がアップロードされます次のように起動時に HomeViewController ファイルからコードの一部を抽出します[objc] view plain copy
- (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---->ブランチ/タグ... -----> パス :/tags/1.0/MyAppProject に移動し、リポジトリ内のヘッド リビジョンを選択します ---> OkSource/ がありますtags/1.0 ディレクトリにコンテンツがありません。更新操作のためにディレクトリを更新する必要があります。更新後、完全なプロジェクトのソース コードがこのディレクトリに保存されていることがわかります (このディレクトリのソース コードは、トランク ディレクトリにあるバージョン 1.0 のコピーとみなすことができます) /tags/1.0/ の viewDidLoad と train/MyAppProject を確認してください。 HomeViewController: /HomeViewController の viewDidLoad コードはまったく同じです。
4. 開発中の次の段階に向けて新しい要件を開発します
5. ユーザーまたはテスターアプリケーションに重大なバグがあり、すぐに修正してできるだけ早くオンラインにする必要があることを報告します。この時点で、プログラマは、tags/1.0 の下に MyAppProject のブランチを作成する必要があります。操作手順は以下の通りです: Source/tags/1.0/MyAppProject を選択 TortoiseSVN を右クリック ---->ブランチ/タグ... -----> パス:/branches/MyAppProject ---> OK
7. バグが修正されたら、まず変更したファイルを送信し、クライアント アプリでオンラインにします。オンラインが完了したら、branch/MyAppProject/ を 1.0.1 ディレクトリにタグ付けします (tags/ 1.0.1) (操作手順は手順 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异常"); }8. 次に、ブランチとトランクをマージします。手順は次のとおりです:ブランチ/MyAppProject を右クリック ------>TortoiseSVN
----> マージ... ---> 範囲をマージしますリビジョン
---->次へ --->マージ元の URL : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject
----> 次
- ---> マージ
右クリック/turnk/MyAppProject ----> マージ... -----> 範囲をマージします。リビジョン -----> 次へ
-----> ; マージ元の URL: file:///D:/TortoiseSVN/Repository/Repo-iOS/branches/MyAppProject
手順は上記と同じですが、マージ元の URL のパスが異なります。マージが完了したら、次のように /trunk/MyAppProject/HomeViewController/viewDidLoad メソッドを確認します。
CODE から派生したコード部分を my に表示します。コード ピース
- (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 を使用して、trunk/ を再度開きます。 MyAppProject プロジェクトは、まだ完成していない新機能の開発を続けています。 SVN ディレクトリは次のとおりです:
##手順:
1. ブランチ開発とトランク開発は 2 つの完全に独立したプロセスであり、両方を同時に開発できます。 time
2. ブランチとトランクの開発は並行して行われるため、現在のプロジェクトによって変更されたファイルを何度でも送信できます以上がSVNの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。