Fr/FGAddon: Difference between revisions

Jump to navigation Jump to search
→‎Outils de gestion de versions: Significant editing of the whole section.
(→‎Outils de gestion de versions: Significant editing of the whole section.)
Line 135: Line 135:
== Outils de gestion de versions ==
== Outils de gestion de versions ==


Pour accéder FGAddon et de l'utiliser pour le développement de l'aéronef, les outils de gestion de versions Subversion ou SVN sont nécessaires.  Alternativement git-svn fournit une interface pour ceux qui préfèrent les outils de gestion de versions Git.
Pour avoir accès à FGAddon et de l'utiliser pour le développement de l'aéronef, les outils de gestion de versions Subversion ou SVN sont nécessaires.  Une autre solution consiste à utiliser git-svn, un outil qui fournit une interface pour ceux qui préfèrent les gestion de versions Git.


=== Subversion ===
=== Subversion ===
Line 141: Line 141:
==== Mettre en place ====
==== Mettre en place ====


Le hangar d'aéronefs FGAddon est maintenu dans un dépôt Subversion distant situé sur l'infrastructure SourceForge.  D'utiliser les outils de SVN pour le développement de l'aéronef est donc le moyen le plus simple.  Consultez la [[#Préparation|section d'installation de Subversion]] pour la mise en place de la chaîne d'outil.
Le hangar d'aéronefs FGAddon est maintenu dans un dépôt Subversion distant situé sur l'infrastructure SourceForge.  D'utiliser les outils de SVN pour le développement de l'aéronef est donc le moyen le plus simple et qui amène le moins de problèmes.  Consultez la [[#Préparation|section d'installation de Subversion]] pour la mise en place de la chaîne d'outil.


==== Checkout du dépôt ====
==== Checkout du dépôt ====


La première étape consiste de faire un «checkout» (en français une extraction) pour obtenir une copie soit du <code>trunk</code> du dépôt ou l'un des aéronefs dans le <code>trunk</code>:  
La première étape consiste de faire un «checkout» (en français appelé une extraction) pour obtenir une copie soit du <code>trunk</code> du dépôt ou l'un des aéronefs dans le <code>trunk</code>:  
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn co <url> <dir>
svn co <url> <dir>
</syntaxhighlight>
</syntaxhighlight>


Pour l'URL pertinentes, vous devez choisir l'un des [[#Scénarios de développement|scénarios de développement]] et cherchez pour l'URL dans la section correspondante.  Cette commande va créer un dépôt Subversion local dans le dossier <code><dir></code> fourni.  Viellez noter que le dossier ne contiendra que la partie du dépôt FGAddon spécifié dans l'URL.  Cela signifie que Subversion vous permet de faire un «checkout», soit d'un seul fichier jusqu'aux totalité du dépôt distant.
Pour l'URL pertinentes, vous devez choisir l'un des [[#Scénarios de développement|scénarios de développement]] et trouvez l'URL dans la section correspondante.  Cette commande va créer un dépôt Subversion local dans le dossier <code><dir></code> fourni.  Viellez noter que le dossier ne contiendra que la partie du dépôt FGAddon spécifié dans l'URL.  Cela signifie que Subversion vous permet de faire un «checkout» allant d'un seul fichier jusqu'aux totalité du dépôt distant.


==== Information et histoire ====
==== Information et historique ====
De voir les informations sur le dépôt local à n'importe quel moment, tapez:
Pour voir les informations sur le dépôt local, tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn info
svn info
</syntaxhighlight>
</syntaxhighlight>


Pour voir l'histoire de la copie extraite du dépôt, tapez:
Et pour visualiser l'historique de la copie extraite du dépôt, tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn log
svn log
Line 170: Line 170:
</syntaxhighlight>
</syntaxhighlight>


Cela va enregistrer le fichier ou le répertoire <code><chemin></code> avec le dépôt local pour permettre plus tard d'être «committed» et envoyé au dépôt distant.  Pour déplacer ou renommer un fichier ou répertoire, utilisez:
Cela va enregistrer le fichier ou le répertoire <code><chemin></code> avec le dépôt local pour permettre plus tard de faire un «commit» pour l'envoyer au dépôt distant.  Pour déplacer ou renommer un fichier ou répertoire, utilisez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn mv <chemin1> <chemin2>
svn mv <chemin1> <chemin2>
</syntaxhighlight>
</syntaxhighlight>


Cela doit être utilisé au lieu de le déplacer ou le renommer de la façon normale, afin que le changement est suivi dans le dépôt local.  Pour supprimer un fichier du dépôt local, tapez:
Cela doit être utilisé au lieu de le déplacer ou le renommer de la façon normale de votre système d'exploitation, afin que le changement est enregistré dans le dépôt local.  Pour supprimer un fichier ou répertoire dans le dépôt local, tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn rm <chemin>
svn rm <chemin>
Line 191: Line 191:
</syntaxhighlight>
</syntaxhighlight>


Cela ouvrira un éditeur pour vous permettre d'écrire un message de commit informatif.  Il est préférable de faire des petites commits modulaires afin que chaque commit correspond à un seul but.  Vielliez noter que vous pouvez faire un commit à FGAddon seulement si vous avez [[#Accès commit|l'accès de commit]].
Cela ouvrira un éditeur pour vous permettre d'écrire un message de commit informatif.  Il est préférable d'assembler des petites commits modulaires afin que chaque commit correspond à un seul but.  Vielliez noter que vous pouvez faire un commit à FGAddon seulement si vous avez un [[#Accès commit|accès commit]].


==== Branches ====
==== Branches ====
La notion de branches dans Subversion est en ce moment utilisé uniquement par le projet FlightGear pour étiqueter les versions stables.  Mais si vous êtes curieux des branches, voir le [http://svnbook.red-bean.com/nightly/fr/svn.branchmerge.html chapitre gestion des branches dans le manuel de Subversion] et le [https://www.orcaware.com/svn/wiki/Svnmerge.py script de svnmerge.py] qui peut simplifier le processus considérablement.
La notion de branches dans Subversion est en ce moment utilisé uniquement par le projet FlightGear pour étiqueter les versions stables.  Mais si vous êtes curieux des branches, voir le chapitre [http://svnbook.red-bean.com/nightly/fr/svn.branchmerge.html gestion des branches] dans le [http://svnbook.red-bean.com/nightly/fr/ manuel de Subversion] et le [https://www.orcaware.com/svn/wiki/Svnmerge.py script de svnmerge.py] qui peut simplifier le processus considérablement.


=== Git-svn ===
=== Git-svn ===


L'outil git-svn est utile pour ceux qui connaissent déjà l'utilisation des dépôts git, ou ceux qui souhaitent avoir leur propre zone de développement d'aéronef privé.  Git-svn fournit un lien entre le dépôt Subversion distant de FGAddon et un dépôt git local.  Pour ceux qui connaissent pas git, le lien de git-svn ainsi que le dépôt git est beaucoup plus compliqué à utiliser que les [[#Subversion|outils de Subversion indigènes]].  Pour plus d'informations sur l'utilisation de git, voir [[Howto:Start using git]].  Les commandes suivantes vont présumer qu'un seul aéronef sera stocké dans le dépôt git local.
L'outil git-svn est utile pour ceux qui connaissent déjà comment utiliser les outils et les dépôts de git, ou ceux qui souhaitent avoir leur propre zone de développement d'aéronef privé.  Git-svn établi un lien entre le dépôt Subversion distant de FGAddon et un dépôt git local.  Pour ceux qui connaissent pas git, le lien de git-svn ainsi que le dépôt git est beaucoup plus compliqué à utiliser que les [[#Subversion|outils de Subversion indigènes]].  Pour plus d'informations sur l'utilisation de git, voir [[Howto:Start using git]].  Les commandes suivantes vont présumer qu'un seul aéronef sera stocké dans le dépôt git local.


==== Mettre en place ====
==== Mettre en place ====
Line 204: Line 204:


==== Clonage d'un seul avion ====
==== Clonage d'un seul avion ====
La première étape est de cloner un des aéronefs dans le répertoire <code>trunk/</code> du dépôt Subversion distant:
La première étape est de cloner l'un des aéronefs dans le répertoire <code>trunk/</code> du dépôt Subversion distant:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn clone <url_aéronef>
git svn clone <url_aéronef>
</syntaxhighlight>
</syntaxhighlight>


Pour l'URL pertinentes, vous devez choisir l'un des [[#Scénarios de développement|scénarios de développement]] et cherchez pour l'URL dans la section correspondante.  L'URL dépend si vous avez [[#Accès commit|l'accès de commit à FGAddon]].  La commande clone va créer un dépôt git local contenant exclusivement l'aéronef d'intérêt et va initialiser le lien git-svn.
Pour l'URL pertinentes, vous devriez choisir l'un des [[#Scénarios de développement|scénarios de développement]] et cherchez pour l'URL dans la section correspondante.  L'URL dépend si vous avez un [[#Accès commit|accès commit FGAddon]].  La commande clone va créer un dépôt git local contenant exclusivement l'aéronef d'intérêt et va initialiser le lien git-svn.


==== Information et histoire ====
==== Information et historique ====
Pour voir les informations sur le dépôt local à n'importe quel moment, tapez:  
Pour voir les informations sur le dépôt local à n'importe quel moment, tapez:  
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Line 219: Line 219:
</syntaxhighlight>
</syntaxhighlight>


Pour voir l'histoire du clone extraite du dépôt, tapez:
Pour visualiser l'historique du clone extraite du dépôt, tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log
git log
Line 235: Line 235:
</syntaxhighlight>
</syntaxhighlight>


Notez cependant que l'histoire de git est moins robustes que l'histoire de svn.  Voir la [[#Déplacement ou renommage de fichiers|section de déficience de git-svn en déplacement ou renommage de fichiers]] pour savoir comment mieux effectuer cette opération.  Pour supprimer un fichier du dépôt local, tapez:
Notez cependant que l'historique de git est moins robustes que l'historique de svn.  Voir la [[#Déplacement ou renommage de fichiers|section de déficience de git-svn en déplacement ou renommage de fichiers]] pour savoir comment mieux effectuer cette opération.  Pour supprimer un fichier du dépôt local, tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git rm <chemin>
git rm <chemin>
Line 251: Line 251:
</syntaxhighlight>
</syntaxhighlight>


Cela ouvrira un éditeur pour vous permettre d'écrire un message de commit informatif.
Cela ouvrira un éditeur pour vous permettre d'écrire un message de commit informatif.  Le commit est locale et ne sera pas envoyé à FGAddon.


==== Branche dédié FGAddon ====
==== Branche dédié FGAddon ====


Dans les exemples ci-dessus, une seule branche dans le dépôt a été supposé.  Si un interaction avec un dépôt git distant ou des branches dans le dépôt git local sont désirée, une stratégie différente est nécessaire.  La raison étant que la branche qui se synchronise avec FGAddon doit [https://git-scm.com/book/fr/v1/Git-et-les-autres-syst%C3%A8mes-Git-et-Subversion#git-svn maintenir une histoire linéaire].  Cela signifie que seulement «cherry-picking» des modifications souhaitées dans cette branche est autorisé.
Dans les exemples ci-dessus, une seule branche dans le dépôt local a été supposé.  Si un interaction avec un dépôt git distant ou des branches dans le dépôt git local sont désirée, une stratégie différente est nécessaire.  La raison étant que la branche qui se synchronise avec FGAddon doit [https://git-scm.com/book/fr/v1/Git-et-les-autres-syst%C3%A8mes-Git-et-Subversion#git-svn maintenir un historique linéaire].  Cela signifie qu'il faut seulement faire un «cherry-pick» pour chaque modification souhaitée dans cette branche.


Dans cet exemple, deux branches seront créés dans le dépôt git local:
Dans cet exemple, deux branches seront créés dans le dépôt git local:
* <code>fgaddon</code>:  Cette branche sera dédiée à la synchronisation FGAddon et permettra de préserver une histoire linéaire.
* <code>fgaddon</code>:  Cette branche sera dédiée à la synchronisation FGAddon et permettra de préserver un historique linéaire.
* <code>master</code>:  Une branche master pour le développement d'aéronef, permettent des «merge» et autres opérations d'histoire non-linéaires.
* <code>master</code>:  Une branche master pour le développement d'aéronef, permettent des «merges» et autres opérations d'historique non-linéaires.


En supposant un [[#Clonage d'un seul avion|dépôt nouvellement cloné]], créez le <code>fgaddon</code> branche avec:
En supposant un [[#Clonage d'un seul avion|dépôt nouvellement cloné]], créez le branche <code>fgaddon</code> avec:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git branch fgaddon
git branch fgaddon
Line 271: Line 271:
</syntaxhighlight>
</syntaxhighlight>


La synchronisation FGAddon peut être effectuée sur cette branche.  Pour tirer les développements de la branche master, utilisez «cherry-picking» pour appliquer une liste de hashs de commit en ordre séquentiel:
La synchronisation avec FGAddon peut être effectuée sur cette branche.  Pour tirer les développements de la branche <code>master</code>, utilisez le «cherry-pick» pour tirer une liste de commits en ordre séquentiel:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hash 1>
git cherry-pick <commit hash 1>
Line 279: Line 279:
</syntaxhighlight>
</syntaxhighlight>


Pour voir la liste des commits prêt à être envoyé à FGAddon avant de «dcommitting», tapez:
Pour voir la liste des commits prêt à être envoyé à FGAddon, avant de «dcommitting», tapez:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log git-svn..HEAD
git log git-svn..HEAD
</syntaxhighlight>
</syntaxhighlight>


Et pour visualiser les modifications dans une seule diff:
Et pour visualiser les modifications dans un seul diff:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git diff git-svn..HEAD
git diff git-svn..HEAD
Line 306: Line 306:


=== Déficiences de git-svn ===
=== Déficiences de git-svn ===
Il ya un certain nombre d'opérations dans lesquelles git-svn est déficient et les outils de svn devrait être utilisé à la place.
Il ya un certain nombre d'opérations dans lesquelles git-svn est déficient et que les outils de svn devrait être utilisé à la place.


==== La copie de fichiers entre les aéronefs ====
==== La copie de fichiers entre les aéronefs ====


Le plus important de ces opérations est de copier le contenu d'un aéronef de FGAddon à un autre.  Dans ce cas il faudra avoir accès commit à FGAddon et une copie du dépôt svn locale.  En premier lieu synchroniser les dépôts en poussant toutes modifications à FGAddon:
Le plus important de ces opérations est de copier le contenu d'un aéronef dans FGAddon à un autre.  Dans ce cas il faudra avoir accès commit à FGAddon et une copie du dépôt svn locale.  En premier lieu synchroniser les dépôts en poussant toutes modifications à FGAddon:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
</syntaxhighlight>
</syntaxhighlight>


Ensuite, dans le dépôt svn local, copiez le fichier:
Ensuite, dans le dépôt svn local, copiez le fichier en tapant:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn cp Aircraft/<aéronef1>/<chemin_de_fichier1> Aircraft/<aéronef2>/<chemin_de_fichier2>
svn cp Aircraft/<aéronef1>/<chemin_de_fichier1> Aircraft/<aéronef2>/<chemin_de_fichier2>
</syntaxhighlight>
</syntaxhighlight>


Et valider la modification:
Et valider la modification avec:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn ci
svn ci
Line 334: Line 334:
==== Déplacement ou renommage de fichiers ====
==== Déplacement ou renommage de fichiers ====


Ce problème provient du fait que l'histoire de svn est plus robuste que celle de git.  Les commandes <code>svn mv</code> et <code>git mv</code> ne sont pas équivalentes.  La commande de Subversion enregistre l'historique de déplacement directement dans le dépôt alors que git ne le fait pas (à la place git utilise des méthodes heuristiques pour tenter de détecter l'histoire, après la validation).  Le résultat de l'emploi de git-svn est que, souvent, le déplacement ne sera pas détectée et l'histoire de FGAddon montrera un fichier ou un répertoire étant supprimés et un autre ajouté.  Ceci cause également que le backend du dépôt augmente en taille, alors que <code>svn mv</code> ne cause pas une augmentation importante.  Si vous souhaitez avoir un bilan historique correcte dans le dépôt FGAddon et d'être attentif au backend du dépôt, il est conseillé de vous sautez temporairement aux outils subversion.  Dans le premier coup, synchroniser les dépôts:
Ce problème provient du fait que l'historique de svn est plus robuste que celle de git.  Les commandes <code>svn mv</code> et <code>git mv</code> ne sont pas équivalentes.  La commande de Subversion enregistre l'historique de déplacement directement dans le dépôt alors que git ne le fait pas (à la place git utilise des méthodes heuristiques pour tenter de détecter l'historique, après la validation).  Le résultat de l'emploi de git-svn est que, souvent, le déplacement ne sera pas détectée et l'historique de FGAddon montrera un fichier ou un répertoire étant supprimés et un autre ajouté.  Ceci cause également que le backend du dépôt augmente en taille, alors que <code>svn mv</code> ne cause pas une augmentation importante.  Si vous souhaitez avoir un bilan historique correcte dans le dépôt FGAddon et d'être attentif au backend du dépôt, il est conseillé de vous sautez temporairement aux outils subversion.  Dans le premier coup, synchroniser les dépôts:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit

Navigation menu