Scénario d'utilisation :
Si une certaine partie de votre projet (fait ici référence au projet client mobile) Le La version (par exemple, la version 1.0) a été développée, testée et lancée en ligne. Ensuite, de nouvelles exigences sont reçues. Le développement de nouvelles exigences nécessite de modifier le code dans plusieurs fichiers lorsque les exigences ont été développées pendant un certain temps. , ils reçoivent soudainement Selon les commentaires des utilisateurs ou des testeurs, il y a un bug majeur dans le projet qui doit être corrigé de toute urgence, et il est nécessaire de se connecter immédiatement après la correction du bug. Comment le bug doit-il être corrigé à ce moment-là. ? La réparation est-elle basée sur les nouveaux besoins développés ? La réponse est non, et la raison est la suivante : si les bugs sont corrigés sur la base de nouvelles exigences qui ont été développées, alors les nouvelles exigences n'ont pas encore été développées, et encore moins testées. Comment peut-il être mis en ligne immédiatement (ou en tant que tel). le plus rapidement possible) ? ! Troisièmement, que dois-je faire si le développement de nouvelles fonctionnalités et le code de correction de bugs impliquent des conflits avec le même morceau de code. Évidemment, les corrections de bugs ne peuvent pas être effectuées sur la base du code actuellement développé. La solution parfaite est : correction de bug dans la version qui a été terminée à ce moment-là. Les avantages de ceci sont :
1 : Une fois le bug résolu. corrigé Il peut être lancé immédiatement, et l'heure de lancement ne sera pas retardée car les nouvelles exigences n'ont pas été remplies ou testées
2 : Les corrections de bugs sont corrigées dans la version initialement lancée, et le risque de provoquer les nouveaux bugs sont petits. S'ils sont dans la nouvelle correction des bugs en fonction des besoins, alors les nouvelles fonctionnalités peuvent apporter de nouveaux bugs
Recommandations associées : "Tutoriel vidéo SVN"
Structure du répertoire de l'entrepôt SVN Référentiel :
(1) tronc
(2) balises
(3) branches
tronc (tronc | ligne principale) branches (branche) tags (marque)
camion (tronc | ligne principale | branche principale) : Il est utilisé pour le développement de la direction principale. les nouvelles fonctions doivent être placées dans la ligne principale en tant que module. Une fois le développement terminé, si des modifications sont nécessaires, utilisez la branche.
branche (branche) : le développement de branche et le développement principal peuvent être effectués en même temps, c'est-à-dire que le développement parallèle est généralement utilisé pour corriger les bogues
balise (marque). utilisé pour les balises Une version disponible peut être marquée comme une version publiée en ligne ou comme une version en cours de test. Elle est généralement en lecture seule.
Étapes de fonctionnement spécifiques à SVN : (Version TortoiseSVN : 1.8.8)
1 : Créer un entrepôt
1. Créer une structure de répertoire D : TortoiseSVNRepositoryRepo-iOS
2. Cliquez avec le bouton droit sur la structure de répertoire
---> > Créez un référentiel ici
---> Créer une structure de dossiers ---> Démarrer Repobrowser --->
Deux : Téléchargez le projet sur SVN
Cliquez avec le bouton droit sur le bureau
---> ; TortoiseSVN
--->repo-browser--> URL : fichier:///D:/TortoiseSVN/Repository/Repo-iOS ---> 🎜>
---> Faites un clic droit sur le dossier du coffre
---> Ok
Recommandations associées : "
FAQ"
3 : Extraire
1 Créez un répertoire pour stocker le code du projet n'importe où sur votre ordinateur Répertoire, par exemple : D. :TortoiseSVNRepositorySource2. Consultez le code de cet emplacement
Quatre : Cycle de développement1 Dans le répertoire D : TortoiseSVNRepositorySourcetrunkMyAppProject est. développé. Notez qu'il est sur la ligne principale Parce que le projet vient d'être établi et que de nouvelles fonctions sont en cours de développement, il doit être développé sur la ligne principale2. Développement Après un certain temps, après des tests, il a été lancé sur l'App Store et Android a été téléchargé sur d'autres centres d'applications. Un morceau de code extrait du fichier HomeViewController lors de son lancement est le suivant
<.>[objc] afficher la copie brute Afficher les extraits de code dérivés de mes extraits de code sur CODE- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 0; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End }
3. Créez un nouveau répertoire : 1.0 dans le répertoire D:TortoiseSVNRepositorySourcetags, soumettez le répertoire à SVN, puis cliquez avec le bouton droit sur le répertoire D:TortoiseSVNRepositorySourcetrunkMyAppProject---> .. -----> Vers Path:/tags/1.0/MyAppProject et sélectionnez Head revision dans le référentiel ---> Il n'y a rien dans le répertoire Source/tags/1.0 pour le moment. mettre à jour le répertoire pour le fonctionnement de la mise à jour. Après la mise à jour, vous verrez un code source complet du projet enregistré dans ce répertoire (le code source dans ce répertoire peut être considéré comme une copie de la version 1.0 dans le répertoire trunk. Vérifiez viewDidLoad et trunk/MyAppProject dans /tags/1.0/). HomeViewController Le code viewDidLoad dans /HomeViewController est exactement le même.
4. Développer de nouvelles exigences pour la prochaine étape, en cours de développement
5. signaler que l'application présente un bug majeur, qui doit être corrigé immédiatement et mis en ligne le plus rapidement possible. A ce moment, le programmeur doit créer une branche pour MyAppProject sous tags/1.0. Le processus de fonctionnement est le suivant : Sélectionnez Source/tags/1.0/MyAppProject Cliquez avec le bouton droit sur TortoiseSVN---->Branch/tag... -----> Vers le chemin:/branches/MyAppProject ---> Ok
<. 🎜> dans ce répertoire (ce code peut être considéré comme une copie de tags/1.0/MyAppProject). Remarque Le branchement et le balisage utilisent le menu Branch/tag... La différence est que le répertoire To Path est différent. Le diagramme montre le diagramme de branchement, mais la valeur du chemin est différente. À l'heure actuelle, viewDidLoad dans branches/MyAppProject/HomeViewController est exactement le même que le code viewDidLoad dans tags/1.0/MyAppProject/HomeViewController.
6. Changez d'espace de travail, utilisez l'outil intégré Xcode|Eclipse pour ouvrir le projet sous /branches/MyAppProject, puis déboguer et corriger le bug sur cette base. Notez que le projet doit être ouvert dans la branche.
7. Une fois le bug corrigé, soumettez d'abord le fichier modifié et lancez l'application client. Une fois le lancement terminé, marquez branches/MyAppProject/ dans le répertoire 1.0.1 (tags/1.0. 1) (Les étapes de l'opération sont les mêmes que l'étape 3). Une fois l'opération de balise terminée, vous pouvez voir que tags/1.0.1/HomeViewController.viewDidLoad et branches/MyAppProject/HomeViewController.viewDidLoad sont complètement cohérents. ajoutez une nouvelle balise à branches/MyAppProject. La prochaine fois, nous corrigerons à nouveau le bug sur cette base. Jusqu'à présent, la correction du bug est terminée ; le code après la correction du bug est le suivant :
<🎜. >[objc] afficher la copie simple
Afficher le morceau de code sur CODE Dérivé de mon morceau de code
- (void) viewDidLoad { [super viewDidLoad]; // ----------------------------------------- int y = 10; int result = 10 / y; NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result); // End NSLog(@"1.0 版本闪退bug 已修复, 程序出现除0异常"); }
Cliquez avec le bouton droit sur branches/MyAppProject ------>TortoiseSVN
----> Fusionner...
--->
----> Suivant ---> URL à fusionner à partir de : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject----> Suivant
- ---> >
9. Les étapes pour fusionner des lignes réseau et des branches sont les suivantes :
Clic droit/turnk/MyAppProject ----> révisions -----> Suivant
-----> ; URL à fusionner à partir de : file:///D:/TortoiseSVN/Repository/Repo-iOS/branches/MyAppProject
Afficher le morceau de code dérivé de mon morceau de code sur CODE
- (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. À ce stade, la fusion est complètement terminée. Si vous ne voulez pas le code source dans le répertoire branches, vous pouvez le supprimer. Ensuite, le programmeur qui a modifié le bug doit changer. l'espace de travail à la ligne principale et utilisez Xcode pour rouvrir le tronc/ Le projet MyAppProject continue de développer de nouvelles fonctionnalités qui ne sont pas encore terminées. Le répertoire SVN est le suivant :
Remarque :
1. Le développement de branche et le développement de tronc sont deux processus complètement indépendants, et les deux peuvent être développés au niveau du site. en même temps
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!