Files
2026-06-17 14:00:51 +02:00

790 lines
40 KiB
Plaintext

<!DOCTYPE html>
<html lang="fr">
<head>
<title>JMRI: Git FAQ</title>
<meta name="author" content="Bob Jacobsen">
<meta name="keywords" content="JMRI technical code Git FAQ">
<!--#include virtual="/help/fr/parts/Style.shtml" -->
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!-- FAQ-Head -->
<script type="text/javascript">
/*<![CDATA[*/document.documentElement.className="hasJS";/*]]>*/
</script>
<link rel="stylesheet" type="text/css" href="/web/css/faq.css" media="screen"><!-- /FAQ-Head -->
</head>
<body>
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
<div id="mBody">
<!--#include virtual="Sidebar.shtml" -->
<div id="mainContent">
<!-- Page Body -->
<h1>JMRI:FAQ Git</h1>
<p>Ceci est une Liste des Questions Fréquentes concernants GIT particulièrement comment
utiliser Git avec JMRI.</p>
<p>Il y a une <a href="getgitcode.shtml">page d'aide JMRI séparées</a> sur comment <a href=
"getgitcode.shtml">comment obtenir le code avec Git</a>.</p>
<p>Voir aussi le <a href="index.shtml">Technical index</a> pour de plus amples informations
sue la maintenance du code JMRI.</p>
<h2>Sujets Communs Utilisateur</h2>
<dl class="faq">
<dt id="install" class="on">Comment Installer Git?</dt>
<dd>
Git est un logiciel libre. Selon votre type ordinateur et vos préférences il y a
plusieurs façons de l'installer. Il y a plus d'informations sur le guide de la communauté
Git <a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git">Getting
Started</a>.
<ul>
<li>L'obtenir depuis la page <a href="http://git-scm.com/downloads">Téléchargement
Git</a>.</li>
<li>Il est livré avec l'application GitHub Desktop, disponible depuis la page <a href=
"https://desktop.github.com">Téléchargement Git desktop</a> (OS X et Windows
seulement).</li>
<li>Pour le Mac, il est inclut quand vous <a href=
"https://developer.apple.com/xcode/download/">installer Xcode</a>.</li>
<li>Pour Linux vous pouvez essayer le paquet installateur, exemple: <code>sudo yum
install git</code> ou <code>sudo apt-get install git</code>.</li>
</ul>
</dd>
<dt>Configuration d'un environnement Git pour les Développeurs JMRI</dt>
<dd>
Vous pouvez régler votre répertoire local pour qu'il "pull" automatiquement depuis le
JMRI Master sur GitHub et "push" sur votre "fork" ( et aussi sur GitHub ):
<p><img src="/web/images/GitHubWorkflow.png" alt="">
</p>
<p>Cette flèche horizontale est la "Pull Request" ( et par conséquent "pull" ) qui
enregistre des informations sur la façon dont les choses entrent dans le référentiel.</p>
<p>Les flêches sont les deux opérations ( "push", "pull" ) et aussi les définitions de
<em>où</em> pour voir par exemple: un URL. Git peut stocker un raccourci pour une URL,
appelé " remote " Le remote par défaut est appelé "origin". Vous pouvez avoir plusieurs
remotes définis.</p>
<p>Via l'outil ligne de commande git vous pouvez faire ceci par la commande:</p>
<blockquote>
<code>$ git remote set-url --push origin
https://github.com/<em>username</em>/JMRI.git</code>
</blockquote>
où <code>username</code> est votre nom utilisateur github. Vous pouvez vérifier l'état
actuel des répertoires push et pull avec:
<blockquote>
<code>$ git remote -v</code><br>
<code>origin https://github.com/JMRI/JMRI.git (fetch)</code><br>
<code>origin https://github.com/<em>username</em>/JMRI.git (push)</code><br>
</blockquote>
Ceci dit que, par défaut, fetches et pulls viennent du référentiel principal JMRI/JMRI.
Quand vous "push", d'autre part il va sur votre propre répertoire
<p>Une fois que vous avez une copie de vos changements sur GitHub, il est facile de
<a href="https://help.github.com/articles/creating-a-pull-request/">générer un pull
request</a> (Lien vers GitHub)</p>
<ul>
<li>Dans un navigateur, naviguez jusqu'á répertoire sur GitHub qui a les changements
que vous voulez que quelqu'un "push" et</li>
<li>pressez l'icone de comparaison verte <img src="/web/images/GitHubPR1.png" alt=""> ,
puis cliquez sur "Create a Pull Resquest".</li>
<li>Après votre "pull request" a bien été revu, il peut être fusionné dans le
référentiel principal JMRI/JMRI. Le développeur JMRI qui "pulls" vos changements dans
la source de la communauté a besoin d'avoir accès á un répertoire en ligne qui a vos
changements, ce qui explique pourquoi vous avez besoin d'avoir une place sur GitHub en
premier lieu ...</li>
</ul>
</dd>
<dt id="working">Travailler avec Git</dt>
<dd>
<p>Avec SVN et CVS vous extrayez un "répertoire de travail" pour y effectuer vos
modifications. Travailler pendant un certain temps, et éventuellement engager ( commit )
toutes vos modifications dans le dépôt principal.</p>
<p>Git travaille avec un concept différent. Au lieu d'avoir de multiples répertoires de
travail, vous avez un simple répertoire qui a été "cloné" depuis le référentiel
principal. Si vous faites un petit changement individuel, vous pouvez travailler
directement sur la branche "master" en son sein. Si non, voir ci-dessous: <a href=
"#branch">Branchement</a>.</p>
<p>Pour comprendre Git, il est bon de connaitre les <em>places</em> variés dans votre
répertoire git local:</p>
<ul>
<li>Le contenu depuis le répertoire "remote", qui vit sous le répertoire caché
<code>.git/</code> ,</li>
<li>La zone "staging" ( appelée aussi "index" ou "cache" ), et</li>
<li>La "branche" nommée que vous utilisée, qui est dans</li>
<li>L'arbre de travail.</li>
</ul>
<p>Quand vous <em>clonez</em> un répertoire git, vous créez une structure répertoire qui
contient tous ces éléments. Á moins que vous arrêtiez, l'arbre de travail commence rempli
avec le contenu de la <em>master branch</em> du répertoire que vous avez cloné- et le
<em>staging area</em> est vide quand vous faites des changements dans les fichiers de
l'arbre de travail, vous avez besoin de les <em>ajouter</em> explicitement dans la la
zone de préparation. Git connait ces fichiers, mais ils ne font pas encore officiellement
partie de votre répertoire local.</p>
<p>Une fois que vous avez rempli la zone de préparation avec tout ce que vous avez
changé, une opération <em>commit</em> ( soumission ) engagera officiellement vos
modifications dans votre structure répertoire <code>.git/</code>.</p>
<p>Quand vous <em>pull</em> ou <em>push</em>, vous dites á Git de synchroniser votre
contenu <code>git/</code> avec avec celui du répertoire distant dont vous avez
initialement cloné le contenu.</p>
<p>La documentation suivante devrait vous aider á démarrer en utilisant soit la ligne de
commande git ou GitHub Desktop:</p>
<ul>
<li>Connectez-vous á GitHub et clonez votre propre copie du référentiel principal JMRI.
Ceci vous donne un endroit sûr où vous pourrez collez et extraire sans affecter les
autres.</li>
<li>Utilisation de Git:
<ul>
<li>Clonez le référentiel JMRI sur votre système local ( ou actualisez le ):
<blockquote>
<code>$ git clone https://github.com/JMRI/JMRI.git</code><br>
ou<br>
<code>$ git fetch</code><br>
<code>$ git diff ...origin</code><br>
<code>$ git merge origin/master<br>
Auto-merging ... files ...<br>
CONFLICT (content): Merge conflict in <em>some_file</em><br>
Échec Fusion Automatique; corriger les conflits et soumettez le résultat.<br>
$ vi <em>some_file</em> # Le fichier a des conflits marqués, éditer le pour
correction...<br>
$ git add <em>some_file</em><br>
$ git commit -m "Merged master fixed conflict"<br>
$ git merge origin/master</code><br>
ou<br>
<code>$ git pull https://github.com/JMRI/JMRI.git</code><br>
</blockquote>
</li>
<li>Faites vos changement localement, testez les, etc.
<blockquote>
<code>$ git add <em>newfile</em></code><br>
<code>$ git rm <em>newfile</em></code><br>
<code>$ git add .</code><br>
<br>
<code>$ git status</code><br>
<br>
<code>$ git fetch</code><br>
<code>$ git merge</code><br>
<br>
</blockquote>
</li>
<li>Rendez vos changements disponibles pour la communauté
<blockquote>
<code>$ git commit -m <em>"commit message"</em></code><br>
or<br>
<code>$ git commit -a -m <em>"commit message"</em></code><br>
</blockquote>
</li>
</ul>
</li>
<li>Utilisation de GitHub Desktop
<ul>
<li>Clonez le référentiel JMRI sur votre système local en choisissant un élément de
l'onglet "Clone" dans le fichier &gt;Clone repository.. menu et cliquez
"Clone":<br>
<a href="images/GhDtCloneDialog.png"><img src="images/GhDtCloneDialog.png" width=
"267" height="184" alt="GitHub Desktop PR dialog"></a></li>
<li>Faites vos changement localement, testez les, etc.<br>
Quand tout cela fonctionne, <em>soumettez</em> votre modification á votre
référentiel JMRI local en retournant á l'application GitHub Desktop, examinez
tous les changements constatés par le programme, entrez un Résumé [1] et une
Description [2] et enfin en cliquant sur le bouton [3] soumettre la &lt;
branche&gt; Bouton:<br>
<a href="images/GhDtWindow.png"><img src="images/GhDtWindow.png" width="410"
height="256" alt="GitHub Desktop Window"></a>
<p>Après votre Soumission, un point blanc apparaìtra près de la fin de la ligne
qui ressemble á une voie d'évitement dans un <em>plan de voie</em>. Cliquez pour
lire le titre. Pour voir les fichiers modifiés á un autre moment dans le temps,
cliquez sur un ancien point de soumission:<br>
<a href="images/GhDtWindowSeeCommit.png"><img src=
"images/GhDtWindowSeeCommit.png" width="456" height="79" alt=
"GitHub Desktop Commit"></a></p>
<p>Après une soumission, vos nouvelles modifications sont seulement ajoutées
avotre copie locale de votre branche. Pour les faire apparaìtre dans un endroit
où d'autres personnes peuvent les voir soit vous cliquez le bouton
<strong>Sync</strong> en haut á droite, choisissez Sync ( Cmd-S ) depuis le menu
répertoire, ou synchroniser automatiquement Github Desktop en cochant dans le
menu Edit l'élément Automatically Sync after Committing:<br>
<a href="images/GhDtSyncSetting.png"><img src="images/GhDtSyncSetting.png" width=
"154" height="122" alt="GitHub Desktop auto sync menu"></a></p>
</li>
<li>Quand vous avez travaillé sur quelque chose dans GhDt durant une semaine ou
plus, d'autres ont pu travailler définitivement sur d'autres parties de JMRI. Pour
intégrer ces nouvelles données dans votre copy, cliquez sur le bouton
<strong>Update from JMRI/master</strong> en haut á gauche du panneau ( ou
choisissez "Pull" depuis le menu "Repository )<br>
Vous verrez une animation d'un symbôle de branche dans un cercle, passant de la
ligne blanche vers le bas á la ligne en dessous:<br>
<a href="images/GhDtUpdateFrom.png"><img src="images/GhDtUpdateFrom.png" width=
"456" height="79" alt="GitHub Desktop Pull"></a>
<p>Ceci vous dit que du nouveau code a été copié dans votre répertoire, et dans
quelques secondes cclui-ci sera aussi copié sur votre ordinateur, aussi vous
pourrez z voir ou l'utiliser, á moins que qu'ils aient travaillé sur les mêmes
lignes de code ( Voir Résoudre un Conflit de Fusion, ci-dessous )</p>
</li>
<li>pour rendre vos changements disponibles pour la communauté cliquez "Pull
Request" ( bouton en haut á droite ), entrez un titre et cliquez "Create".<br>
<table summary="">
<tr>
<td><a href="images/GhDtPRCreate.png"><img src="images/GhDtPRCreate.png"
width="129" height="215" alt="GitHub Desktop Create PR dialog"></a>
</td>
<td>Le nom du bouton PR changera en <strong>#123</strong><br>
signalant que vous ne pouvez pas faire d'autre PR dans cette branche<br>
depuis ici ( mais vous pouvez encore soumettre des modifications ):</td>
<td><a href="images/GhDtPRCreated.png"><img src="images/GhDtPRCreated.png"
width="129" height="215" alt="GitHub Desktop PR Created message"></a>
</td>
</tr>
</table>
<p>Normalement, un PR est destiné á la branche principale du référentiel
original, dit JMRI: master. Vous pouvez "pull" votre propre répertoire distant,
mais seuls, les maintenanciers, pourront "pull" vos modifications dans le "vrai"
JMRI:master. Avant de le faire, ils étudient ce que vous avez écrit, peut être
même les mettre sur leur propre répertoire pout les tester avant de les fusionner
pour que tous les autres utilisateurs de JMRI les voient.<br>
Quand votre PR est pulled &amp; fusionné &amp; fermé, le nom PR #123 disparaìtra
et vous pourrez effacer la branche en toute sécurité.</p>
</li>
</ul>
</li>
</ul>
</dd>
<dt id="branch">Branchement</dt>
<dd>
Toujours travailler sur une <em>branche</em> nommée, jamais sur une nommée "master". Bien
que vous puissiez travailler directement sur la branche "master" par défaut, une bonne
"Pratique Git" vous encourage á créer une branche afin que vous puissiez travailler sur
elle et ne jamais gâcher votre copie locale de JMRI: master. Les branches dans Git sont
faciles et pas chères á créer et utiliser; vous pouvez avoir de multiple branches en même
temps, et basculer entre elles si vous travaillez sur des projets différents.
<p>nous recommandons que vous nommiez les branches démarrant avec votre nom d'utilisateur
GitHub ou vos initiales (par exepmle, "abc") ou quelque chose qui suggère que vous
travaillez dessus: <code>"abc-decoder-xml-change"</code>, <code>"abc-2015-09-14"</code>,
<code>"abc-next-cool-thing"</code>, et <code>"abc-patch-NNNN"</code> sont tous correcte.
De cette manière, nous savons que c'est vous.</p>
<ul>
<li>Utilisation de Git:
<ul>
<li>Pour créer une branche appelée ;<em>branchname</em>", vous faites<br>
<blockquote>
<code>git checkout -b <em>nomdebranche</em></code><br>
</blockquote>
Le "-b" dit de créer la branche. Pour basculer sur une branche existante, il
suffit d'oublier cette option:<br>
<blockquote>
<code>git checkout <em>nomdebranche</em></code><br>
</blockquote>
Pour voir toutes les branches actuelles, faire<br>
<blockquote>
<code>git branch</code><br>
</blockquote>
</li>
<li>Si d'autres personnes dans la communauté font des changements sur la branche
master, vous pouvez garder votre branche á jour en fusionnant ces changements avec
votre branche<br>
<blockquote>
<code>git checkout <em>branchname</em><br>
git merge -m"merging in current contents of master" master</code><br>
</blockquote>
( Si vous omettez l'option de message, vous pouvez être invité á en ajouter un
dans un éditeur ) Si des modifications ont été collectées et fusionnées, vous
pouvez ensuite les soumettre á votre branche:
<blockquote>
<code>git commit -a</code><br>
</blockquote>
</li>
<li>
<p>Lorsque vous avez terminé, fusionner vos modifications dans la ligne commune
de développement avec<br></p>
<blockquote>
<code>git checkout master<br>
git merge -m"merging to master" <em>branchname</em><br>
git commit -a</code>
</blockquote>
</li>
<li>Vous popuvez alors effacer votre branche ( si vous avez réellement fini avec
elle ) avec<br>
<blockquote>
<code>git checkout master<br>
git branch -d branchname</code>
</blockquote>
</li>
</ul>
</li>
<li>Utilisation de GitHub Desktop:
<ul>
<li>Cliquez sur le bouton "Add a Branch( + )", donnez un nom pour votre nouvelle
branche et en utilisant "From": sélectionnez la branche où vous voulez créer la
nouvelle branche:<br>
<a href="images/GhDtNewBranch.png"><img src="images/GhDtNewBranch.png" width="208"
height="122" alt="GitHub Desktop Repo Setting"></a></li>
<li>Pour effacer une branche, sélectionnez la dans le menu contextuel "Show
Branches", et sélectionnez <strong>Delete "my-patch"</strong> depuis le menu
Branch.<br>
Vous ne pouvez pas le faire avec la branche master, aussi ne travaillez pas sur
elle, mais sur une branche nommée.<br>
<a href="images/GhDtDeleteBranch.png"><img src="images/GhDtDeleteBranch.png" width=
"156" height="79" alt="GitHub Desktop Repo Setting"></a></li>
</ul>
</li>
<li>Vous pouvez opter pour créer et effacer des branches sur le web GitHub aussi
facilement. Plus d'aide sur <a href=
"https://help.github.com/articles/creating-and-deleting-branches-within-your-repository/">
Github Web Branching</a>.</li>
</ul>
</dd>
<dt id="share">Partage de Branches</dt>
<dd>
Un des avantages des branches Git est qu'il est aisé pour les gens de les partager. Ceci
permet á une personne de travailler avec quelque chose qu'un autre a terminé, y compris
l'édition et de l'amélioration, sans qu'elle soit accessible pour tout le monde.
<p>Arnie a développé quelque chose sur la branche ""arnie-great-tool". Bill veut essayer
de l'utiliser sur sa mise en page. Les étapes sont les suivantes:</p>
<ol>
<li>Arnie le soumet au repertoire local,et ensuite le met sur son répertoire GitHub.
<blockquote>
<code>git checkout arnie-great-tool<br>
(work on changes)<br>
git commit -m"Added support for the Frobnab 2000"<br>
git push</code>
</blockquote>
</li>
<li>Bill peut ensuite le récupérer depuis le répertoire d'Arnie
<blockquote>
<code>git pull https://github.com/arnie/JMRI.git arnie-great-tool<br>
git checkout arnie-great-tool</code>
</blockquote>
où la première partie de "pull" est l'URL du répertoire d'Arnie.
</li>
<li>Bill peut travailler avec le code, et même le changer si nécessaire. S'il fait des
changement et veut les envoyer á Arnie, il fait le même processus á l'envers:
<blockquote>
<code>git commit -m"Fixed a bug in sternerstat handling"<br>
git push</code>
</blockquote>
Puis Arnie peut fusionner ces changements dans sa propre copie avec:
<blockquote>
<code>git checkout arnie-great-tool<br>
git pull https://github.com/bill/JMRI.git arnie-great-tool</code>
</blockquote>
</li>
</ol>
</dd>
<dt>La résolution d'un conflit de fusion</dt>
<dd>
Il est pas rare que deux personnes ou plus ont des idées sur la même partie du programme
ou le site Web JMRI, chacun faisant des soumissions et et des PRs pour des parties des
mêmes fichiers. S'ils ont travaillé sur différentes lignes de texte ou de code dans un
fichier, GitHub sait comment combiner ces changements dans un seul fichier actualisé.
Vous pourriez avoir á vérifier que votre proposition fonctionne encore, car quelqu'un
pourrait avoir supprimer l'ancrage auquel vous sous référez etc. Si GHDt découvre qu'un
changement venant d'une personne a été inséré dans le master, et que vous avez préparé
des changements pour la même ligne, GitHub Desktop vous demande de l'aider á décider quoi
faire en affichant l'écran des Conflits ( Notez les points orange á côté de l'un des noms
de fichier ):<br>
<a href="images/GhDtConflictNote.png"><img src="images/GhDtConflictNote.png" width="410"
height="255" alt="GitHub Merge Conflict Note"></a>
<p>Cliquez sur ce nom et choisissez Show in Finder ou Open with External Editor ( GhDt
n'a pas d'outils d'édition).<br>
Pour trouver le point où le conflit est survenu, regarder les marqueurs
<code>&lt;&lt;&lt; HEAD ==== &gt;&gt;&gt; master</code> qui sont insérés par GitHub:<br>
<a href="images/GhDtConfictmark.png"><img src="images/GhDtConfictmark.png" width="212"
height="184" alt="GitHub Merge Conflict marking in code"></a><br>
Choisissez laquelle des deux versions vous souhaitez conserver ( ou faire quelque
combinaison) et enlever les lignes <code>&lt; === &gt;</code>!<br>
<a href="images/GhDtConflictFixed.png"><img src="images/GhDtConflictFixed.png" width=
"212" height="184" alt="GitHub Merge Conflict solved in code"></a></p>
<p>Cette nouvelle proposition devra encore être soumise á JMRI, en lui donnant un titre
approprié, ex: Conflit résolu et cliquez Commit ( et Sync ). Cette soumission
supplémentaire sera ajoutée á votre PR et fera partie de la proposition que les
maintenanciers verront. Vous ne devriez pas garder de conflit de fusion pendant la nuit,
car les maintenanciers n'ont pas de possibilité de les corriger pour vous et ils devront
l'ignorer jusqu'á vous l'ayrésolu.</p>
</dd>
<dt id="ci-tests">Tests d'Intégration Continue</dt>
<dd>
Les référentiels principaux de JMRI exécutent un jeu de tests sur tous les Pull Request (
PR ). C'est appelé Intégration Continue ( CI ), et est une méthode éprouvée pour
maintenir le code á une qualité supèrieure.
<p>vous pouvez ajouter ceci á vos répertoires afin que chaque "push" soit automatiquement
testé</p>
<p>Les deux services de test CI sont appelés "Travis CI" et "GitHub":</p>
<ul>
<li>Travis fonctionne sur Linux. il fait d'abord un contrôle des mauvaises fins de
ligne (voir <a href="#lineends">plus loin ).</a> puis exécute le jeu complet de tests
JUnits, y compris les opérations de tests d'écran.</li>
</ul>
Pour ajouter ceux-ci á votre répertore personnel:
<ul>
<li>Pour Travis aller á <a href="https://travis-ci.org">la page web Travis</a> et
"Inscrivez vous". Utilisez votre compte GitHub et Email. Á la fin du processus, il vous
sera demandé vos répertoires GitHub á surveiller; vous pouvez sélectionner á la fois le
"JMRI" et fourches "du site".</li>
</ul>
A partir de lá, en "poussant" á votre propre référentiel va exécuter les tests. Vous
recevrez un email lorsque les tests sont terminés, ou vous pouvez vérifier sur le web.
</dd>
<dt id="lineends">Manipulation des Fins de Ligne</dt>
<dd>
Mac et Linux utilise un caractère LF á la fin de chaque ligne; Windows utilise la paire
CRLF. Les fichiers textes JMRI sont, par convention, chargés dans Git avec les fins de
ligne LF.
<p>Il est très important que les utilisateurs Windows ne convertissent pas
accidentellement un fichier avec fin de ligne CRLF. Quand cela se produit Git pense que
toutes les lignes ont été changées: Git ne peut plus fournir d'informations utiles et
parcellaires sur les changements faits plus tôt sur les fichiers.</p>
<p>Il y a un fichier ".gitattributes" qui en dit plus sur l'implantations des lignes de
commande Git qui gèrent cela correctement. Malheureusement , tous les IDEs n'obéissent
pas aux directives dans les fichiers. Par exemple, pour voir NetBeans sur windows gérer
proprement les fins de lignes, un plugin spécifique doit être installé. Voir la <a href=
"NetBeans.shtml">page JMRI NetBeans</a> pour les spécificités.</p>
<p>Si dans un fichier avec des fins de ligne changées est accidentellement soumis etet
transmis dans un pull-request ( PR ), Le mauvais fichier dans ce PR sera détecté pendant
le test Travis et le PI <strong>ne sera</strong> ni accepté ni fusionné. En outre, le PR
sera marqué avec une étiquette "CR LF". Puisque l'historique a déjá été perdu dans ce
fichier, l'étiquette CRLF rappelle au maintenanciers qu'l ne suffit pas de simplement
changer les fins de ligne par LF, soumettre et "push": 'historique a été <u>perdu</u> et
des mesures plus compliquées doivent être prises<br>
Les deux approches sont:</p>
<ol>
<li>Abandonner Le PR et les modifications sous-jacentes, effacer la branche, et refaire
comme il faut. Si vous travaillez proprement, avec vos changements dans une branche
séparée et la soumission de petits changements, c'est le plan d'action recommandé.</li>
<li>Alternativement, il est possible d'utiliser les outils Git pour enlever la
soumission impropre de la branche. C'est beaucoup plus compliqué. Demander á un des
développeurs ayant l'expertise de Git de le faire pour vous et n'oubliez de les
remercier.</li>
</ol>
<p>Les maintenanciers qui rencontre un PR actualisé avec une étiquette CRLF voudront
vérifier que tous les fichiers dans le PR <em>ne montrent pas</em> toutes les lignes
changées. Si elles le sont, même si elles ont la fin de ligne LF correcte, le PR ne
pourra pas être fusionné.</p>
<p>Beaucoup d'<a href="XmlEditors.shtml">Éditeurs XML</a> ont un Réglage des Préférences
pour les fins de ligne.<br>
Par exemple, dans Expresso cochez que les Line Ending sont paramétrées pour <strong>Unix
(LF)</strong> avant de démarrer l'édition de fichier JMRI:<br>
<a href="images/EspressoPrefsLF.png"><img src="images/EspressoPrefsLF.png" width="226"
height="219" alt="Espresso LF Preference setting"></a></p>
</dd>
<dt id="testPR">Test d'un Pull Request</dt>
<dd>
<p>Les Pull requests sont juste un cas particulier d'une branche. Si vous voulez les
tester avant de les fusionner dans un master, vous pouvez les apporter dans votre
répertoire local et travailler avec eux. <a href="images/GitHubPullPRLinks.png"><img src=
"images/GitHubPullPRLinks.png" align="right" width="392" height="104" alt=
"GitHub Web PR screen"></a></p>
<p>Dans quelques cas, le site web GitHub fournit des instructions disponibles sur la
droite du pull-request lui-même. Regardez près du bas du lien de discussion, dans le
dernier bloc d'information. La bonne chose á propos de ceux-ci est qu'elles comportent
automatiquement les bons noms de branche, etc, inclus.</p>
<p>S'il n'y a pas d'instruction d'affichée, il y a ici une séquence de choses á
faire:</p>
<ul>
<li>Chercher le référentiel source et le nom de branche. Pour le faire, regarder en
haut de la demande de branche pour une ligne disant:
<blockquote>
<u>user</u> wants to merge <u>3</u> commits into JMRI:master from
<u>user</u>:<u>branch</u>
</blockquote>
<a href="images/GitHubPRbranchInfo.png"><img src="images/GitHubPRbranchInfo.png"
width="446" height="114" alt="GitHub Web branch screen"></a>
</li>
<li>Ensuite, pousser cette branche sur votre propre machine avec la commande:
<pre><code>
git fetch https://github.com/<u>user</u>/JMRI.git <u>branch</u>:<u>local-branch</u>
</code></pre>où vous avez remplacer chaque valeur soulignée:
<ul>
<li>Changez "user" par le nom utilisateur GitHub correcte</li>
<li>Changez "branch" par le nom de branche dans le pull request ( c'est OK si c'est
par ex: master )</li>
<li>changez "local-branch" par ce que vous voulez appeler la branche sur votre
propre machine. <em>Celle-ci ne doit pas déjá existé</em>.Quelque chose comme
"ma-branche-utilisateur" Vous rappellera de qui est le dépôt dont vous l'avez tiré,
tout en marquant les changements ultérieurs comme les vôtres si vous les partagez
plus tard avec quelqu'un d'autre. ( Il est recommandé que vous démarriez vos noms
de branches avec votre propre nom, cela simplifie tout sorte s d'opérations )</li>
</ul>
</li>
<li>La branche existe manitenant dans votre machine, Et vous pouvez juste vous déplacer
vers elle:
<pre><code>
git checkout <u>local-branch</u>
</code></pre>puis compler, tester, etc, comme vous le voulez. Vous pouvez même soumettre et
partager les changements si vous le désirez, parce que c'est maintenant votre propre branche de
développement: Elle a commencé á une autre personne, mais c'est maintenant la votre.
</li>
</ul>
</dd>
<dt id="SFnetPatches">Manipuler un Patch SF.net</dt>
<dd>
Éventuellement, nous allons passer de l'utilisation du <a href=
"https://sourceforge.net/p/jmri/patches/">traqueur SF.net</a> pour les <a href=
"https://guides.github.com/features/issues/">questions GitHub</a> pour manipuler le code
auquel les gens souhaitent participer. En attendant, voici un moyen suggéré pour traiter
un patch SF.net.
<ol>
<li>Dans votre répertoire local, créer une branche pour maintenir le patch:
<blockquote>
<code>git checkout -b patch-NNNN</code>
</blockquote>
Ou NNNN est le numéro du patch.
</li>
<li>Fusionnez dans le code modifié si nécessaire.</li>
<li>Soumettez vos changements:
<blockquote>
<code>git commit -m"Patch-NNNN plus the patch subject line (author name)"</code>
</blockquote>
</li>
<li>Il est maintenant dans votre répertoire sur une branche qui lui est propre, où vous
pouvez où vous pouvez tester des choses comme d'habitude</li>
<li>Quand vous êtes satisfait, poussez le contenu soumis de votre répertoire local vers
votre répertoire GitHub ( En supposant que la configuration par défaut, où " pousser "
va á votre propre dépôt sur GitHub) avec
<blockquote>
<code>git push origin patch-NNNN</code>
</blockquote>
</li>
<li>Allez á votre répertoire sur GitHub et démarrez le processus "pull request".</li>
<li>Sur le second écran, commutez la branche à comparer dans votre répertoire depuis
"<strong>master</strong>" vers "<strong>patch-NNNN</strong>". Puis le reste du Pull
Request se passe comme avant..</li>
<li>Éventuellement, un maintenancier JMRI peut manipuler et fusionner le pull request,
qui mettra le patch des changements sur la branche master dans le référentiel.</li>
<li>Vous pouvez attendre pour fusionner sur le référentiel principal, et ensuite
réaliser un
<blockquote>
<code>git pull</code>
</blockquote>
pour actualiser votre répertoire local avec le patch sur votre master local via
<blockquote>
<code>git checkout master<br>
git merge patch-NNNN<br></code>
</blockquote>
</li>
</ol>
L'avantage de cette approche est qu'elle vous permet de garder votre propre travail
séparé de tous les correctifs que vous manipulez. Les patches sont sur des branches
différentes de votre travail, de sorte qu'ils ne se chevauchent pas.
</dd>
</dl>
<h2>Opérations Moins-Courantes</h2>
<dl class="faq">
<dt id="migrateSVN">Migration des modifications non validées á partir d'un fichier SVN</dt>
<dd>
<p>Comme nous avons migré de SVN á Git depuis 2015, vous pouvez avoir encore des éditions
basées sur un vieux code. Si vous avez des changements pour le code JMRI dans un fichier
SVN que vous souhaitez soumettre dans la version en développement actuel sur Git. Voici
ce que nous recommandons:</p>
<ol>
<li>"Actualisez"vers le Head de SVN. Vous pouvez faire cela n'importe où, parce que
vous devez le faire avant que vos changemenets puissent être soumis. Faites le
maintenant et résolvez les problèmes.
<blockquote>
<code>$ svn update</code>
</blockquote>
</li>
<li>Vérifiez l'état et sauvez la sortie. Double vérification qu'ils n'y aient pas de
conflits de montrés.
<blockquote>
<code>$ svn status</code><br>
<br>
save a copy to reference later ...<br>
<br>
<code>$ svn status &gt; saved-status.txt</code>
</blockquote>
</li>
<li>Diff les sources et enregistrer la sortie
<blockquote>
<code>$ svn diff &gt; patch.txt</code>
</blockquote>
</li>
<li>Clonez une copie du référentiel JMRI Git sur votre machine. ( Voir les <a href=
"getgitcode.shtml">pages précédentes</a> pour les instructions détaillées. )
<blockquote>
<code>$ git clone https://github.com/JMRI/JMRI.git</code>
</blockquote>
</li>
<li>Dans votre nouveau répertoire cloneé, vérifier les sources comme elles étaient
quand le code a été changé de SVN vers Git:
<blockquote>
<code>$ git checkout tags/svn-30001</code>
</blockquote>
Ceci définit votre copie de travail pour qu'elle soit exactement la même que le
dernier contenu de SVN, la même que la base pour le <code>svn diff</code> vous avez
pris plus tôt.<br>
</li>
<li>Appliquez les changements que vous avez fait dans SVN dans le nouvel arbre Git
<blockquote>
<code>$ patch -p0 &lt; patch.txt</code>
</blockquote>
</li>
<li>Si vous avez créé et complété de nouveaux fichiers dans le répertoire de travail
SVN, par ex: des fichiers avec l'état "A" or "?":
<ul>
<li>Copiez ces fichiers á leur place correspondantes dans Git.</li>
<li>
<em>Ajoutez</em> les á la file d'attente de l'environnement de test Git: Pour que
<code>git ajoute ( chemin )</code> sur chacun d'entre eux pour dire quelque chose
á Git á leur sujet
<blockquote>
<code>$ git add <em>pathname/to/new/file</em></code>
</blockquote>
</li>
</ul>
</li>
<li>Vérifiez l'état pour avoir une liste des changements.
<blockquote>
<code>$ git status</code>
</blockquote>
Vous devez voir la même liste de fichiers changés que l'"état SVN" vous avez exécuté
plus tôt.<br>
</li>
<li><code>git stash save</code>
</li>
<li><code>git checkout master</code>
</li>
<li><code>git stash pop</code><br>
<br>
Selon la progression dans Git, des conflits pourraient apparaìtre. Si oui, vous devez
les résoudre ici.</li>
</ol>
<p>Maintenant vous pouvez démarrer le développement, sans avoir perdu quoique ce
soit.</p>
</dd>
<dt id="CVSCookies">Les cookies CVS, RCS et SVN embarqués</dt>
<dd>
<p>Quand JMRI utilisait á l'origine CVS, nous utilisions des lignes comme: <code># La
ligne suivante est maintenue par CVS, SVP ne la changz pas<br>
# $Revision$</code> comme moyen de suivre les versions des fichiers. Quand nous avons
migré vers SVN, nous avons conservéces lignes dans certains fichiers, comme decodeur XML,
Fichier properties, etc que les utilisateurs étaient susceptibles de modifier et
soumettre de nouveau pour l'inclusion.</p>
<p>Mais avec Git il y a moins de besoin pour ces derniers. Donc, nous supprimons ces
lignes. Si lors de travaux sur un fichier vous en voyez, habituellement dans l'en tête,
vous pouvez les effacer.</p>
</dd>
</dl>
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
</div>
<!-- closes #mainContent-->
</div>
<!-- closes #mBody-->
<script src="/js/help.js"></script>
<!-- FAQ-Tail -->
<script src="/web/js/faq.js"></script> <!-- /FAQ-Tail -->
</body>
</html>