Nl/FGAddon: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(83 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{BeingTranslated}}[[User:Kees|Kees]] ([[User talk:Kees|talk]]) 08:06, 29 January 2018 (EST)
[[File:FGAddon logo.png|270px|right]]
[[File:FGAddon logo.png|270px|right]]


De officiële '''FGAddon''' vliegtuighangar is een versie beheer systeem, gehost op de [https://sourceforge.net/projects/flightgear/ SourceForge infrastructure] van [[Nl/FlightGear]] en wordt gebruikt voor de continue ontwikkeling van FlightGear-vliegtuigen.
De officiële '''FGAddon''' vliegtuighangar is een versiebeheersysteem, gehost op de [https://sourceforge.net/projects/flightgear/ SourceForge infrastructure] van [[Nl/FlightGear|FlightGear]] en wordt gebruikt voor de continue ontwikkeling van FlightGear-vliegtuigen.
FGAddon is een {{wikipedia|Apache Subversion|noicon=1}} versiebeheer opslaglocatie. De vliegtuigen die hierin zijn opgenomen maken geen deel uit van het basispakket (de vliegtuigen die in het basispakket zijn opgenomen - de [[Nl/Cessna_172P]] en de [[UFO]] - worden in het FGData repository bewaard), maar worden gekoppeld aan elke stabiele release voor de [http://www.flightgear.org/download/%20FlightGear%20download%20pages FlightGear download pages].
FGAddon is een {{wikipedia|Apache Subversion|noicon=1}} versiebeheer opslaglocatie. De vliegtuigen die hierin zijn opgenomen maken geen deel uit van het basispakket (de vliegtuigen die in het basispakket zijn opgenomen - de [[Nl/Cessna_172P]] en de [[UFO]] - worden in het [http://sourceforge.net/p/flightgear/fgdata FGData] repository bewaard), maar worden gekoppeld aan elke stabiele release voor de [http://www.flightgear.org/download/ FlightGear download pages].


Het FGAddon-ontwikkelingscentrum voor vliegtuigen moet als onstabiel worden beschouwd. Wanneer je een stabiele FlightGear-release gebruikt, kun je het beste een vliegtuig met een overeenkomstig versienummer van de [http://www.flightgear.org/download/ FlightGear download pages] gebruiken. Echter, omdat de stabiele releases van FlightGear versie 3.4 en volgende van FlightGear worden gekoppeld aanwezig aan de opbergruimte van FGAddon, kunnen de Subversion hulpmiddelen een handige manier zijn om individuele vliegtuigen of het complete aanbod van ongeveer 500 vliegtuigen te verkrijgen. Ook als je gebruik maakt van [[FlightGear build server|lastest nightly releases]] of een [[Building FlightGear|self-compiled version of FlightGear]] van [http://sourceforge.net/p/flightgear/_list/git Git version control repositories], maakt het gebruik van FGAddon het mogelijk om het vliegtuig te updaten naar de nieuwste ontwikkelversie.
Het FGAddon-ontwikkelcentrum voor vliegtuigen moet als onstabiel worden beschouwd. Wanneer je een stabiele FlightGear-release gebruikt, kun je het beste een vliegtuig met een overeenkomstig versienummer van de [http://www.flightgear.org/download/ FlightGear download pages] gebruiken. Echter, omdat de stabiele releases van FlightGear versie 3.4 en volgende van FlightGear worden gekoppeld aan de opbergruimte van FGAddon, kunnen de Subversion hulpmiddelen een handige manier zijn om individuele vliegtuigen of het complete aanbod van ongeveer 500 vliegtuigen te verkrijgen. Ook als je gebruik maakt van de laatste [http://wiki.flightgear.org/FlightGear_build_server nightly releases] of een [[Building FlightGear|self-compiled version of FlightGear]] van [http://sourceforge.net/p/flightgear/_list/git Git version control repositories], maakt het gebruik van FGAddon het mogelijk om het vliegtuig te updaten naar de nieuwste ontwikkelversie.


== Geschiedenis ==
== Geschiedenis ==
[[File:Image103.gif|thumb|Original Win95 icon]]
[[File:Image103.gif|thumb|Original Win95 icon]]
Het FlightGear project werd op 8 april 1996 bedacht door David Murr, die een nieuwe vluchtsimulator voorstelde die geheel door vrijwiligers zou worden ontwikkeld.<ref>David Murr (Apr 9, 1996).  FlightGear proposal 1.0: [https://groups.google.com/forum/#!msg/rec.aviation.simulators/ny8HFBE5_T8/OdtIiGNGJc8J "A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@"].  Published on the rec.aviation.simulators newsgroup.</ref><ref>David Murr (1996).  FlightGear proposal 2.0: [http://www.flightgear.org/proposal-2.0 FLIGHT GEAR "This truly is as real as it gets!" - a proposal for a new flight simulator - REVISION 2.0].</ref><ref>David Murr (Oct 29, 1996).  FlightGear proposal 3.0: [http://www.flightgear.org/proposal-3.0 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0 - Wednesday, 10.30.96, "The future of flight simulation is here"].  Published on the [http://ftp.igh.cnrs.fr/pub/flightgear/www/old-stuff/flight-gear.9610 flight-gear@infoplane.com mailing list].</ref><ref>David Murr (Sep 11, 1998).  FlightGear proposal 3.0.1: [http://www.flightgear.org/proposal-3.0.1 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0.1 - Friday, Sep.11.98, "The future of flight simulation is here"].</ref>. Een deel van de aanvankelijke doelstellingen was het ontwikkelen van 2D- en 3D grafische routines voor de simulator. Dit was echter een enorme taak die begin 1997 onafgewerkt tot stilstand kwam omdat de hoofdontwikkelaar, Eric Korpela, zijn proefschrift aan het afronden was. Daarom heeft Curtis Olson vanaf 16 mei 1997 de ontwikkeling opnieuw opgestart met een nieuw project op basis van OpenGL-bibliotheken, waardoor in korte tijd een functionele vluchtsimulator kon worden samengesteld. <ref>Curtis Olson (Sep 28, 2015). [http://forum.flightgear.org/viewtopic.php?f=42&t=27558&p=259048#p259021 Re: A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@].  Published on the FlightGear forum.</ref>. De eerste resultaten hadden betrekking op de oorspronkelijke [[FlightGear CVS|flightgear and simgear CVS version control repositories]].
Het FlightGear project werd op 8 april 1996 bedacht door David Murr, die een nieuwe vluchtsimulator voorstelde die geheel door vrijwilligers zou worden ontwikkeld.<ref>David Murr (Apr 9, 1996).  FlightGear proposal 1.0: [https://groups.google.com/forum/#!msg/rec.aviation.simulators/ny8HFBE5_T8/OdtIiGNGJc8J "A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@"].  Published on the rec.aviation.simulators newsgroup.</ref><ref>David Murr (1996).  FlightGear proposal 2.0: [http://www.flightgear.org/proposal-2.0 FLIGHT GEAR "This truly is as real as it gets!" - a proposal for a new flight simulator - REVISION 2.0].</ref><ref>David Murr (Oct 29, 1996).  FlightGear proposal 3.0: [http://www.flightgear.org/proposal-3.0 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0 - Wednesday, 10.30.96, "The future of flight simulation is here"].  Published on the [http://ftp.igh.cnrs.fr/pub/flightgear/www/old-stuff/flight-gear.9610 flight-gear@infoplane.com mailing list].</ref><ref>David Murr (Sep 11, 1998).  FlightGear proposal 3.0.1: [http://www.flightgear.org/proposal-3.0.1 FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0.1 - Friday, Sep.11.98, "The future of flight simulation is here"].</ref>. Een deel van de aanvankelijke doelstellingen had betrekking op het ontwikkelen van 2D- en 3D grafische routines voor de simulator. Dit was echter een enorme taak die begin 1997 onvoltooid tot stilstand kwam omdat de hoofdontwikkelaar, Eric Korpela, zijn proefschrift aan het afronden was. Daarom heeft Curtis Olson vanaf 16 mei 1997 de ontwikkeling opnieuw opgestart met een nieuw project op basis van OpenGL-bibliotheken, waardoor in korte tijd een functionele vluchtsimulator kon worden samengesteld. <ref>Curtis Olson (Sep 28, 2015). [http://forum.flightgear.org/viewtopic.php?f=42&t=27558&p=259048#p259021 Re: A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@].  Published on the FlightGear forum.</ref>. De eerste resultaten hadden betrekking op de oorspronkelijke [[FlightGear CVS|flightgear and simgear CVS version control repositories]].


Naarmate het project groeide, nam ook de omvang, kwantiteit en kwaliteit van de FlightGear-onderdelen toe. Deze onderdelen waren niet logisch geordend en waren verspreid over verschillene onderdelen op het internet. Daarom werd besloten dat een groot deel van deze FlightGear-inhoud zou worden samengevoegd en opgeslagen in een nieuwe gecentraliseerde CVS-repository, fgdata genaamd, die op 22 oktober 2000 werd gecreëerd. Om de juridische herverdeling van deze activa in het kader van de FlightGear verspreiding mogelijk te maken, werd alleen een GPLv2-beleid aangenomen.  
Naarmate het project groeide, nam ook de omvang, kwantiteit en kwaliteit van de FlightGear-onderdelen toe. Deze onderdelen waren niet logisch geordend, maar verspreid over verschillende onderdelen op het internet. Daarom werd besloten dat een groot deel van deze FlightGear-inhoud zou worden samengevoegd en opgeslagen in een nieuwe gecentraliseerde CVS-repository, fgdata genaamd, die op 22 oktober 2000 werd gecreëerd. Om de juridische herverdeling van deze activa in het kader van de FlightGear verspreiding mogelijk te maken, werd alleen een GPLv2-beleid aangenomen.  


In mei 2010 werd de ontwikkeling onderbroken door het beruchte "koffie-incident" dat leidde tot het verlies van Curtis' thuis-server met alle FlightGear-repositysites <ref>James Turner (May 20, 2010). [http://thread.gmane.org/gmane.games.flightgear.devel/60340/focus=60341 <nowiki>[Flightgear-devel]</nowiki> Re: Flightgear git repositories (was Re: GIT or CVS - Confusion)] Published on the flightgear-devel mailing list.</ref>. Deze gebeurtenissen hebben geleid tot een [[FlightGear CVS|mass migration of all the CVS repositories to Git repositories]]. Vanwege bandbreedteproblemen werd besloten om de nieuwe repositories te hosten op de open source infrastructuur van Gitorious.
In mei 2010 werd de ontwikkeling onderbroken door het beruchte "koffie-incident" dat leidde tot het verlies van Curtis' thuis-server met alle FlightGear-repositories <ref>James Turner (May 20, 2010). [http://thread.gmane.org/gmane.games.flightgear.devel/60340/focus=60341 <nowiki>[Flightgear-devel]</nowiki> Re: Flightgear git repositories (was Re: GIT or CVS - Confusion)] Published on the flightgear-devel mailing list.</ref>. Deze gebeurtenissen hebben geleid tot een [[FlightGear CVS|mass migration of all the CVS repositories to Git repositories]]. Vanwege bandbreedteproblemen werd besloten om de nieuwe repositories te hosten op de open source infrastructuur van Gitorious.


Naarmate het project groeide, nam de omvang en omvang van de fgdata repository toe, vooral door het groeiende aantal vliegtuigen opgeslagen in [[$FG_ROOT]]/Aircraft, waardoor een splitsing onvermijdelijk was. Een eerste splitsingspoging werd georganiseerd door Gijs de Rooy en op 18 oktober 2011 aangekondigd <ref>Cedric Sodhi (Oct 18, 2011) [http://thread.gmane.org/gmane.games.flightgear.devel/66846 <nowiki>[Flightgear-devel]</nowiki> FGData Split Completed - a.k.a Life after the Split] Published on the flightgear-devel mailing list.</ref>. Elk vliegtuig werd in zijn eigen Git-repository geplaatst en alle vliegtuigen werden met behulp van een Git-submodulebenadering terug gekoppeld naar fgdata. Deze poging mislukte echter en werd gestopt. Vanaf deze datum tot eind 2014 werd het ontwerp van de fgdata splitsing besproken op de ontwikkelmailinglijst en samengevat in een [[FlightGear Git: splitting fgdata]] wiki artikel. In de planningsfasen stonden de repositories bekend als fgdata-oud en gesplitst in [[FGData]] (ook bekend als fgdata-nieuw) en FGAddon (ook bekend als flightgear-aircraft en fgaircraft). Na een half decennium van planning werd besloten dat de ontwikkeling van FlightGear-vliegtuigen via een centrale repository op het Subversion (SVN) versiebeheersysteem de beste oplossing zou zijn. Dit zou het communautair beheer en het onderhoud van het vliegtuig vergemakkelijken en tegelijkertijd zorgen voor modulariteit en kleinere downloads en kleinere lokale repositories.  
Naarmate het project groeide, namen omvang en bereik van de fgdata repository toe, vooral door het groeiende aantal vliegtuigen opgeslagen in [[Nl/$FG_ROOT|$FG_ROOT]]/Aircraft, waardoor een splitsing onvermijdelijk was. Een eerste splitsingspoging werd georganiseerd door Gijs de Rooy en op 18 oktober 2011 aangekondigd <ref>Cedric Sodhi (Oct 18, 2011) [http://thread.gmane.org/gmane.games.flightgear.devel/66846 <nowiki>[Flightgear-devel]</nowiki> FGData Split Completed - a.k.a Life after the Split] Published on the flightgear-devel mailing list.</ref>. Elk vliegtuig werd in zijn eigen Git-repository geplaatst en alle vliegtuigen werden met behulp van een Git-submodulebenadering weer gekoppeld aan fgdata. Deze poging was echter geen succes en werd gestopt. Vanaf deze datum tot eind 2014 werd het ontwerp van de fgdata splitsing bediscussieerd op de ontwikkelmailinglijst en samengevat in een [[FlightGear Git: splitting fgdata]] wiki artikel. In de planningsfasen stonden de repositories bekend als fgdata-oud en gesplitst in [[FGData]] (ook bekend als fgdata-nieuw) en FGAddon (ook wel bekend als flightgear-aircraft en fgaircraft). Na een half decennium van planning werd besloten dat de ontwikkeling van FlightGear-vliegtuigen via een centrale repository op het Subversion (SVN) versiebeheersysteem de beste oplossing zou zijn. Dit zou het communautair beheer en het onderhoud van de vliegtuigen vergemakkelijken en tegelijkertijd zorgen voor modulariteit, kleinere downloads en kleinere lokale repositories.  


Eind 2014 kondigde Gitorious, de aanbieder van de open-source-infrastructuur voor de FlightGear source code en data repositories, aan dat het zijn diensten tegen mei 2015 zou sluiten vanwege de overname door GitLab. Dit was de aanzet voor een versnelde splitsing van fgdata-oud en een overstap naar de SourceForge open source infrastructuur voor het hosten van de VC repositories. Andere delen van de FlightGear-infrastructuur werden al gehost door SourceForge, waardoor de verhuizing een logische stap werd. SourceForge stemde er schriftelijk mee in om de enorme FlightGear vliegtuigcollectie te hosten, waarvan de grootte ongeëvenaard is in open-sourcekringen. Vandaag de dag wordt de FGAddon SVN repository, samen met het grootste deel van de FlightGear projectinfrastructuur, gehost op SourceForge. In augustus 2015 werd een nieuw FlightGear-beleidsdocument opgesteld om de ongeschreven normen van het project vast te leggen <ref>[http://www.flightgear.org/flightgear-policy-document/ FlightGear Policy Document and Roadmap], draft document.</ref>. Met dit document is het licentiebeleid voor de FlightGear-vliegtuigen die op FGAddon worden gehost, opgewaardeerd van GPLv2-only naar GPLv2+. Om de licentie proliferatie tegen te gaan, complicaties te vermijden door werk vanuit het ene vliegtuig in het andere te gebruiken, en omwille van de integriteit en het welzijn van het FlightGear-project, wordt sterk aanbevolen dat alle originele inhoud (zowel die wordt gehost in FGAddon of elders) gebruik maakt van een GPLv2+ licentie.
Eind 2014 kondigde Gitorious, de aanbieder van de open-source-infrastructuur voor de FlightGear source code en data repositories, aan dat het zijn diensten tegen mei 2015 zou sluiten vanwege de overname door GitLab. Dit was de aanzet voor een versnelde splitsing van fgdata-oud en een overstap naar de SourceForge open source infrastructuur voor het hosten van de VC repositories. Andere delen van de FlightGear-infrastructuur werden al gehost door SourceForge, waardoor de verhuizing een logische stap werd. SourceForge stemde er schriftelijk mee in om de enorme FlightGear vliegtuigcollectie te hosten, een collectie waarvan de grootte ongeëvenaard is in open-sourcekringen. Vandaag de dag wordt de FGAddon SVN repository, samen met het grootste deel van de FlightGear projectinfrastructuur, gehost op SourceForge.  
 
In augustus 2015 werd een nieuw FlightGear-beleidsdocument opgesteld om de ongeschreven normen van het project vast te leggen <ref>[http://www.flightgear.org/flightgear-policy-document/ FlightGear Policy Document and Roadmap], draft document.</ref>. Met dit document is het licentiebeleid voor de FlightGear-vliegtuigen die op FGAddon worden gehost, opgewaardeerd van GPLv2-only naar GPLv2+. Om de licentie proliferatie tegen te gaan, complicaties te vermijden door werk vanuit het ene vliegtuig in het andere te gebruiken, en omwille van de integriteit en het welzijn van het FlightGear-project, wordt sterk aanbevolen dat alle originele inhoud (zowel die wordt gehost in FGAddon of elders) gebruik maakt van een GPLv2+ licentie.


<!--
<!--
{{FGCquote
{{FGCquote
|1= The short summary is that we already were maintaining a well established presence on sourceforge. So after quite a bit of discussion, we decided to consolidate there. In addition, we had a perpetual complaint that the fgdata git repository was far too big for most people to initially download (1Gb+). Thus we split off most of the aircraft (expecting unbounded future growth potential) into an svn repository called fgaddon. Sourceforge supports both git and svn repositories. This puts a dependency on a central svn server for our fgaddon aircraft repository, but lightens the weight for anyone wanting to checkout a copy of everything (you don't need a copy of the entire development history, and a copy of every version ever created of every aircraft if you just want to have the latest versions.) Plus svn allows checking out subtrees (without needing the whole repository) so this can also serve as a potential JIT single aircraft service provider. Of course there are always multiple ways to solve every problem and of course every engineering decision has trade offs. Github is a nice provider, no doubt. I have been using them for a number of my own personal repositories. Git of course has ways to address many of the issues we have addressed, but of course everything has strengths and weaknesses.
|1= De korte samenvatting is dat we al duidelijk aanwezig waren op sourceforge. Dus na een flinke discussie hebben we besloten om daar te consolideren. Daarnaast hadden we een continue klacht dat de fgdata git repository voor de meeste mensen veel te groot was om direct te downloaden (1Gb+). Daarom hebben we het grootste deel van de vliegtuigen (in het vooruitzicht van een onbegrensde toekomstige groei) opgesplitst in een svn repository genaamd fgaddon. Sourceforge ondersteunt zowel git als svn repositories. Dit zorgt voor een afhankelijkheid van een centrale svn server voor onze fgaddon vliegtuig repository, maar maakt het eenvoudiger voor iedereen die een kopie van dit alles wil (je hebt geen kopie nodig van de hele ontwikkelingsgeschiedenis plus een kopie van elke versie die ooit van elk vliegtuig is gemaakt, als je alleen de laatste versies wilt hebben). Daarnaast maakt svn het mogelijk om subtrees uit te checken (zonder dat je de hele repository nodig hebt), zodat dit ook kan dienen als een potentiële JIT single aircraft service provider. Natuurlijk zijn er altijd meerdere manieren om elk probleem op te lossen en natuurlijk heeft elke technische beslissing ook een andere kant. Github is een aardige provider, geen twijfel over mogelijk. Ik heb ze gebruikt voor een aantal van mijn eigen persoonlijke repositories. Git heeft natuurlijk mogelijkheden om veel van de problemen die wij hebben aan te pakken, maar alles heeft altijd sterke en zwakke punten.
|2= {{cite web
|2= {{cite web
   | url    = http://sourceforge.net/p/flightgear/mailman/message/35054405/
   | url    = http://sourceforge.net/p/flightgear/mailman/message/35054405/
Line 35: Line 36:
== Het verkrijgen van vliegtuigen ==
== Het verkrijgen van vliegtuigen ==


{{tip|Als je graag andere vliegtuigen voor een stabiele FlightGear release zou willen en als je niet op de hoogte bent van een versiebeheersysteem, moet je de [[FlightGear_hangars|FlightGear hangars]] bezoeken om vliegtuigen te downloaden.}}
{{tip|Als je graag andere vliegtuigen voor een stabiele FlightGear release zou willen gebruiken en als je niet op de hoogte bent van een versiebeheersysteem, moet je de [[FlightGear_hangars|FlightGear hangars]] bezoeken om vliegtuigen te downloaden.}}
{{caution|Als de FlightGear- en FGAddon-versies van vliegtuigen niet met elkaar overeenkomen, kun je vreemde bugs verwachen en zal de versie-mismatch van deze combinatie niet worden ondersteund door de FlightGear-community.}}
{{caution|Als de FlightGear- en FGAddon-versies van vliegtuigen niet met elkaar overeenkomen, kun je onverwachte problemen ontmoeten en zal de versie-mismatch van deze combinatie niet worden ondersteund door de FlightGear-community.}}


Met toegang tot de Subversion (Subversion (SVN) tools kan de FGAddon versie control repository een handige manier zijn om vliegtuigen te verkrijgen voor gebruik binnen een specifieke FlightGear versie rechtstreeks van de officiële bron. Bij gebruik van de [[FlightGear Build Server|nightly builds]] of een [[Building FlightGear|version controlled copy of FlightGear]], moet je de meest recente versie van het vliegtuig in ontwikkeling gebruiken zodat de versies overeenkomen. Hieronder wordt beschreven hoe je als FlightGear gebruiker de officiële repository kunt gebruiken om vliegtuigen te verkrijgen.
Met toegang tot de Subversion Subversion (SVN) tools kan de FGAddon versie control repository een handige manier zijn om vliegtuigen te verkrijgen voor gebruik binnen een specifieke FlightGear versie en wel rechtstreeks van de officiële bron. Bij gebruik van de [[FlightGear Build Server|nightly builds]] of een [[Building FlightGear|version controlled copy of FlightGear]], moet je de meest recente versie van het vliegtuig downloaden zodat de versies overeenkomen. Hieronder wordt beschreven hoe je als FlightGear gebruiker de officiële repository kunt gebruiken om vliegtuigen te verkrijgen.


=== Voorbereiding ===
=== Voorbereiding ===
Line 45: Line 46:
* '''Mac OS X''': Installeer de [https://subversion.apache.org/packages.html#osx official Subversion client].
* '''Mac OS X''': Installeer de [https://subversion.apache.org/packages.html#osx official Subversion client].
* '''GNU/Linux''': Installeer de Subversion client via de package manager. Dit zal gewoonlijk een pakket zijn met de naam <code>subversion-*.{rpm,deb}</code>.
* '''GNU/Linux''': Installeer de Subversion client via de package manager. Dit zal gewoonlijk een pakket zijn met de naam <code>subversion-*.{rpm,deb}</code>.
** Dit commando zou ook moeten werken voor het Raspberry Pi platform: <code>sudo apt-get install subversion</code>. Het bevat ook een client.


=== FGAddon mappen structuur ===
=== FGAddon mappenstructuur ===
Om te weten hoe je de FGAddon repository moet gebruiken, is een goed begrip van de opzet van de repository directory essentieel.
Om te weten hoe je de FGAddon repository moet gebruiken, is een goed begrip van de opzet van de repository directory essentieel.
* <code>/trunk</code>:  In deze basismap zitten de in ontwikkeling zijnde versies van het vliegtuig.
* <code>/trunk</code>:  In deze basismap zitten de in ontwikkeling zijnde versies van de vliegtuigen.
* <code>/branches/release-x.y.z/</code>:  Deze directories/mappen komen overeen met de specifieke stabiele FlightGear releases.
* <code>/branches/release-x.y.z/</code>:  Deze directories/mappen komen overeen met de verschillende stabiele FlightGear releases.
De [https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/ web interface for the FGAddon repository] maakt het mogelijk een overzicht van alle vliegtuigen te krijgen.
De [https://sourceforge.net/p/flightgear/fgaddon/HEAD/tree/ web interface for the FGAddon repository] maakt het mogelijk een overzicht van alle vliegtuigen te krijgen.


Line 70: Line 72:
}}
}}


Als je alle ~500 vliegtuigen uit de repository wil hebben - pas op dat dit een enorme download van meer dan 6 GB zal zijn - gebruik dan de volgende opdracht:
Als je alle ~500 vliegtuigen uit de repository wil hebben - pas wel op dat dit een enorme download van meer dan 6 GB zal zijn - gebruik dan de volgende opdracht:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon co|post=flightgear-fgaddon}}
{{fgaddon co|post=flightgear-fgaddon}}
Line 76: Line 78:
}}
}}


Wanneer je een stabiele FlightGear release gebruikt, bijvoorbeeld FlightGear 2016.1,  om alle FGAddon-vliegtuigen te laten overeenkomen met de geïnstalleerde FlightGear-versie, gebruik dan:
Wanneer je een stabiele FlightGear release gebruikt, bijvoorbeeld FlightGear 2016.1,  en je wilt alle FGAddon-vliegtuigen downloaden voor die specifieke FlightGear-versie, gebruik dan:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon co|branch=branches/release-2016.1|post=flightgear-fgaddon}}
{{fgaddon co|branch=branches/release-2016.1|post=flightgear-fgaddon}}
Line 83: Line 85:


==== GUI cliënten en TortoiseSVN ====
==== GUI cliënten en TortoiseSVN ====
Wanneer je een van de GUI's van Subversion gebruikt (GUI = grafische gebruikersinterfaces), kopieer dan gewoon een van de bovenstaande URL's van https:// en gebruik deze in de GUI (elke GUI is anders, zie de relevante documentatie voor hulp). Voor de unieke TortoiseSVN tool:
Wanneer je een van de GUI's van Subversion gebruikt (GUI = grafische gebruikersinterfaces), kopieer dan gewoon een van de bovenstaande <code>https://</code> URL's en gebruik deze in de betreffende GUI (elke GUI is anders, zie de relevante documentatie voor hulp). Voor de versie van TortoiseSVN:
* Maak in Windows Verkenner een nieuwe, lege map aan voor het vliegtuig (of voor de vliegtuigcollectie)
* Maak in Windows Verkenner een nieuwe, lege map aan voor het vliegtuig (of voor een verzameling vliegtuigen)
* Klik met de rechtermuisknop in de nieuwe map en selecteer <code>SVN Checkout...</code>
* Klik met de rechtermuisknop in de nieuwe map en selecteer <code>SVN Checkout...</code>
* Kopieer en plak de URL, bijvoorbeeld {{fgaddon source|path=Aircraft/V22-Osprey|type=svn|full=1}}, laat alle andere instellingen zoals ze zijn en importeer door op <code>OK</code> te klikken.
* Kopieer en plak de URL, bijvoorbeeld {{fgaddon source|path=Aircraft/V22-Osprey|type=svn|full=1}}, laat alle andere instellingen zoals ze zijn en importeer door op <code>OK</code> te klikken.


Zie voor meer details de [http://tortoisesvn.net/support.html TortoiseSVN documentation]. Houd er rekening mee dat er een optie is om de commandoregeltools te installeren bij het installeren van TortoiseSVN.
Zie voor meer details de [http://tortoisesvn.net/support.html TortoiseSVN documentation]. Houd er rekening mee dat er een optie is om het commandoregelgereeedschap mee te nemen bij het installeren van TortoiseSVN.


=== Vliegen ===
=== Vliegen ===
Om het nieuw gedownloade vliegtuig te gebruiken, raadpleeg je het artikel [[Howto:Install aircraft]], waarbij je de instructies voor het downloaden en uitpakken van het vliegtuig overslaat.
Om het nieuw gedownloade vliegtuig te gebruiken, raadpleeg je het artikel [[Howto:Install aircraft]], waarbij je de instructies voor het downloaden en uitpakken van het vliegtuig kunt overslaan.


=== Updaten ===
=== Updaten ===
Line 104: Line 106:


=== Contact met de oorspronkelijke vliegtuigontwikkelaars ===
=== Contact met de oorspronkelijke vliegtuigontwikkelaars ===
De eerste stap om vliegtuigen van de officiële FlightGear hangar of overigens afkomstig uit een van de [[Flightgear_hangars#Aircraft_hangars|private hangars]] te ontwikkelen en vooruit te helpen is het contact leggen met de oorspronkelijke ontwikkelaar(s) van het vliegtuig. Hun namen zijn te vinden in het <code>*-set.xml</code> bestand, binnen de <code><authors></code> XML tag. Vaak wordt het e-mailadres van de contactpersoon vermeld in een README-bestand of een ander tekstbestand in de bestandenmap van het betreffende vliegtuig. Zo niet, dan kan soms contact worden opgenomen via [https://lists.sourceforge.net/lists/listinfo/flightgear-devel FlightGear development mailing list]. Contact opnemen met de oorspronkelijke auteurs is belangrijk om te zien of het vliegtuig momenteel actief in ontwikkeling is en of je als onderdeel van het ontwikkelteam mee kunt doen.  
 
De eerste stap om vliegtuigen uit de officiële FlightGear hangar of vanuit een van de [[Flightgear_hangars#Aircraft_hangars|private hangars]] te helpen ontwikkelen en vooruit te helpen is door contact te leggen met de oorspronkelijke ontwikkelaar(s). Hun namen kun je vinden in het <code>*-set.xml</code> bestand en wel in de <code><authors></code> XML tag. Vaak wordt het emailadres van de ontwikkelaar vermeld in een README-bestand of in een ander tekstbestand in de bestandenmap van het betreffende vliegtuig. Zo niet, dan kan soms contact worden opgenomen via [https://lists.sourceforge.net/lists/listinfo/flightgear-devel FlightGear development mailing list]. Contact opnemen met de oorspronkelijke ontwikkelaar(s) is belangrijk om te zien of het vliegtuig nog actief wordt doorontwikkeld en of jij als onderdeel van het ontwikkelteam mee kunt helpen.


=== SourceForge account ===
=== SourceForge account ===
Om aan de officiële vliegtuigcollectie te werken, moet eerst een SourceForge-account worden aangemaakt. Dit zal het mogelijk maken, zodra toegang is verleend, om ofwel direct bijdragen te leveren via de FGAddon repository of om te werken als onderdeel van een SourceForge-ontwikkelteam.  Het registratieproces neemt zeer weinig tijd in beslag en de SourceForge ontwikkel-infrastructuur en ontwikkelaarsdiensten zijn in minder dan een minuut toegankelijk.


=== Commit access/Toelating ===
Om aan de officiële vliegtuigcollectie mee te kunnen werken, moet eerst een https://sourceforge.net/user/registration SourceForge-account worden aangemaakt. Op die manier kun je, zodra toegang is verleend, ofwel direct bijdragen leveren via de FGAddon repository of meewerken als onderdeel van een SourceForge-ontwikkelteam. Het registratieproces neemt zeer weinig tijd in beslag en de SourceForge ontwikkel-infrastructuur en ontwikkelaarsdiensten zijn in minder dan een minuut toegankelijk.
 
=== Toegang tot Commit ===


Voordat je toegang tot "commit" krijgt, moet je alles in het werk stellen om contact op te nemen met de oorspronkelijke auteur(s) om zeker te weten dat het vliegtuig van jouw keuze actief wordt ontwikkeld. Als dit niet lukt, meld je dan aan voor de [https://sourceforge.net/projects/flightgear/lists/flightgear-fgaddon-commitlogs Flightgear FGAddon commitlogs mailing list] en vraag daar om hulp. Als het vliegtuig een actieve ontwikkelaar heeft, zal worden aangegeven hoe je aan de ontwikkeling kunt bijdragen. Vraag anders of iemand je vrijwillig kan begeleiden in het proces om een vliegtuigontwikkelaar te worden met volledige commit toegang.
Voordat je toegang tot "commit" krijgt, moet je eerst alles in het werk stellen om contact op te nemen met de oorspronkelijke ontwikkelaar(s) om zeker te weten dat het vliegtuig van jouw keuze actief wordt ontwikkeld. Als dit niet lukt, meld je dan aan voor de [https://lists.sourceforge.net/lists/listinfo/flightgear-devel FlightGear development mailing list] en vraag daar om hulp. Als het vliegtuig een actieve ontwikkelaar heeft, zal worden aangegeven hoe je aan de ontwikkeling kunt bijdragen. Vraag anders of iemand jou als mentor kan begeleiden in het proces om een vliegtuigontwikkelaar te worden met volledige commit toegang.


Om toegang te krijgen tot commit, zul je eerst:
Om toegang te krijgen tot commit, zul je eerst:
 
# Jouw capaciteiten en ontwikkelvaardigheden moeten aantonen.
# Jouw capaciteiten en ontwikkelingvaardigheden moeten aantonen.
# Moeten duidelijk maken dat je het [http://www.flightgear.org/flightgear-policy-document/ flightgear policy document] begrijpt.
# Moeten duidelijk maken dat je het [http://www.flightgear.org/flightgear-policy-document/ flightgear policy document] begrijpt.
# Moeten laten zien dat je de GPL-licentieproblemen begrijpt en dat je te geen auteursrechtelijk beschermd, niet-GPL-materiaal zult gebruiken.
# Moeten laten zien dat je de GPL-licentieproblemen begrijpt en dat je geen auteursrechtelijk beschermd, niet-GPL-materiaal, zult gebruiken.
# Het vertrouwen van de FlightGear-gemeenschap verdient.
# Het vertrouwen van de FlightGear-gemeenschap verdient.


Deze eenvoudig te nemen hindernissen zijn ontworpen om de database te beschermen tegen beschadiging of vervuiling door illegale inhoud.
Deze eenvoudig te nemen hindernissen zijn ontworpen om de database te beschermen tegen beschadiging of vervuiling door illegale inhoud.


Om jouw wijzigingen in de FGAddon database te laten vastleggen, moet je afstemmen met de oorspronkelijke vliegtuigontwikkelaar of met jouw mentor, hoe je dat het beste kunt regelen. Afhankelijk van het [[FGAddon#Development_scenarios|ontwikkelingsscenario]] kan dit door samenvoeging van aanvraag, bestandsoverdracht, het primitieve patchsysteem of op een andere handige manier. Zodra je denkt dat je jouw capaciteiten hebt bewezen en dat je op de hoogte bent van GPL-licentieproblatiek is het zaak je een bericht te sturen naar de mailinglijst voor ontwikkelaars met de vraag of je toegang kunt krijgen en tegelijkertijd een SourceForge-gebruikersnaam doorgeven.
Om jouw wijzigingen in de FGAddon database te laten vastleggen, moet je afstemmen met de oorspronkelijke vliegtuigontwikkelaar of met jouw mentor, hoe je dat het beste kunt regelen. Afhankelijk van het [[Nl/FGAddon#Ontwikkelscenario.27s|Nl/FGAddon#Ontwikkelscenario's]] kan dit door samenvoeging van aanvraag, bestandsoverdracht, het primitieve patchsysteem of op een andere handige manier. Zodra je denkt dat je jouw capaciteiten hebt bewezen en dat je op de hoogte bent van GPL-licentieproblatiek is het zaak een bericht te sturen naar de mailinglijst voor ontwikkelaars met de vraag of je toegang kunt krijgen en tegelijkertijd een SourceForge-gebruikersnaam doorgeven.


=== FGAddon commitlog mailinglijst ===
=== FGAddon commitlog mailinglijst ===
Om alle wijzigingen te volgen die zich voordoen in de FGAddon-repository, moet je je abonneren op de speciale [https://sourceforge.net/projects/flightgear/lists/flightgear-fgaddon-commitlogs Flightgear FGAddon commitlogs mailing list]. Per vastlegging wordt één e-mail verstuurd, zodra de vastlegging is gedaan.
 
Om alle wijzigingen te kunnen volgen die zich voordoen in de FGAddon-repository, moet je je abonneren op de speciale [https://lists.sourceforge.net/lists/listinfo/flightgear-fgaddon-commitlogs Flightgear FGAddon commitlogs mailing list]. Per vastlegging wordt één e-mail verstuurd, zodra de vastlegging is gedaan.


== Version control tools/Hulpmiddelen voor versiebeheer ==
== Version control tools/Hulpmiddelen voor versiebeheer ==
Om toegang te krijgen tot FGAddon en het te gebruiken voor vliegtuigontwikkeling, zijn de Subversion of SVN versie control hulpmiddelen nodig. Als alternatief biedt git-svn een interface voor degenen die de voorkeur geven aan de git versie beheer systemen.
 
Om toegang te krijgen tot FGAddon en het te gebruiken voor vliegtuigontwikkeling, zijn de Subversion of SVN versie control hulpmiddelen nodig. Als alternatief biedt git-svn een interface voor degenen die de voorkeur geven aan de git versiebeheersystemen.


=== Subversion ===
=== Subversion ===


==== Instellen ====
==== Instellen ====
De FGAddon vliegtuighangar is opgeslagen in een Subversion database op de SourceForge infrastructuur en daarom is het het eenvoudigst om de SVN tools te gebruiken voor de ontwikkeling van vliegtuigen en zo de minste problemen te ontmoeten. Zie het hoofdstuk [[FGAddon#Preparation|subversion installatie]] voor het instellen van dit gereedschap.
De FGAddon vliegtuighangar is opgeslagen in een Subversion database op de SourceForge infrastructuur en daarom is het het eenvoudigst om de SVN tools te gebruiken voor de ontwikkeling van vliegtuigen om zo de minste problemen te ontmoeten. Zie het hoofdstuk [[Nl/FGAddon#Voorbereiding|Voorbereiding]] voor het instellen van deze hulpmiddelen.


==== Repository checkout ====
==== Repository checkout ====
De eerste stap is de 'checkout' van een kopie van ofwel de trunk of één van de vliegtuigen in de database:
De eerste stap is de zogenaamde 'checkout' van een kopie van ofwel de repository trunk of één van de vliegtuigen daaruit:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn co <url> <dir>
svn co <url> <dir>
</syntaxhighlight>
</syntaxhighlight>


Voor het gebruik van de relevante URL moet je een van de [[FGAddon#Development_scenarios|ontwikkelscenario's]] kiezen en de URL in die sectie vinden. Dit betekent dat Subversion je in staat stelt om ofwel één enkel bestand uit te checken tot aan de volledige database.
Voor het gebruik van de relevante URL moet je een van de [[Nl/FGAddon#Ontwikkelscenario.27s|Ontwikkelscenario's]] kiezen en de URL in die sectie vinden. Dit commando maakt een lokale subversion repository kopie aan in de gegeven <code><dir></code> directory. Let op dat dit alleen het deel van de FGAddon repository bevat dat in de URL is gespecificeerd. Dit betekent dat Subversion je in staat stelt om ofwel één enkel bestand uit te checken tot aan de volledige database.


==== Informatie en geschiedenis ====
==== Informatie en geschiedenis ====
Om op elk gewenst moment informatie bekijken over het lokale archief, type je:
Om op elk gewenst moment informatie te kunnen bekijken over het lokale bestand, type je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn info
svn info
Line 157: Line 162:


==== Dagelijks gebruik ====
==== Dagelijks gebruik ====
Het belangrijkste git commando dat je zult gebruiken is:
Het belangrijkste Subversion commando dat je zult gebruiken is:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn add <path>
svn add <path>
</syntaxhighlight>
</syntaxhighlight>


Dit registreert het bestand of de map <code><path></code> binnen de lokale repository om toe te staan dat het later 'gecommit' wordt naar de lokale git repository. Als je een bestand of map wilt verplaatsen of hernoemen, gebruik je:
Dit registreert het bestand of de map <code><path></code> binnen de lokale repository om toe te staan dat het later 'gecommit' wordt naar de remote git repository. Als je een bestand of map wilt verplaatsen of hernoemen, gebruik je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn mv <path1> <path2>
svn mv <path1> <path2>
</syntaxhighlight>
</syntaxhighlight>


Dit moet worden gebruikt in plaats van normaal verplaatsen / hernoemen van bestanden, zodat de wijziging wordt bijgehouden in de lokale repository. Als je een bestand uit de lokale repository wilt verwijderen, typ je:
Dit moet worden gebruikt in plaats van het normaal verplaatsen/hernoemen van bestanden, zodat de wijziging wordt bijgehouden in de lokale repository. Als je een bestand uit de lokale repository wilt verwijderen, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn rm <path>
svn rm <path>
Line 188: Line 193:
</syntaxhighlight>
</syntaxhighlight>


Hiermee wordt een editor geopend waarmee je een informatief commit-logbericht kunt schrijven. Wanneer je commit, kun je het beste kleine modulaire commits maken, zodat elke commit overeenkomt met een enkel doel. Merk op dat je alleen commits kunt aanbieden aan FGAddon als je commit-toegang hebt.
Hiermee wordt een editor geopend waarmee je een informatief commit-logbericht kunt schrijven. Wanneer je commit, kun je het beste kleine modulaire commits maken, zodat elke commit overeenkomt met een enkel doel. Merk op dat je alleen commits kunt aanbieden aan FGAddon als je [[Nl/FGAddon#Toegang_tot_Commit|Toegang tot Commit]] hebt.


==== Vertakken ====
==== Vertakken ====
Line 194: Line 199:


=== Git-svn ===
=== Git-svn ===
De git-svn tool is handig voor degenen die al vertrouwd zijn met het gebruik van git repositories of voor degenen die hun eigen prive vliegtuig ontwikkelruimte willen hebben. Git-svn verzorgt een brug tussen de remote FGAddon Subversion repository en een lokale git repository. Voor degenen die niet vertrouwd zijn met git; git-svn in combinatie met de git repository zijn veel ingewikkelder om te gebruiken dan het native [[FGAddon#Subversion|Subversion gereedschap]]Subversion gereedschap.
 
De git-svn tool is handig voor diegenen die al vertrouwd zijn met het gebruik van git repositories of voor degenen die hun eigen privé vliegtuig ontwikkelruimte willen hebben. Git-svn verzorgt een brug tussen de remote FGAddon Subversion repository en een lokaal opgeslagen git repository. Voor degenen die niet vertrouwd zijn met git, git-svn in combinatie met de git repository is veel ingewikkelder om te gebruiken dan het native [[Nl/FGAddon#Subversion|Subversion gereedschap]].


Voor meer informatie over het gebruik van git, zie [[Howto:Start_using_git|Howto: start werken met git]] Howto: Begin git te gebruiken. In het volgende wordt ervan uitgegaan dat slechts één enkel vliegtuig wordt opgeslagen in de lokale git repository
Voor meer informatie over het gebruik van git, zie [[Howto:Start_using_git|Howto: start werken met git]] Howto: Begin git te gebruiken. In het volgende wordt ervan uitgegaan dat slechts één enkel vliegtuig wordt opgeslagen in de lokale git repository
Line 207: Line 213:
</syntaxhighlight>
</syntaxhighlight>


Voor het gebruik van de relevante vliegtuig-URL moet je een van de [[FGAddon#Development_scenarios|ontwikkelscenario's]] kiezen en de betreffende URL. De URL is afhankelijk van jouw FGAddon commit access status. Het kloon commando zal een lokale git repository aanmaken met alleen die vliegtuigen die jou interesseren en zal de git-svn brug initialiseren.
Voor het gebruik van de relevante vliegtuig-URL moet je een van de [[Nl/FGAddon#Ontwikkelscenario.27s|Ontwikkelscenario's]] kiezen en de betreffende URL vind je in dat onderdeel. De URL is afhankelijk van jouw FGAddon [[Nl/FGAddon#Toegang_tot_Commit|Toegang tot Commit]]. Het kloon commando zal een lokale git repository aanmaken met alleen het vliegtuig van jouw voorkeur en zal de git-svn brug initialiseren.


==== Informatie en geschiedenis ====
==== Informatie en geschiedenis ====
Om op elk gewenst moment informatie bekijken over het lokale archief, typ::
Om op elk gewenst moment informatie te kunnen bekijken over het lokale bestand, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn info
git svn info
Line 217: Line 223:
</syntaxhighlight>
</syntaxhighlight>


To see the history of the checked out copy of the repository, typ je:
Om de geschiedenis van de uitgecheckte kopie van het archief te zien, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log
git log
Line 223: Line 229:


==== Dagelijks gebruik ====
==== Dagelijks gebruik ====
De belangrijkste git commando dat je zult gebruiken is:
Het belangrijkste git commando dat je zult gebruiken is:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git add <path>
git add <path>
Line 233: Line 239:
</syntaxhighlight>
</syntaxhighlight>


Merk echter op dat git geschiedenis niet zo robuust is als geschiedenis in svn. Zie de sectie [[FGAddon#Moving_or_renaming_files]] in de git-svn voor meer informatie over het uitvoeren van deze handeling. Als je een bestand uit het lokale archief wilt verwijderen, typ je:
Let echter op dat de git geschiedenis niet zo robuust is als geschiedenis in svn. Zie de sectie [[Nl/FGAddon#Bestanden_verplaatsen_of_hernoemen|git-svn:  bestanden verplaatsen of hernoemen]] voor meer informatie over het uitvoeren van deze handeling. Als je een bestand uit het lokale archief wilt verwijderen, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git rm <path>
git rm <path>
Line 252: Line 258:


==== Gespecialiseerde FGAddon tak ====
==== Gespecialiseerde FGAddon tak ====
In bovenstaande voorbeelden werd slechts één tak verondersteld in de repositiry. Als interactie met een remote git repository of vertakking in de lokale git repository gewenst is, dan is een andere strategie vereist. De reden hiervoor is dat de met FGAddon gesynchroniseerde tak een [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn lineaire historie] moet behouden. Dit betekent dat alleen de gewenste veranderingen in de tak toegestaan worden.
In bovenstaande voorbeelden zijn we ervan uitgegaan dat er slechts één enkele versie in de repository beschikbaar is. Als interactie met een remote git repository of vertakking in de lokale git repository gewenst is, dan is een andere strategie vereist. De reden hiervoor is dat de met FGAddon gesynchroniseerde tak een [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn preserve a linear history] moet behouden. Dit betekent dat alleen de gewenste veranderingen in die tak toegestaan worden.


In dit voorbeeld zullen twee takken worden aangemaakt in de lokale git repository:
In het volgende voorbeeld zullen twee takken worden aangemaakt in de lokale git repository:
* <code>fgaddon</code>: Deze tak zal worden gewijd aan de synchronisatie van FGAddon en zal een lineaire geschiedenis behouden.
* <code>fgaddon</code>: Deze tak zal worden gewijd aan de synchronisatie van FGAddon en zal een lineaire geschiedenis behouden.
* <code>master</code>: Een hoofdtak voor de ontwikkeling van vliegtuigen, die samenvoegingen en andere niet-lineaire historische operaties mogelijk maakt.
* <code>master</code>: Een hoofdtak voor de ontwikkeling van vliegtuigen, die samenvoegingen en andere niet-lineaire historische operaties mogelijk maakt.


Uitgaande van [[#Cloning_a_single_aircraft|newly cloned repository]]een nieuw gekloneerde opslagplaats, maak de <code>fgaddon</code> met:
Uitgaande van [[Nl/FGAddon#Het_klonen_van_.C3.A9.C3.A9n_enkel_vliegtuig|een nieuw gekloonde repository]] maak je de nieuwe <code>fgaddon</code> tak met het commando:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git branch fgaddon
git branch fgaddon
</syntaxhighlight>
</syntaxhighlight>


En schakel over naar die tak:
Schakel vervolgens over naar die tak:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git checkout fgaddon
git checkout fgaddon
</syntaxhighlight>
</syntaxhighlight>


Op deze tak kan dan de synchronisatie van FGAddon worden uitgevoerd. Om de ontwikkelingen uit de hoofdtak te halen, gebruik je cherry-picking om een sequentieel geordende lijst van commit hashes aan te brengen:
Op deze tak kan dan de synchronisatie van FGAddon worden uitgevoerd. Om de ontwikkelingen uit de hoofdtak te halen, gebruik je 'cherry-picking' om een sequentieel geordende lijst van commit hashes aan te brengen:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hash 1>
git cherry-pick <commit hash 1>
Line 276: Line 282:
</syntaxhighlight>
</syntaxhighlight>


Om de lijst met commits te zien die naar FGAddon moeten worden gestuurd voorafgaand aan dcommitting, typ je::
Om de lijst met commits te zien die naar FGAddon zullen worden gestuurd, voorafgaand aan dcommitting, typ je::
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log git-svn..HEAD
git log git-svn..HEAD
</syntaxhighlight>
</syntaxhighlight>


En om de veranderingen als één diff te zien::
En om de veranderingen in één diff te zien::
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git diff git-svn..HEAD
git diff git-svn..HEAD
Line 297: Line 303:
</syntaxhighlight>
</syntaxhighlight>


Duw vervolgens de wijzigingen in FGAddon of dcommit met:
Daarna kun je met een Push of dcommit jouw wijzigingen naar FGAddon zenden met:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
Line 304: Line 310:
=== Tekortkomingen van git-svn ===
=== Tekortkomingen van git-svn ===


{{warning|Het uitvoeren van <code>git-svn clone</code> van de <code>/trunk/</code> of van de hele repository is niet aan te raden, omdat de volledige geschiedenis van de repository gedownload zal worden, resulting in a huge local repository, wat resulteert in een enorme lokale repository/database en een grote belasting vormt voor de open source infrastructuur van FlightGear.}}
{{warning|Het uitvoeren van <code>git-svn clone</code> van de <code>/trunk/</code> of van de hele repository is niet aan te raden, omdat de volledige geschiedenis van de repository gedownload zal worden, wat resulteert in een enorme lokale repository/database en een grote belasting vormt voor de open source infrastructuur van FlightGear.}}


Het is belangrijk om te begrijpen dat er een aantal bewerkingen zijn waarbij git-svn een tekort heeft. In veel gevallen moeten de svn-tools worden gebruikt.
Het is belangrijk om te begrijpen dat er bewerkingen zijn waarbij het gebruik van git-svn nadelen heeft. In dergelijke gevallen verdient het aanbeveling de svn-tools te gebruiken.


==== Bestanden kopiëren tussen vliegtuigen ====
==== Bestanden kopiëren tussen vliegtuigen ====


{{caution|Git-svn houdt de kopieergeschiedenis van bestanden die normaal aanwezig is in een Subversion repository niet bij.}}
{{caution|Git-svn houdt de kopieergeschiedenis van bestanden, die normaal aanwezig is in een Subversion repository, niet bij.}}


De belangrijkste daarvan is het kopiëren van content van andere FGAddon-vliegtuigen. In dit geval heb je FGAddon commit-toegang nodig en een lokale svn-kopie van de repository. Synchroniseer eerst de repositories door alle wijzigingen terug te draaien naar FGAddon:
De belangrijkste tekortkoming betreft het kopiëren van content van andere FGAddon-vliegtuigen. In dit geval heb je FGAddon commit-toegang nodig en een lokale svn-kopie van de repository. Synchroniseer eerst de repositories door alle wijzigingen d.m.v. dcommit terug te draaien naar FGAddon:
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
</syntaxhighlight>
</syntaxhighlight>


Kopieer het bestand vervolgens in de lokale svn repository:
Kopieer het gewenste bestand vervolgens in de lokale svn repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn cp Aircraft/<aircraft1>/<file_path1> Aircraft/<aircraft2>/<file_path2>
svn cp Aircraft/<aircraft1>/<file_path1> Aircraft/<aircraft2>/<file_path2>
</syntaxhighlight>
</syntaxhighlight>


En commit de verandering::
En voer de verandering door d.m.v. commit:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn ci
svn ci
</syntaxhighlight>
</syntaxhighlight>


Terug in de lokale git-svn repository, haal de nieuwe bestanden binnen:
Terug in de lokale git-svn repository, haal je de nieuwe bestanden binnen:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn rebase
git svn rebase
</syntaxhighlight>
</syntaxhighlight>


Door gebruik te maken van de subversion tools vermijd je dat de FGAddon repository aanzienlijk in omvang toeneemt, aangezien [http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html#svn.branchmerge.using.create svn copies are cheap].
Door gebruik te maken van de subversion tools vermijd je dat de FGAddon repository backend aanzienlijk in omvang toeneemt, aangezien [http://svnbook.red-bean.com/en/1.7/svn.branchmerge.using.html#svn.branchmerge.using.create svn copies are cheap].


==== Bestanden verplaatsen of hernoemen ====
==== Bestanden verplaatsen of hernoemen ====


{{caution|Git-svn onderhoudt niet altijd het bestandsverplaatsings- of hernoemingsgeschiedenisbestand dat normaal aanwezig is in een Subversion-repository.}}
{{caution|Git-svn houdt niet altijd een overzicht bij van het verplaatsen- of hernoemen van bestanden, zoals dat wel het geval is in een Subversion-repository.}}


Dit probleem komt voort uit het feit dat de svn geschiedenis robuuster is dan die van git. De commando's <code>svn mv</code> en <code>git mv</code> zijn niet gelijkwaardig. Het subversion commando slaat de verplaatsingsgeschiedenis direct op in het archief terwijl git dat niet doet (git gebruikt in plaats daarvan heuristische methoden om te proberen de geschiedenis te detecteren, na de wijziging). Het resultaat van het gebruik van git-svn is dat de verplaatsing vaak niet wordt gedetecteerd en de FGAddon geschiedenis een bestand of directory toont dat zou zijn verwijderd of zou zijn toegevoegd. Hierdoor neemt ook de omvang van de database toe, terwijl <code>svn mv</code> geen significante omvangstoename veroorzaakt. Als je een beter historisch record in de FGAddon-repository wilthebben en rekening wil houden met de back-end van de repository, dan is het raadzaam om tijdelijk over te schakelen naar de subversie-tools. Synchroniseer eerst de repositories:
Dit probleem komt voort uit het feit dat de svn geschiedenis robuuster is dan die van git. De commando's <code>svn mv</code> en <code>git mv</code> zijn niet gelijkwaardig. Het subversion commando slaat de verplaatsingsgeschiedenis direct op in de betreffende repository, terwijl git dat niet doet (git gebruikt in plaats daarvan heuristische methoden om op een later moment te proberen de geschiedenis te herleiden). Het resultaat van het gebruik van git-svn is dat de verplaatsing vaak niet wordt getoond. De FGAddon geschiedenis geeft daarentegen aan dat een bestand of directory zou zijn verwijderd, terwijl een ander zou zijn toegevoegd. Hierdoor neemt ook de omvang van de database toe. Het <code>svn mv</code> commando leidt daarentegen niet tot een significante toename van de omvang van de repository-backend. Als je een beter historisch overzicht in de FGAddon-repository wil hebben en rekening wil houden met de backend van de repository, dan is het raadzaam om tijdelijk over te schakelen naar de subversion tools. Synchroniseer eerst de repositories:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
</syntaxhighlight>
</syntaxhighlight>


Verplaats of hernoem het bestand vervolgens in de lokale svn-opslagplaats:
Verplaats of hernoem het bestand vervolgens in de lokale svn-repostory:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn mv Aircraft/<aircraft>/<file_path1> Aircraft/<aircraft>/<file_path2>
svn mv Aircraft/<aircraft>/<file_path1> Aircraft/<aircraft>/<file_path2>
Line 358: Line 365:


==== Kopiëren van bestanden binnen één vliegtuig ====
==== Kopiëren van bestanden binnen één vliegtuig ====
Net zoals het <code>svn mv</code> commando de bewegingsinformatie direct in de repository opslaat, slaat <code>svn cp</code> de kopie-informatie op.
 
Als je daarom een tekstbestand wilt dupliceren en wijzigen, gebruik je de native Subversion-tools in plaats van git-svn voor deze bewerking zodat de bestandsgeschiedenis permanent kan worden bewaard in de FGAddon-repository.
Net zoals het commando <code>svn mv</code> de bewegingsinformatie direct in de repository opslaat, slaat <code>svn cp</code> de kopieerinformatie op. Dus als je een tekstbestand wilt dupliceren en aanpassen, dan gebruik je de native Subversion-tools in plaats van git-svn voor deze bewerking zodat de bestandsgeschiedenis permanent kan worden bewaard in de FGAddon-repository.


==== Subversion-eigenschappen ====
==== Subversion-eigenschappen ====
Line 365: Line 372:
{{caution|Git-svn ondersteunt momenteel alleen de <code>svn:executable</code> eigenschap, alle andere eigenschappen worden genegeerd en kunnen niet worden toegevoegd, gewijzigd of verwijderd in een git-svn-kloon van het vliegtuig.}}
{{caution|Git-svn ondersteunt momenteel alleen de <code>svn:executable</code> eigenschap, alle andere eigenschappen worden genegeerd en kunnen niet worden toegevoegd, gewijzigd of verwijderd in een git-svn-kloon van het vliegtuig.}}


Intern identificeert Subversion binaire bestanden met behulp van de eigenschap <code>svn:mime-type</code> repository. Omdat git-svn deze eigenschap echter niet kan instellen bij gebruik van het commando <code>git add</code>, is het resultaat dat binaire bestanden als tekst worden behandeld. Binaire diffs zullen gezien worden bij het gebruik van <code>svn diff</code> of <code>git diff</code>, en een binair diff zal getoond worden in de [[#FGAddon commitlog mailinglijst|FGAddon commitlog mailinglijst]] berichten. Aangezien dit issue niet uniek is voor git-svn, kun je het beste ook nog even kijken bij [[#Binary diffs|binary diffs]].
Intern identificeert Subversion binaire bestanden met behulp van de repository eigenschap <code>svn:mime-type</code>. Omdat git-svn deze eigenschap niet kan instellen bij gebruik van het commando <code>git add</code>, is het resultaat dat binaire bestanden als tekst worden behandeld. Binaire diffs zullen getoond worden bij het gebruik van <code>svn diff</code> of <code>git diff</code>, en een binair diff zal getoond worden in de [[#FGAddon commitlog mailinglijst|FGAddon commitlog mailinglijst]] berichten. Aangezien dit issue niet uniek is voor git-svn, kun je het beste ook nog even kijken bij [[Nl/FGAddon#Binaire_verschillen|Binaire verschillen]]   .


==== andere protocollen dan svn+ssh ====
==== Andere protocollen dan svn+ssh ====


Het commando <code>git svn init</code> reproduceert de volledige geschiedenis van een vliegtuig in een lokaal archief. Als onderdeel van dit proces genereert het een git commit ID of hash voor elke Subversion revisie. Het probleem is dat de git commit ID afhankelijk is van het protocol dat gebruikt wordt om te lezen uit de Subversion repository (waarschijnlijk een git bug). Vandaar dat:
Het commando <code>git svn init</code> reproduceert de volledige geschiedenis van een vliegtuig in een lokaal archief. Als onderdeel van dit proces genereert het een git commit ID of hash voor elke Subversion revisie. Het probleem is dat de git commit ID afhankelijk is van het protocol dat gebruikt wordt om te lezen uit de Subversion repository (waarschijnlijk een git bug). Vandaar dat:
Line 383: Line 390:
}}
}}


zal resulteren in twee verschillende en incompatibele git repositories, ook al bevatten ze dezelfde gegevens. De onverenigbaarheid is niet meteen duidelijk, maar zal later problemen opleveren. Stel dat iemand met alleen-lezen toegang tot FGAddon de https-methode gebruikt en vervolgens een FGAddon admin vraagt om zijn wijzigingen vast te leggen. De admin gebruikt natuurlijk svn+ssh, aangezien dit het enige protocol is dat met schrijfrechten werkt. Wanneer de admin probeert om de https-bijdrage van de contribuant samen te voegen in de eigen svn+ssh kloon, dan zal git klagen dat de twee repositories geen geschiedenis gemeen hebben, en elke verandering als een conflict markeren.
zal resulteren in twee verschillende en incompatibele git repositories, ook al bevatten ze dezelfde gegevens. De onverenigbaarheid is niet meteen duidelijk, maar zal op een later moment problemen opleveren. Stel dat iemand met alleen-lezen toegang tot FGAddon de https-methode gebruikt en vervolgens een FGAddon admin vraagt om zijn wijzigingen vast te leggen. De admin gebruikt natuurlijk svn+ssh, aangezien dit het enige protocol is dat met schrijfrechten werkt. Wanneer de admin probeert om de https-bijdrage van de contribuant samen te voegen in de eigen svn+ssh kloon, dan zal git klagen dat de twee repositories geen geschiedenis gemeen hebben, en elke verandering als een conflict markeren.


Dus, als je van plan bent om wijzigingen aan te brengen aan de code van een vliegtuig, zorg er dan voor dat je svn+ssh gebruikt, zelfs als je nog geen commit rechten op FGAddon hebt. Voor svn+ssh zijn geen schrijfrechten vereist, maar alleen een SourceForge-gebruikers-ID.
Dus, als je van plan bent om wijzigingen aan te brengen aan de code van een vliegtuig, zorg er dan voor dat je svn+ssh gebruikt, zelfs als je nog geen commit rechten op FGAddon hebt. Voor svn+ssh zijn geen schrijfrechten vereist, maar alleen een SourceForge-gebruikers-ID.
Line 395: Line 402:
==== svn import ====
==== svn import ====


{{warning|Het hierin beschreven <code>svn import</code> commando zal alle inhoud van de opgegeven directory direct naar FGAddon sturen zonder waarschuwing en zonder een manier om de bewerking te annuleren. Daarom moet je extra voorzichtig zijn bij het specificeren van de map die je wilt uploaden naar FGAddon, datzelfde geldt voor de doelmap binnen FGAddon. Zie de sectie [[#svn toevoegen|svn toevoegen]] hieronder voor een veiligere manier om een nieuw vliegtuig toe te voegen.}}
{{warning|Het hierin beschreven <code>svn import</code> commando zal alle inhoud van de opgegeven directory direct naar FGAddon sturen zonder waarschuwing en zonder een manier om de bewerking te annuleren. Daarom moet je extra voorzichtig zijn bij het specificeren van de map die je wilt uploaden naar FGAddon, datzelfde geldt voor de doelmap binnen FGAddon. Zie de sectie [[Nl/FGAddon#svn_add_.28.3Dtoevoegen.29|svn_add=toevoegen]] hieronder voor een veiligere manier om een nieuw vliegtuig toe te voegen.}}


De opdracht [http://svnbook.redbean.com/en/1.7/svn.tour.importing.html#svn.tour.importing.import svn import] is de eenvoudigste methode en je hoeft geen lokale kopie van het archief uit te checken. Om te beginnen:
De opdracht [http://svnbook.red-bean.com/en/1.7/svn.tour.importing.html#svn.tour.importing.import svn import] is de eenvoudigste methode en je hoeft geen lokale kopie van het archief uit te checken. Om te beginnen:


# Creëer een lege lokale vliegtuigdirectory.
# Creëer een lege lokale vliegtuigdirectory.
# Kopieer de vliegtuigbestanden naar deze directory
# Kopieer de vliegtuigbestanden naar deze directory.
# Controleer zorgvuldig alle bestanden om er zeker van te zijn dat er geen verborgen of tijdelijke bestanden zijn die niet naar FGAddon geüpload moeten worden.
# Controleer zorgvuldig alle bestanden om er zeker van te zijn dat er geen verborgen of tijdelijke bestanden zijn die niet naar FGAddon geüpload moeten worden.


Line 418: Line 425:
}}
}}


Hierin is <code><usernaam></code> jouw SourceForge gebruikersnaam. Dit zal alle bestanden toevoegen aan FGAddon met commit log bericht met de overzichtsregel <code>Initial import of the DaSH human powered aircraft.</code>, gevolgd door een blanco regel, en vervolgens een gedetailleerde beschrijving die verwijst naar de oorspronkelijke locatie of bespreking van het vliegtuig. Om te zien of het vliegtuig met succes is toegevoegd aan de repository, typ je:
Hierin is <code><usernaam></code> jouw SourceForge gebruikersnaam. Dit zal alle bestanden toevoegen aan FGAddon met een commit log bericht met de overzichtsregel <code>Initial import of the DaSH human powered aircraft.</code>, gevolgd door een blanco regel en vervolgens een gedetailleerde beschrijving die verwijst naar de oorspronkelijke locatie of bespreking van het vliegtuig. Om te zien of het vliegtuig met succes is toegevoegd aan de repository, typ je:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon source
{{fgaddon source
Line 431: Line 438:
}}
}}


Of bezoek de {fgaddon bron|path=Aircraft|text=FGAddon web interface}}. Het vliegtuig kan dan worden uitgecheckt zoals beschreven in de [[#Ontwikkelingsscenario's sectie]].
Of bezoek de {{fgaddon source|path=Aircraft|text=FGAddon web interface}}. Het vliegtuig kan dan worden uitgecheckt zoals beschreven in de [[Nl/FGAddon#Ontwikkelscenario.27s|Ontwikkelscenario's]].


==== svn add (=toevoegen) ====
==== svn add (=toevoegen) ====
Als er een lokale kopie van de FGAddon-hoofdmap aanwezig is, dan kan het commando <code>svn add</code> in plaats daarvan worden gebruikt. Dit is veel veiliger dan het <code>svn import</code> commando, omdat de wijziging voor het vastleggen dubbel gecontroleerd kan worden. Maak in de map <code>Aircraft/</code> van het lokale archief de map <code>DaSH/</code> aan. Deze kan leeg zijn of alle bestanden van het initiële vliegtuig bevatten.  Voeg vervolgens op de commandoregel het vliegtuig toe aan de lokale repository:
Als er een lokale kopie van de FGAddon-hoofdmap aanwezig is, dan kan het commando <code>svn add</code> in plaats daarvan worden gebruikt. Dit is veel veiliger dan het <code>svn import</code> commando, omdat de wijziging voor het vastleggen dubbel gecontroleerd kan worden. Maak in de map <code>Aircraft/</code> van het lokale archief de map <code>DaSH/</code> aan. Deze kan leeg zijn, maar kan ook alle bestanden van het initiële vliegtuig bevatten.  Voeg vervolgens op de commandoregel het vliegtuig toe aan de lokale repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn toevoegen DaSH/
svn add DaSH/
</syntaxhighlight>
</syntaxhighlight>


Controleer dan eerst de wijzigingen voordat je e.e.a. vastlegt:
Controleer dan eerst goed de wijzigingen voordat je e.e.a. vastlegt:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svnstern
svn st
</syntaxhighlight>
</syntaxhighlight>


En stuur de wijzigingen naar FGAddon:
En stuur de wijzigingen naar FGAddon d.m.v.:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn ci
svn ci
</syntaxhighlight>
</syntaxhighlight>


Een editor, vaak vi<ref>[http://www.vim.org/docs.php Vim documentatie]</ref>, zal openen en de commit boodschap kan worden opgesteld. Als alternatief kan het logboekbestand worden gegeven op de opdrachtregel met:
Een editor, vaak vi<ref>[http://www.vim.org/docs.php Vim documentatie]</ref>, zal openen en de commit boodschap kan worden opgesteld. Als alternatief kan het logboekbericht worden gegeven op de opdrachtregel m.b.v.:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn ci -m "<subject_line>\n\n<detailed_description>".
svn ci -m "<subject_line>\n\n<detailed_description>".
</syntaxhighlight>
</syntaxhighlight>


=== blokkeren van vastlegging door vooraf vastgelegde haken ===
=== blokkeren van vastlegging door pre-commit hooks ===
Soms wordt bij het committen naar FGAddon de vastlegging geblokkeerd en wordt het volgende geprint:
Soms wordt bij het committen naar FGAddon de vastlegging geblokkeerd en wordt het volgende geprint:
<pre>
<pre>
svn: E165001: Commit mislukt (details volgen):
svn: E165001: Commit mislukt (details follow):
svn: E165001: Commit geblokkeerd door pre-vastlegging haak (uitgang code 1) met output:
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:
</pre>
</pre>


Dit is te wijten aan de aanwezigheid van twee repository pre-commit hook scripts die de kwaliteit van de vastlegging controleren, het blokkeren als een tekstbestand is ingesteld op een binair bestand mime-type of als de executable flag is ingesteld.  Deze scripts dienen eenvoudig om de repository te beschermen en vervuiling/besmetting te voorkomen.
Dit is te wijten aan de aanwezigheid van twee repository pre-commit hook scripts die de kwaliteit van de vastlegging controleren, het blokkeren als een tekstbestand is ingesteld op een binair mime-type bestand of als de executable flag is ingesteld.  Deze scripts dienen eenvoudig om de repository te beschermen en vervuiling te voorkomen.


==== Mime-type problemen ====
==== Mime-type problemen ====


Soms wordt bij een poging om bestanden vast te leggen in FGAddon met behulp van het SVN gereedschap, de vastlegging geblokkeerd met het volgende bericht:
Soms wordt, bij een poging om bestanden vast te leggen in FGAddon met behulp van het SVN gereedschap, de vastlegging geblokkeerd met het volgende bericht:
<pre>
<pre>
Sending        dash-set.xml
Sending        dash-set.xml
Line 493: Line 500:
</pre>
</pre>


Ondanks berichten over het toevoegen of verzenden van bestanden, zal er geen verandering hebben plaatsgevonden in de FGAddon repository. Dit bericht wordt aangemaakt door een repository pre-commit hook script dat controleert of de Subversion <code>svn:mime-type</code> eigenschap is ingesteld op een lijst van bekende tekstbestanden en, als het mime-type is ingesteld op een binaire indeling, wordt de vastlegging geblokkeerd. De reden voor deze blokkade is het beschermen van de repository. Nieuwere SVN clients vertrouwen op een 3rd party library bekend als libmagic die de vliegtuig XML bestanden zal detecteren als het binaire mime-type van <code>-applicatie/xml</code>. Het resultaat is dat de XML-bestanden worden behandeld als binaire bestanden in het archief. Dit gedrag is volstrekt onwenselijk, aangezien veranderingen niet kunnen worden gevolgd op de [[#FGAddon commitlog mailinglijst|flightgear-fgaddon-commitlogs mailinglijst]] of in de repository geschiedenis, en de grootte van de commits vele malen groter worden. Daarom is deze handelwijze geblokkeerd voor de bescherming van het FlightGear project. Om het probleem op te lossen, volg je de instructies in het bericht en typ je het met behulp van de opdrachtregeltools:
Ondanks berichten over het toevoegen of verzenden van bestanden, zal er geen verandering hebben plaatsgevonden in de FGAddon repository. Dit bericht wordt aangemaakt door een repository pre-commit hook script dat controleert of de Subversion eigenschap <code>svn:mime-type</code> voorkomt op een lijst van bekende tekstbestanden en, als het mime-type is ingesteld op een binair formaat, wordt de vastlegging geblokkeerd. De reden voor deze blokkade is het beschermen van de repository. Nieuwere SVN clients vertrouwen op een 3rd party library bekend als libmagic die de vliegtuig XML bestanden zal detecteren als het binaire mime-type van <code>-application/xml</code>. Het resultaat hiervan is dat de XML-bestanden worden behandeld als binaire bestanden in het archief. Dit gedrag is absoluut onwenselijk, omdat veranderingen hierdoor niet kunnen worden gevolgd op de [[#FGAddon commitlog mailinglijst|flightgear-fgaddon-commitlogs mailinglijst]] of in de repository geschiedenis. Ook zal de grootte van de commits hierdoor vele malen groter worden. Om dit probleem te voorkomen is deze werkwijze geblokkeerd om het FlightGear project te beschermen. Als oplossing probleem, volg je de instructies in het bericht en typ je het met behulp van de opdrachtregeltools:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn propdel svn:mime-type <file_name>
svn propdel svn:mime-type <file_name>
</syntaxhighlight>  
</syntaxhighlight>  


Herhaal dit voor elk tekstbestand in de foutmelding. Maak dan opnieuw een commit met behulp van het bericht dat opgeslagen is in het <code>svn-commit.tmp</code> bestand. De bestandsnaam van het bericht wordt gerapporteerd in het logbericht over de  foutmelding, maar controleer eerst de inhoud:
Herhaal dit voor elk tekstbestand in de foutmelding. Maak dan opnieuw een commit met behulp van het bericht dat opgeslagen is in het <code>svn-commit.tmp</code> bestand. De bestandsnaam van het bericht wordt gerapporteerd in het logbericht over de  foutmelding, maar controleer eerst de inhoud:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
kat svn-commit.tmp
cat svn-commit.tmp
</syntaxhighlight>
</syntaxhighlight>


Line 510: Line 517:
===== Subversion config file =====
===== Subversion config file =====


De automatische instelling van <code>svn:mime-type</code> kan worden geregeld door het bestand Subversion <code>config</code> te wijzigen. Controleer eerst in de sectie <code>[miscellany]</code> of de auto-eigenschappen zijn ingeschakeld:
De automatische instelling van <code>svn:mime-type</code> kan worden geregeld door het bestand Subversion <code>config</code> aan te passen. Controleer eerst in de sectie <code>[miscellany]</code> of de auto-eigenschappen zijn ingeschakeld:
<syntaxhighlight>
<syntaxhighlight>
enable-auto-props = yes
enable-auto-props = yes
Line 530: Line 537:
</syntaxhighlight>
</syntaxhighlight>


Dit zijn alle tekstbestanden waarvan het hook script zal controleren of het mime-type is ingesteld op een tekstformaat, hoewel er in de toekomst waarschijnlijk nieuwe tekstbestanden zullen worden toegevoegd. Deze aanvullingen kunnen aan het gebruikersconfiguratiebestand op <code>~/.subversion/config</code> (of <code>%USERPROFILE%\AppData\Roaming\Subversion\config</code> in Windows) of, als er geen gebruikersconfiguratiebestand is ingesteld, aan het algemene configuratiebestand op <code>/etc/subversion/config</code> (of <code>%APPDATA%\Subversion\config</code> in Windows) worden toegevoegd.
Dit zijn alle tekstbestanden waarvan het hook script zal controleren of het mime-type is ingesteld op een tekstformaat, hoewel er in de toekomst waarschijnlijk nieuwe tekstbestanden zullen worden toegevoegd. Deze aanvullingen kunnen zowel aan het gebruiker-configuratiebestand in <code>~/.subversion/config</code> (of <code>%USERPROFILE%\AppData\Roaming\Subversion\config</code> in Windows) worden toegevoegd of, als er geen gebruiker-configuratiebestand bestaat, aan het algemene configuratiebestand op <code>/etc/subversion/config</code> (of <code>%APPDATA%\Subversion\config</code> in Windows) worden toegevoegd.


==== Executable flag ====
==== Executable flag ====
Line 557: Line 564:
</pre>
</pre>


Dit zal waarschijnlijk alleen te zien zijn op Mac OS X- en GNU/Linux-systemen. Dit bericht wordt afgedrukt met behulp van een script dat controleert of de Subversion <code>svn:executable</code> eigenschap is ingesteld en, indien dit het geval is, wordt de vastlegging geblokkeerd. Dit is een veiligheidsmaatregel, aangezien  vliegtuigbestanden niet uitvoerbaar mogen zijn. Om het probleem op te lossen, volg je de instructies in het bericht en typ je op de commandline:
Dit zal waarschijnlijk alleen te zien zijn op Mac OS X en GNU/Linux-systemen. Dit bericht wordt afgedrukt met behulp van een script dat controleert of de Subversion eigenschap <code>svn:executable</code> is ingesteld en, als dit het geval is, wordt de vastlegging geblokkeerd. Dit is een veiligheidsmaatregel omdat vliegtuigbestanden niet uitvoerbaar mogen zijn. Om het probleem op te lossen, volg je de instructies in het bericht en typ je op de command line:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn propdel svn:uitvoerbaar -R
svn propdel svn:executable -R
</syntaxhighlight>
</syntaxhighlight>


Maak dan opnieuw een vastlegging met behulp van het vastleg bericht dat opgeslagen is in het <code>svn-commit.tmp</code> bestand. De bestandsnaam van het bericht wordt gerapporteerd in de foutmelding voor het vastleggen, maar controleer eerst de inhoud:
Maak dan opnieuw een vastlegging met behulp van het bericht dat opgeslagen is in het <code>svn-commit.tmp</code> bestand. De bestandsnaam van het bericht wordt opgenomen in de foutmelding voor het vastleggen, maar controleer eerst de inhoud:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
kat svn-commit.tmp
kat svn-commit.tmp
Line 574: Line 581:
=== Binaire verschillen ===
=== Binaire verschillen ===


{{warning|De verkeerde instelling of het ontbreken van de eigenschap van het mime-type op een binair bestand zal resulteren in een binair verschil.}}
{{warning|De verkeerde instelling of het ontbreken van de eigenschap van het mime-type van een binair bestand zal resulteren in een binair verschil.}}


Als je kijkt naar de output van <code>svn diff</code> (of <code>git diff</code> als je git-svn gebruikt) en als je berichten leest van de [[#FGAddon commitlog mailinglijst|FGAddon commitlog mailinglijst]], kan het zijn dat je een groot aantal onherkenbare tekens ziet. Dit is het resultaat van wat bekend staat als een binaire diff, die de binaire bestandsverschillen toont alsof het tekst was. Hoewel dit geen probleem is voor het gebruik van de repository, is de situatie een esthetisch probleem dat het moeilijker maakt om de wijzigingen te evalueren.
Als je kijkt naar de output van <code>svn diff</code> (of <code>git diff</code> als je git-svn gebruikt) of als je berichten leest van de [[#FGAddon commitlog mailinglijst|FGAddon commitlog mailinglijst]], kan het zijn dat je een groot aantal onherkenbare tekens ziet. Dit is het resultaat van wat bekend staat als een binary diff, die de binaire bestandsverschillen toont alsof het om tekst gaat. Hoewel dit geen probleem is voor het gebruik van de repository, is wel sprake van een esthetisch probleem, dat het moeilijker maakt om de wijzigingen te evalueren.


Om het probleem op te lossen, moeten eerst de binaire bestanden met de <code>svn:mime-type</code> eigenschap missing worden geïdentificeerd. Het volgende subversion commando kan gebruikt worden:
Om het probleem op te lossen moeten eerst de binaire bestanden met waarvan de eigenschap <code>svn:mime-type</code> ontbreekt, worden geïdentificeerd. Het volgende subversion commando kan hiertoe worden gebruikt:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn propget svn:mime-type <file_name>
svn propget svn:mime-type <file_name>
</syntaxhighlight>
</syntaxhighlight>


Omdat het lastig kan zijn om elk bestand afzonderlijk te controleren, vereenvoudigt en automatiseert het volgende Python-script het proces om alle binaire bestanden te herkennen met een probleem van het mime-type:
Omdat het een hele klus kan zijn om elk bestand afzonderlijk te controleren, vereenvoudigt en automatiseert het volgende Python-script het proces om alle binaire bestanden te herkennen met een probleem van het mime-type:


{{collapsible script
{{collapsible script
Line 690: Line 697:
==== het oplossen van het probleem ====
==== het oplossen van het probleem ====


Aangezien [[#Subversion_properties|git-svn] de <code>svn:mime-type</code> eigenschap niet kan instellen of wijzigen, is een [[#Repository_checkout|svn checkout copy] van het vliegtuig noodzakelijk. De eigenschap kan dan worden ingesteld op het standaard Subversion binary mime-type met:
Aangezien [[Nl/FGAddon#Subversion-eigenschappen|Subversion-eigenschappen]] het <code>svn:mime-type</code> niet kunnen veranderen, is een [[#Repository_checkout|svn checkout copy]] van het vliegtuig noodzakelijk. De eigenschap kan dan worden ingesteld op het standaard Subversion binary mime-type met:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
svn propset svn:mime-type "applicatie/octet-stream" <file_name>.
svn propset svn:mime-type "application/octet-stream" <file_name>.
</syntaxhighlight>
</syntaxhighlight>


Line 727: Line 734:
}}
}}


== SourceForge-ontwikkelaar services ==
== SourceForge-ontwikkel services ==


Het FlightGear-project wordt gehost op de open-source-infrastructuur van SourceForge. Deze ontwikkelaar diensten paragraaf zal een aantal van de nuttige tools belichten waarvan je kunt profiteren. SourceForge kent twee categorieën van diensten:
Het FlightGear-project wordt gehost op de open-source-infrastructuur van SourceForge. Deze ontwikkeldienstenparagraaf zal een aantal van de nuttige tools belichten waarvan je kunt profiteren. SourceForge kent twee categorieën van diensten:
; Project infrastructuur : Het FlightGear project maakt gebruik van de projectdiensten van SourceForge. Deze diensten zijn bedoeld voor stand-alone software projecten.
; Project-infrastructuur : Het FlightGear project maakt gebruik van de projectdiensten van SourceForge. Deze diensten zijn bedoeld voor stand-alone software projecten.
; Ontwikkelaars-infrastructuur : Dit zijn diensten die beschikbaar zijn voor iedereen met een SourceForge account, zij zijn beschikbaar via de SourceForge homepage en toegankelijk voor iedereen. Dit omvat de mogelijkheid om meerdere versie controle repositories (svn, git, hg), wiki's, forums, ontwikkelteams, blogs, en ticket trackers (voor bugs, supportvragen, taken, enz.) te creëren.


; Infrastructuur ontwikkelaars : Dit zijn diensten die beschikbaar zijn voor iedereen met een SourceForge account, zij zijn beschikbaar via de SourceForge homepage en toegankelijk voor iedereen. Dit omvat de mogelijkheid om meerdere versie controle repositories (svn, git, hg), wiki's, forums, ontwikkelingsteams, blogs, en ticket trackers (voor bugs, supportaanvragen, taken, enz.) te creëren.
In plaats van steeds een nieuw project te creëren, zou iedere ontwikkeling voor het FlightGear-project gebaseerd moeten zijn op de ontwikkelaars-infrastructuur.
 
In plaats van steeds een nieuw project te creëren, zou elke ontwikkeling voor het FlightGear-project gebaseerd moeten zijn op de ontwikkelaars-infrastructuur.


=== ontwikkelaar git repository ===
=== ontwikkelaar git repository ===


Om je eigen remote git repository in te richten, hier voor het ontwikkelen van de FGAddon fkdr1 vliegtuig, doe je het volgende:
Om je eigen remote git repository in te richten, hier t.b.v. het ontwikkelen van het FGAddon fkdr1 vliegtuig, doe je het volgende:


Op je profiel pagina op <span stijl="kleur: blauw"><tt><nowiki>https://sourceforge.net/u/<username>/profile/</nowiki></tt></span>, ga je naar <code>Admin</code> -> <code> Nieuw</code> -> <code>>Git</code>.
* Op jouw profielpagina op <span stijl="kleur: blauw"><tt><nowiki>https://sourceforge.net/u/<username>/profile/</nowiki></tt></span>, ga je naar <code>Admin</code> -> <code> Add New</code> -> <code>>Git</code>.
Label instellen op <code>fkdr1 FGAddon git-svn repository</code>.
* Label instellen op <code>fkdr1 FGAddon git-svn repository</code>.
Stel het codepad in op <code>code-fkdr1</code>. De <code>code-*</code> prefix is om dit te onderscheiden van de <code>forum-*</code>, <code>wiki-*</code>, en andere directories.
* Stel het pad voor de code in op <code>code-fkdr1</code>. De <code>code-*</code> prefix is om dit te onderscheiden van de <code>forum-*</code>, <code>wiki-*</code> en andere directories.


De repository zal zich bevinden op <span stijl="kleur: blauw"><tt><nowiki>https://sourceforge.net/u/<username>/code-fkdr1/ci/master/tree/</nowiki></tt></span>.  
De repository zal zich bevinden op <span style="color: blue"><tt><nowiki>https://sourceforge.net/u/<username>/code-fkdr1/ci/master/tree/</nowiki></tt></span>.  


=== Ontwikkelaarteams ===
=== Ontwikkelteams ===


Als jij en een groep vrienden als team een van de FGAddon-vliegtuigen zouden willen ontwikkelen, ervan uitgaande dat je contact hebt opgenomen met de oorspronkelijke vliegtuigontwikkelaars en het vliegtuig niet actief ontwikkeling verder wordt ontwikkelt, dan moet je eerst een SourceForge-ontwikkelteam opzetten. Er moet een teamleider worden aangesteld om dit op te zetten onder het eigen SourceForge-account. Ervan uitgaande dat jullie het "ornithopter"-vliegtuig wilt ontwikkelen, zijn de volgende stappen:
Als jij en een groep vrienden als team een van de FGAddon-vliegtuigen zouden willen ontwikkelen, ervan uitgaande dat je contact hebt opgenomen met de oorspronkelijke vliegtuigontwikkelaars en het vliegtuig niet actief wordt doorontwikkeld, dan moet je eerst een SourceForge-ontwikkelteam opzetten. Er moet een teamleider worden aangesteld om dit op te zetten onder het eigen SourceForge-account. Ervan uitgaande dat jullie het "ornithopter"-vliegtuig willen ontwikkelen zijn de volgende stappen nodig:


* Ga naar <code>Personal tools</code> -> <code>Admin</code>.
* Ga naar <code>Personal tools</code> -> <code>Admin</code>.
* Klik op <code>User Permissions</code>.
* Klik op <code>User Permissions</code>.
* Klik op <code>Add a new group</code> aan de onderkant.
* Klik aan de onderkant op <code>Add a new group</code>.
* Stel de naam in op <code>ornithopter</code>, en sla op.
* Stel de naam in op <code>ornithopter</code> en sla op.
* Klik op <code>Add</code> in de groep <code>ornithopter</code> en voeg de namen van de SourceForge leden van jullie team toe.
* Klik op <code>Add</code> in de groep <code>ornithopter</code> en voeg de namen van de SourceForge leden van jullie team toe.


Na het instellen van een private repository in het account van de teamleider, zoals hieronder beschreven, moet het ontwikkelteam worden ingesteld voor de repository.
Na het instellen van een private repository in het account van de teamleider, zoals hieronder beschreven, moet het ontwikkelteam worden ingesteld voor de repository.


Ga naar de repository onder je SourceForge-account.
* Ga naar de repository in jouw SourceForge-account.
Klik op <code>Admin - <repository name></code>, selecteer dan <code>Permissies</code>.
* Klik op <code>Admin - <repository name></code>, selecteer dan <code>Permissions</code>.
In het gedeelte <code>Write</code> verwijder je <code>Developer</code> en voeg je <code>ornithopter</code> toe.
* In het gedeelte <code>Write</code>, verwijder je <code>Developer</code> en voeg je <code>ornithopter</code> toe.
Klik op <code>Save</code>.
* Klik op <code>Save</code>.


De leden van het ontwikkelteam krijgen daarmee toegang tot de private repository.
De leden van het ontwikkelteam krijgen daarmee toegang tot de private repository.
Line 767: Line 773:
=== Teamcommunicatie ===
=== Teamcommunicatie ===


Om te helpen met teamontwikkeling, maakt de SourceForge infrastructuur het mogelijk om meerdere [https://sourceforge.net/p/forge/documentation/Discussion/ dedicated discussion forums] te creëren. Dit kan zowel binnen een SourceForge-project zijn als onder de homepage van een SourceForge gebruiker. Dit stelt de teamleider in staat om een forum te creëren dat uitsluitend gewijd is aan de ontwikkeling van het betreffende vliegtuig. Voortbordurend op het voorbeeld van de  <code>ornithopter</code> zijn de volgende stappen door de teamleider nog nodig:
Om te helpen met de teamontwikkeling, maakt de SourceForge infrastructuur het mogelijk om meerdere [https://sourceforge.net/p/forge/documentation/Discussion/ dedicated discussion forums] te creëren. Dit kan zowel binnen een SourceForge-project zijn als op de homepage van een SourceForge gebruiker. Dit stelt de teamleider in staat om een forum te creëren dat uitsluitend gewijd is aan de ontwikkeling van het betreffende vliegtuig. Voortbordurend op het voorbeeld van de  <code>ornithopter</code> zijn de volgende stappen door de teamleider nog nodig:


Op je profiel pagina <span stijl="kleur: blauw"><tt><nowiki>https://sourceforge.net/u/<username>/profile/</nowiki></tt></span>, ga je naar <code>Personal tools</code> -> <code>Admin</code>.
* Op jouw profielpagina <span style="color: blue"><tt><nowiki>https://sourceforge.net/u/<username>/profile/</nowiki></tt></span>, ga je naar <code>Personal tools</code> -> <code>Admin</code>.
Klik in het linkermenu op de optie <code>Tools</code>.
* Klik in het linkermenu op de optie <code>Tools</code>.
Klik op <code>Discussie</code> in de sectie <code>Klik om</code> te installeren.
* Klik op <code>Discussion</code> in de sectie <code>Click to install</code>.
Verander het label in <code>Ornithopter forum</code>, en het pad naar <code>forum-ornithopter</code>, bijvoorbeeld. De <code>forum-*</code> prefix is om dit te onderscheiden van de <code>code-*</code>, <code>wiki-*</code>, en andere directory's.
* Verander bijvoorbeeld het label in <code>Ornithopter forum</code> en het pad naar <code>forum-ornithopter</code>. De <code>forum-*</code> prefix is om dit te onderscheiden van de <code>code-*</code>, <code>wiki-*</code> en andere directory's.
Klik op <code>Save</code>.
* Klik op <code>Save</code>.


Meer details zijn te vinden op [https://sourceforge.net/p/forge/documentation/Discussion/ SourceForge Discussion documentation].
Meer details zijn te vinden op [https://sourceforge.net/p/forge/documentation/Discussion/ SourceForge Discussion documentation].
Line 783: Line 789:
{{Note|Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de standaard Subversion tools.}}
{{Note|Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de standaard Subversion tools.}}


Dit is verreweg het eenvoudigste ontwikkelingsscenario en zou in de meeste gevallen gebruikt moeten worden. Als je gebruik maakt van de commandline Subversion client, kun je een individueel vliegtuig uitchecken met:
Dit is verreweg het eenvoudigste ontwikkelscenario en zou in de meeste gevallen gebruikt moeten worden. Als je gebruik maakt van de command line Subversion client, kun je een individueel vliegtuig uitchecken met:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon co
{{fgaddon co
Line 793: Line 799:
}}
}}


Hierbij is <code><username></code> jouw SourceForge gebruikersnaam. Als alternatief kun je ook alle vliegtuigen uitchecken met:
Hierbij is <code><username></code> jouw SourceForge gebruikersnaam. Als alternatief kun je ook alle vliegtuigen uitchecken met:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon co
{{fgaddon co
Line 802: Line 808:
}}
}}


Als je geen toegang hebt, typ je één van de volgende commando's:
Als je geen commit-toegang hebt, typ je één van de volgende commando's:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon co
{{fgaddon co
Line 814: Line 820:
}}
}}


Om de nieuwe lokale svn-repostory te kunnen gebruiken, zie [[#Subversion|subversion instructions]].
Om de nieuwe lokale svn-repostory te kunnen gebruiken, zie [[Nl/FGAddon#Subversion|Subversion gebruiksaanwijzingen]].


=== Afzonderlijke ontwikkelaar (git-svn) ===
=== Afzonderlijke ontwikkelaar (git-svn) ===


{{Note|Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de git-svn tools.}}
{{Note|Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de git-svn tools.}}


Dit is gecompliceerder dan het gebruik van het native SVN gereedschap, maar kan nuttig zijn zonder FGAddon toegang, omdat er meerdere lokale commits kunnen worden verzonden naar de oorspronkelijke auteurs van het vliegtuig of naar de development mailinglijst/forum. Om het vliegtuig van jouw keuze te klonen in een nieuwe git repository, typ je:
Dit is gecompliceerder dan het gebruik van het native SVN gereedschap, maar kan nuttig zijn zonder FGAddon toegang, omdat er meerdere lokale commits kunnen worden verzonden naar de oorspronkelijke auteurs van het vliegtuig of naar de development mailinglijst/forum. Om het vliegtuig van jouw keuze te klonen in een nieuwe git repository, typ je:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{{fgaddon source|cmd=git svn clone|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
{{fgaddon source|cmd=git svn clone|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
Line 826: Line 832:
}}
}}


Hier is <code><username></code> jouw gebruikersnaam en <code><vliegtuigen></code> is de mapnaam in het FGAddon archief. Dit is geldig ongeacht of je al dan niet commit machtigingen hebt.
Hier is <code><username></code> jouw gebruikersnaam en <code>aircraft></code> is de mapnaam in het FGAddon archief. Dit is geldig ongeacht of je al dan niet commit-machtigingen hebt.


Om de nieuwe lokale git-repository te gebruiken, zie [[#Git-svn|git-svn instructions]] en [[#Deficiencies_of_git-svn|its deficiencies]].
Om de nieuwe lokale git-repository te gebruiken, zie [[#Git-svn|git-svn instructions]] en [[Nl/FGAddon#Tekortkomingen_van_git-svn|Tekortkomingen van git-svn]].


==== Uploaden naar Sourceforge ====
==== Uploaden naar Sourceforge ====
Line 834: Line 840:
Om de lokale ontwikkelingen te delen, kunnen de wijzigingen worden geüpload naar een remote git repository op de SourceForge infrastructuur. Hiervoor moet eerst een [[#Developer_git_repository|developer git repository]] worden ingesteld onder jouw SourceForge profiel. Voeg deze dan als volgt toe:
Om de lokale ontwikkelingen te delen, kunnen de wijzigingen worden geüpload naar een remote git repository op de SourceForge infrastructuur. Hiervoor moet eerst een [[#Developer_git_repository|developer git repository]] worden ingesteld onder jouw SourceForge profiel. Voeg deze dan als volgt toe:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=<username>|user=<username>|type=git|repo=code-<vliegtuig>}
{{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=<username>|user=<username>|type=git|repo=code-<aircraft>}}
lang = "sh".
lang = "sh".
}}
}}
Line 843: Line 849:
</syntaxhighlight>
</syntaxhighlight>


De veranderingen in de nieuwe repository zullen zichtbaar worden via de web interface op {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{{sourceforge url|user=<username>|repo=code-<aircraft>|branch=master}}}}}}| stijl="color: blue"}.
De veranderingen in de nieuwe repository zullen zichtbaar worden via de web interface op {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge url|user=<username>|repo=code-<aircraft>|branch=master}}}}}}| style="color: blue"}}.


=== externe git-repository veranderingen verzenden naar FGAddon ===
=== Externe git-repository veranderingen verzenden naar FGAddon ===


{{Note|Ontwikkelingsscenario: Jij bent een individuele ontwikkelaar met FGAddon commit toegang en je wilt de commitments in een remote git repository overzetten naar FGAddon met behulp van een tijdelijke local git repository.}}
{{Note|Ontwikkelingsscenario: Jij bent een individuele ontwikkelaar met FGAddon commit toegang en je wilt de commits in een remote git repository overzetten naar FGAddon met behulp van een tijdelijke, lokale git repository.}}


Kloon eerst het FGAddon vliegtuig in een lokale git-svn repository d.m.v.:
Kloon eerst het FGAddon vliegtuig in een lokale git-svn repository d.m.v.:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{fgaddon bron|cmd=git svn clone|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
{{fgaddon source|cmd=git svn clone|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
lang = "sh".
| lang = "sh"
}}
}}


Hierdoor ontstaat een nieuwe lokale git repository gekoppeld aan FGAddon via git-svn. Als het vliegtuig nieuw is en niet aanwezig in FGAddon, kijk dan bij [[#New_aircraft|instructies voor het toevoegen van een nieuw vliegtuig aan FGAddon]].
Hierdoor ontstaat een nieuwe lokale git repository gekoppeld aan FGAddon via git-svn. Als het vliegtuig nieuw is en niet aanwezig in FGAddon, kijk dan bij [[Nl/FGAddon#Nieuwe_vliegtuigen|instructies voor het toevoegen van nieuwe vliegtuigen aan FGAddon]].
Stel vervolgens de remote git repository als remote, en haal de gegevens op met:
Stel vervolgens de remote git repository in als remote, en haal de gegevens op met:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git remote add <name> <url>
git remote add <name> <url>
gitfetch
git fetch
</syntaxhighlight>
</syntaxhighlight>


<code><url></code> is hierbij de URL is van het remote git archief. Maak ten slotte een geordende lijst van alle hashes van de commits die van begin tot eind naar FGAddon gestuurd moeten worden, en cherry-pick ze in de git-svn hoofdtak:
<code><url></code> is hierbij de URL is van het remote git archief. Maak ten slotte een geordende lijst van alle hashes van de commits die allemaal naar FGAddon gestuurd moeten worden, en cherry-pick ze in de git-svn hoofdtak:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hasj 1>
git cherry-pick <commit hash 1>
git cherry-pick <commit hasj 2>
git cherry-pick <commit hash 2>
git cherry-pick <commit hasj 3>
git cherry-pick <commit hash 3>
...
...
</syntaxhighlight>
</syntaxhighlight>


Merk op dat het git-svn lokale archief slechts één <code>master</code> tak mag hebben en alleen betrekking heeft op cherry-picking. Om de wijzigingen te zien die in de wachtrij staan voor verzending naar FGAddon:
Merk op dat het lokale git-svn archief slechts één <code>master</code> tak mag hebben en alleen betrekking heeft op cherry-picking. Om de wijzigingen te zien die in de wachtrij staan voor verzending naar FGAddon:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log git-svn...HEAD
git log git-svn..HEAD
git diff git-svn...HEAD
git diff git-svn..HEAD
</syntaxhighlight>
</syntaxhighlight>


Om de wijzigingen vervolgens naar FGAddon te sturen, "pull" de wijzigingen en verzendt de commits:
Om de wijzigingen vervolgens naar FGAddon te sturen, "pull" de wijzigingen en verzendt de commits:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
gitzvn-respons
git svn rebase
git svn dcommit
git svn dcommit
</syntaxhighlight>
</syntaxhighlight>


Het tijdelijke lokale archief kan dan worden verwijderd.
Het tijdelijke lokale archief kan vervolgens worden verwijderd.


=== Een bestaande git-repository verbinden met FGAddon ===
=== Een bestaande git-repository verbinden met FGAddon ===


{{Note|Ontwikkelingsscenario: Je bent een individuele ontwikkelaar of teamleider met FGAddon commit toegang en je wilt een reeds bestaande remote git repository verbinden met FGAddon om alle wijzigingen terug te sturen naar FGAddon.}}
{{Note|Ontwikkelscenario: Je bent een individuele ontwikkelaar of teamleider met FGAddon commit toegang en je wilt een reeds bestaande remote git repository verbinden met FGAddon om alle wijzigingen terug te sturen naar FGAddon.}}


Als er al een remote git repository bestaat met een ontwikkeld vliegtuig, is het mogelijk om deze aan te sluiten op het remote FGAddon repository met behulp van de git-svn tools.  
Als er al een remote git repository bestaat met een ontwikkeld vliegtuig, is het mogelijk om deze te koppelen aan de remote FGAddon repository met behulp van de git-svn tools.  


Het volgende voorbeeld maakt gebruik van de [[#Dedicated_FGAddon_branch|dedicated FGAddon branch technique]]. In de eerste plaats installeer je de koppeling naar FGAddon met git-svn in de vliegtuigspecifieke repository:
Het volgende voorbeeld maakt gebruik van de [[Nl/FGAddon#Gespecialiseerde_FGAddon_tak|Gespecialiseerde FGAddon tak]]. Om te beginnen maak je de koppeling naar FGAddon met behulp van git-svn in de vliegtuigspecifieke repository:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
{fgaddon bron|cmd=git svn init|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
{{fgaddon source|cmd=git svn init|protocol=svn+ssh|login=<username>|type=svn|path=Aircraft/<aircraft>|full=1}}
| lang = "sh".
| lang = "sh"
}}
}}                      


Hierin is <code><aircraft></code> de naam  van de vliegtuigdirectory in FGAddon. Merk op dat deze stap kan worden uitgevoerd zonder toegang tot FGAddon door gebruik van een alleen-lezen SVN URL, maar dat wijzigingen dan niet kunnen worden teruggeduwd naar FGAddon ([[#Synchronising|dcommitting]), zoals het in de git-svn terminologie wordt genoemd. Hierdoor kunnen upstream FGAddon-wijzigingen echter worden geïntegreerd in de remote git-repository, waardoor het eenvoudig wordt om wijzigingen voor te bereiden voor FGAddon-invoeging met behulp van patches die naar de mailinglijst worden verzonden of via andere kanalen worden verzonden.  
Hierin is <code><aircraft></code> de naam  van de vliegtuigdirectory in FGAddon. Merk op dat deze stap kan worden uitgevoerd zonder commit-toegang tot FGAddon door gebruik van een alleen-lezen SVN URL, maar dat wijzigingen vervolgens niet kunnen worden gerealiseerd in FGAddon [[Nl/FGAddon#Synchroniseren|dcommitting]], zoals het in de git-svn terminologie wordt genoemd). Hierdoor kunnen upstream FGAddon-wijzigingen worden geïntegreerd in de remote git-repository, waardoor het eenvoudig wordt om wijzigingen voor te bereiden voor invoeging in FGAddon, met behulp van patches die naar de mailinglijst worden verzonden of die via andere kanalen worden verzonden.  


Haal nu de huidige status op uit de externe FGAddon-repository:
Haal nu de huidige status op uit de externe FGAddon-repository:
Line 903: Line 909:
</syntaxhighlight>
</syntaxhighlight>


De gedownloade SVN-geschiedenis bevindt zich in de externe tak <code>remotes/git-svn</code>. Om wijzigingen vast te leggen in SVN heb je een lokale tak nodig die deze externe tak volgt. Creëer een lokale <code>fgaddon</code> tak die je zult gebruiken om updates vast te leggen:
De gedownloade SVN-geschiedenis kun je vinden in <code>remotes/git-svn</code>. Om wijzigingen vast te leggen in SVN heb je een lokale tak nodig die je in staat stelt deze externe tak te volgen. Creëer een lokale <code>fgaddon</code> tak die je zult gebruiken om updates naar FGAddon te zenden:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git branch fgaddon remots/git-svn
git branch fgaddon remots/git-svn
</syntaxhighlight>
</syntaxhighlight>


Na het vastleggen van de nieuwe gegevens in <code>master</code> branch, to push to FGAddon checkout the <code>fgaddon</code> tak en het updaten van SVN in het geval iemand anders het vliegtuig heeft bewerkt in de externe FGAddon repository:
Na het vastleggen van de nieuwe gegevens in de <code>master</code> tak en om te kunnen uploaden naar FGAddon, checkout de <code>fgaddon</code> tak en update via SVN in het geval iemand anders het vliegtuig heeft bewerkt in de externe FGAddon repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git checkout fgaddon
git checkout fgaddon
Line 914: Line 920:
</syntaxhighlight>
</syntaxhighlight>


Cherry-pick de nieuwe commits van <code>master</code> tot <code>fgaddon</code> om een lineaire geschiedenis te bewaren:
Cherry-pick de nieuwe commits van <code>master</code> naar <code>fgaddon</code> om een lineaire geschiedenis te realiseren:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hash 1>
git cherry-pick <commit hash 1>
Line 922: Line 928:
</syntaxhighlight>
</syntaxhighlight>


Om de wijzigingen te zien die in de wachtrij staan voor verzending naar FGAddon als vastlegging of als diff, typ je:
Om de wijzigingen te kunnen zien die in de wachtrij staan voor verzending naar FGAddon als vastlegging of als diff, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log git-svn..HEAD
git log git-svn..HEAD
Line 928: Line 934:
</syntaxhighlight>
</syntaxhighlight>


Als alles in orde lijkt, dcommit de lokale commits op de <code>fgaddon</code> tak om deze te verzenden naar de externe FGAddon SVN repository:
Als alles in orde lijkt, dcommit de lokale commits op de <code>fgaddon</code> tak om deze aansluitend te verzenden naar de externe FGAddon SVN repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
Line 938: Line 944:
</syntaxhighlight>
</syntaxhighlight>


Om veranderingen van upstream te krijgen kunt je ze gewoon downloaden met
Om veranderingen van upstream te krijgen kunt je ze zowel gewoon downloaden met
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn fetch
git svn fetch
</syntaxhighlight>
</syntaxhighlight>


of download ze en herhaal uw <code>fgaddon</code> branche:
of download ze en herbouw  gelijktijdig jouw <code>fgaddon</code> tak :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git checkout fgaddon
git checkout fgaddon
Line 951: Line 957:
=== Teamontwikkeling ===
=== Teamontwikkeling ===


{{Note|Ontwikkelingsscenario: Alle leden van het team treden op als gatekeepers, en alle commits worden rechtstreeks vastgelegdin FGAddon, hetzij met behulp van svn of met git-svn.}}
{{Note|Ontwikkelscenario: Alle leden van het team treden op als poortwachter en alle commits worden rechtstreeks vastgelegd in FGAddon, hetzij met behulp van svn of met git-svn.}}


De eenvoudigste manier om als team te werken is voor elke ontwikkelaar om ofwel een [[#Individual developer|svn copy of FGAddon]] ofwel een [[#Individual developer (git-svn)|git-svn copy of FGAddon] te hebben, en iedereen legt wijzigingen direct vast in FGAddon. Communicatie en coördinatie tussen de teamleden kan worden uitgevoerd met behulp van een [[#Team_communications|team leader organised SourceForge forum]] of met behulp van het [http://forum.flightgear.org/ FlightGear forum]. In dit scenario moet het team het initiatief nemen en iedereen vraagt FGAddon toegang aan.
De eenvoudigste manier om als team te werken is die waarbij elke ontwikkelaar ofwel een [[Nl/FGAddon#Afzonderlijke_ontwikkelaar|svn kopie van FGAddon]] heeft ofwel een [[Nl/FGAddon#Afzonderlijke_ontwikkelaar_.28git-svn.29|git-svn kopie van FGAddon]] en iedereen wijzigingen direct vastlegt in FGAddon. Communicatie en coördinatie tussen de teamleden kan worden geregeld met behulp van een [[Nl/FGAddon#Teamcommunicatie|door de teamleider ingesteld SourceForge forum]] of met behulp van het [http://forum.flightgear.org/ FlightGear forum]. In dit scenario moet het team het initiatief nemen en vraagt iedereen toegang tot FGAddon.


=== Private teamontwikkeling (git-svn) ===
=== Private teamontwikkeling (git-svn) ===


{{Note|Ontwikkelingsscenario: Een teamleider treedt op als poortwachter op een private git repository gehost op de interne SourceForge infrastructuur, met gebruikmaking van git-svn om een fgaddon branch naar FGAddon te duwen, waarbij teamleden direct wijzigingen vastleggen in de private git repository of samenvoegverzoeken doen vanaf hun "vork" van de private repository.}}
{{Note|Ontwikkelscenario: Een teamleider treedt op als poortwachter op een private git repository, gehost op de interne SourceForge infrastructuur, met gebruikmaking van git-svn om een fgaddon branch naar FGAddon te pushen, waarbij teamleden direct wijzigingen vastleggen in de private git repository of samenvoegverzoeken doen vanaf hun "vork" van de private repository.}}


Om alles in huis te houden, zal de hele operatie gebaseerd zijn op de officiële infrastructuur en remote repositories onder het SourceForge (SF) profiel van elke gebruiker. Opmerking aan de teamleider - je moet [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn keep your git-svn history lineair] (wat betekent dat er een [[#Dedicated_FGAddon_branch|dedicated FGAddon branch]] aangemaakt moet worden en dat wijzigingen manueel moeten worden verwerkt in deze branch). Hieronder wordt het <code>ornithopter</code> vliegtuig als voorbeeld gebruikt.
Om alles in eigen huis te houden, zal de hele operatie gebaseerd zijn op de officiële infrastructuur en remote repositories onder het SourceForge (SF) profiel van elke gebruiker. Opmerking aan de teamleider - je moet [https://git-scm.com/book/en/v1/Git-and-Other-Systems-Git-and-Subversion#git-svn keep your git-svn history lineair] (wat betekent dat er een [[Nl/FGAddon#Gespecialiseerde_FGAddon_tak|Gespecialiseerde FGAddon tak]] aangemaakt moet worden en dat wijzigingen manueel <<cherry-pick>> moeten worden verwerkt in deze branch). Hieronder wordt het <code>ornithopter</code> vliegtuig als voorbeeld gebruikt.


==== Het team ====
==== Het team ====
Line 967: Line 973:
==== Teamleider ====
==== Teamleider ====


===== Privé-repository setup =====
===== Inrichting van een privé-repository =====


Deze stappen moeten worden genomen door de teamleider. Stel in jouw SourceForge gebruikersprofiel een [[#Developer_git_repository| git repository] in met het label <code>Ornithopter FGAddon git-svn repository</code> en codepad <code>code-ornithopter</code>. Maak dan een lege lokale git repository:
Deze stappen moeten worden genomen door de teamleider. Stel in jouw SourceForge gebruikersprofiel een [[Nl/FGAddon#ontwikkelaar_git_repository|ontwikkelaar git repository]] in met het label <code>Ornithopter FGAddon git-svn repository</code> en het codepad <code>code-ornithopter</code>. Maak dan een lege lokale git repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ mkdir ornithopter
$ mkdir ornithopter
Line 983: Line 989:
}}
}}


Vervang <code><<username></code> door jouw SF-gebruikersnaam. Zet een speciale git-svn branch op voor FGAddon gatekeeping en het terugzetten van wijzigingen in de repository:
Vervang <code><<username></code> door jouw SF-gebruikersnaam. Zet een speciale git-svn branch op voor de koppeling met FGAddon en voor dcommitting van wijzigingen naar FGAddon:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git branch fgaddon remotes/git-svn
$ git branch fgaddon remotes/git-svn
Line 989: Line 995:
</syntaxhighlight>
</syntaxhighlight>


En download de <code>ornithopter</code> van FGAddon:
En download de <code>ornithopter</code> vanuit FGAddon:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git svn rebase
$ git svn rebase
</syntaxhighlight>
</syntaxhighlight>


Om de huidige instelling van de lokale git-svn te zien, typ je:
Om de huidige instelling van de lokale git-svn repository te zien, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git branch -vva
$ git branch -vva
Line 1,006: Line 1,012:
</syntaxhighlight>
</syntaxhighlight>


Tot slot stel je de remote git repository in als remote:
Tot slot stel je de externe git repository in als remote:
{{#tag:syntaxhighlight|
{{#tag:syntaxhighlight|
$ {{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=<username>|user=<username>|type=git|repo=code-ornithopter}}
$ {{sourceforge url|cmd=git remote add|opt=origin|protocol=ssh|login=<username>|user=<username>|type=git|repo=code-ornithopter}}
Line 1,012: Line 1,018:
}}
}}


En stuur de master branch naar de remote git repository:
En stuur de master branch naar de externe git repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git push -u origin master
$ git push -u origin master
</syntaxhighlight>
</syntaxhighlight>


Om de nieuwe opzet te zien:
Om de nieuwe opzet te zien, typ je:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
$ git branch -vva
$ git branch -vva
Line 1,023: Line 1,029:
</syntaxhighlight>
</syntaxhighlight>


De repostitory zal zich bevinden op {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge url|user=<username>|repo=code-ornithopter|branch=master}}}}}}| style="color: blue"}} Merk op dat de git-svn informatie opgeslagen in de <code>.git/svn</code> directory niet geduwd zal worden naar remote SoureForge repository, en daarom zal de link terug naar FGAddon alleen aanwezig zijn in de lokale kopie van de teamleider. De git-svn-verbinding kan indien nodig op een later tijdstip worden hersteld.
De repository zal zich bevinden op {{#tag:span|{{#tag:tt|{{#tag:nowiki|{{sourceforge url|user=<username>|repo=code-ornithopter|branch=master}}}}}}| style="color: blue"}} Merk op dat de git-svn informatie die is opgeslagen in de <code>.git/svn</code> directory niet geűpload zal worden naar de remote SoureForge repository en daarom zal de link naar FGAddon alleen aanwezig zijn in de lokale kopie van de teamleider. De git-svn-verbinding kan, indien nodig, op een later tijdstip worden ingesteld.


===== Teamopstelling =====
===== Teamopstelling =====


Oprichting van een [[#Development teams|dedicated development team and grant them access to the git-svn repository]].
Oprichting van een speciaal [[Nl/FGAddon#Ontwikkelteams|Ontwikkelteam]] met toegang tot de git-svn repository.


===== Uploaden naar FGAddon =====
===== Uploaden naar FGAddon =====


Wijzigingen vastleggen in FGAddon is voor de lokale git repository van de teamleider. De geschiedenis moet lineair zijn in de tak van de fgaddon, dus cherry-picking is de juiste weg. Dit wat betreft de  
Wijzigingen vastleggen in FGAddon wordt gedaan vanuit de lokale git repository van de teamleider. De geschiedenis moet lineair zijn in de tak van de fgaddon, dus cherry-picking is de juiste weg. Dit wat betreft de  
[[#Individual developer (git-svn)|Individual developer (git-svn)]] sectie. In de lokale git repository, schakel over naar de <code>fgaddon</code> tak:
[[Nl/FGAddon#Afzonderlijke_ontwikkelaar_.28git-svn.29|Afzonderlijke ontwikkelaar (git-svn)]] sectie. In de lokale git repository, schakel je over naar de <code>fgaddon</code> tak:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git checkout fgaddon
git checkout fgaddon
</syntaxhighlight>
</syntaxhighlight>


Download wijzigingen die in FGAddon hebben plaatsgevonden:
Download de wijzigingen die in FGAddon hebben plaatsgevonden:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn rebase
git svn rebase
</syntaxhighlight>
</syntaxhighlight>


Om de wijzigingen te zien in de <code>master</code> tak die niet in de <code>fgaddon</code> tak zitten, typ één van de volgende regels:
Om de wijzigingen te zien in de <code>master</code> tak die niet in de <code>fgaddon</code> tak zitten, typ je één van de volgende regels:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log HEAD..master
git log HEAD..master
Line 1,048: Line 1,054:
</syntaxhighlight>
</syntaxhighlight>


Selecteer handmatig de wijzigingen die naar FGAddon moet worden gestuurd en selecteer deze:
Selecteer handmatig de commits die naar FGAddon moet worden gestuurd en selecteer deze d.m.v. cherry-pick:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hash 1>
git cherry-pick <commit hash 1>
Line 1,056: Line 1,062:
</syntaxhighlight>
</syntaxhighlight>


Je kunt een reeks wijzigingen kiezen:
Je kunt ook d.m.v. cherry-pick een reeks commits kiezen:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git cherry-pick <commit hash 1>^..<commit hash 8>
git cherry-pick <commit hash 1>^..<commit hash 8>
</syntaxhighlight>
</syntaxhighlight>


Controleer dan wat er verstuurd moet worden:
Controleer dan wat er verstuurd gaat worden:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git log git-svn..HEAD
git log git-svn..HEAD
Line 1,067: Line 1,073:
</syntaxhighlight>
</syntaxhighlight>


Stuur de wijzigingen naar FGAddon, stuur de git <code>fgaddon</code> branch wijzigingen naar de remote git repository, en schakel terug naar de master branch:
Stuur de wijzigingen naar FGAddon, stuur de git <code>fgaddon</code> branch wijzigingen naar de externe git repository en schakel terug naar de master branch:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git svn dcommit
git svn dcommit
Line 1,074: Line 1,080:
</syntaxhighlight>
</syntaxhighlight>


Voeg tenslotte de wijzigingen samen in de git svn met hun nieuwe hashes van de <code>fgaddon</code> tak, en stuur alles naar de remote git repository:
Voeg tenslotte de wijzigingen samen in de git svn met hun nieuwe hashes van de <code>fgaddon</code> tak en stuur alles naar de remote git repository:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git merge fgaddon
git merge fgaddon
Line 1,090: Line 1,096:
}}
}}


Vervang <code><username></code> door jouw SourceForge gebruikersnaam, en <code><username_leader></code> is de SourceForge gebruikersnaam van de teamleider.
Vervang <code><username></code> door jouw SourceForge gebruikersnaam en <code><username_leader></code> is de SourceForge gebruikersnaam van de teamleider.


===== Verzoeken om afsplistingen en samenvoegingen =====
===== Verzoeken om afsplistingen en samenvoegingen =====


Als alternatief kan elk teamlid een afsplitsing maken van de git repository onder jouw SourceForge-account:
Als alternatief kan elk teamlid een afsplitsing maken van de git repository onder het SourceForge-account:
Ga naar {{#tag:span|{#tag:tt|{{#tag:nowiki|{{{#tag:nowiki source|{{sourceforge source|user=<username>|repo=code-ornithopter|branch=meester|full=1}.}}}}| style="color: blue"}}, waarbij <code><username></code> de SourceForge gebruikersnaam is van de teamleider.
Ga naar {{#tag:span|{#tag:tt|{{#tag:nowiki|{{{#tag:nowiki source|{{sourceforge source|user=<username>|repo=code-ornithopter|branch=meester|full=1}}}}}}| style="color: blue"}}, waarbij <code><username></code> de SourceForge gebruikersnaam is van de teamleider.
* Click on <code>Fork</code>.
* Click on <code>Fork</code>.
* Set the mount point to <code>code-ornithopter</code> and change the label as you wish.
* Stel het pad in naar <code>code-ornithopter</code> en wijzig het label naar wens.


Ontwikkel en upload naar jouw afsplitsing, voer dan de wijzigingen door door te klikken op de <code>Request Merge</code> knop.
Ontwikkel en upload naar jouw afsplitsing, verzoek dan om de commits samen te voegen door te klikken op de <code>Request Merge</code> knop.


== References ==
== References ==
Line 1,109: Line 1,115:
[[en:FGAddon]]
[[en:FGAddon]]
[[fr:FGAddon]]
[[fr:FGAddon]]
[[nl:FGAddon]]
[[pl:FGAddon]]

Latest revision as of 15:40, 14 March 2024

FGAddon logo.png

De officiële FGAddon vliegtuighangar is een versiebeheersysteem, gehost op de SourceForge infrastructure van FlightGear en wordt gebruikt voor de continue ontwikkeling van FlightGear-vliegtuigen. FGAddon is een Apache Subversion versiebeheer opslaglocatie. De vliegtuigen die hierin zijn opgenomen maken geen deel uit van het basispakket (de vliegtuigen die in het basispakket zijn opgenomen - de Nl/Cessna_172P en de UFO - worden in het FGData repository bewaard), maar worden gekoppeld aan elke stabiele release voor de FlightGear download pages.

Het FGAddon-ontwikkelcentrum voor vliegtuigen moet als onstabiel worden beschouwd. Wanneer je een stabiele FlightGear-release gebruikt, kun je het beste een vliegtuig met een overeenkomstig versienummer van de FlightGear download pages gebruiken. Echter, omdat de stabiele releases van FlightGear versie 3.4 en volgende van FlightGear worden gekoppeld aan de opbergruimte van FGAddon, kunnen de Subversion hulpmiddelen een handige manier zijn om individuele vliegtuigen of het complete aanbod van ongeveer 500 vliegtuigen te verkrijgen. Ook als je gebruik maakt van de laatste nightly releases of een self-compiled version of FlightGear van Git version control repositories, maakt het gebruik van FGAddon het mogelijk om het vliegtuig te updaten naar de nieuwste ontwikkelversie.

Geschiedenis

Original Win95 icon

Het FlightGear project werd op 8 april 1996 bedacht door David Murr, die een nieuwe vluchtsimulator voorstelde die geheel door vrijwilligers zou worden ontwikkeld.[1][2][3][4]. Een deel van de aanvankelijke doelstellingen had betrekking op het ontwikkelen van 2D- en 3D grafische routines voor de simulator. Dit was echter een enorme taak die begin 1997 onvoltooid tot stilstand kwam omdat de hoofdontwikkelaar, Eric Korpela, zijn proefschrift aan het afronden was. Daarom heeft Curtis Olson vanaf 16 mei 1997 de ontwikkeling opnieuw opgestart met een nieuw project op basis van OpenGL-bibliotheken, waardoor in korte tijd een functionele vluchtsimulator kon worden samengesteld. [5]. De eerste resultaten hadden betrekking op de oorspronkelijke flightgear and simgear CVS version control repositories.

Naarmate het project groeide, nam ook de omvang, kwantiteit en kwaliteit van de FlightGear-onderdelen toe. Deze onderdelen waren niet logisch geordend, maar verspreid over verschillende onderdelen op het internet. Daarom werd besloten dat een groot deel van deze FlightGear-inhoud zou worden samengevoegd en opgeslagen in een nieuwe gecentraliseerde CVS-repository, fgdata genaamd, die op 22 oktober 2000 werd gecreëerd. Om de juridische herverdeling van deze activa in het kader van de FlightGear verspreiding mogelijk te maken, werd alleen een GPLv2-beleid aangenomen.

In mei 2010 werd de ontwikkeling onderbroken door het beruchte "koffie-incident" dat leidde tot het verlies van Curtis' thuis-server met alle FlightGear-repositories [6]. Deze gebeurtenissen hebben geleid tot een mass migration of all the CVS repositories to Git repositories. Vanwege bandbreedteproblemen werd besloten om de nieuwe repositories te hosten op de open source infrastructuur van Gitorious.

Naarmate het project groeide, namen omvang en bereik van de fgdata repository toe, vooral door het groeiende aantal vliegtuigen opgeslagen in $FG_ROOT/Aircraft, waardoor een splitsing onvermijdelijk was. Een eerste splitsingspoging werd georganiseerd door Gijs de Rooy en op 18 oktober 2011 aangekondigd [7]. Elk vliegtuig werd in zijn eigen Git-repository geplaatst en alle vliegtuigen werden met behulp van een Git-submodulebenadering weer gekoppeld aan fgdata. Deze poging was echter geen succes en werd gestopt. Vanaf deze datum tot eind 2014 werd het ontwerp van de fgdata splitsing bediscussieerd op de ontwikkelmailinglijst en samengevat in een FlightGear Git: splitting fgdata wiki artikel. In de planningsfasen stonden de repositories bekend als fgdata-oud en gesplitst in FGData (ook bekend als fgdata-nieuw) en FGAddon (ook wel bekend als flightgear-aircraft en fgaircraft). Na een half decennium van planning werd besloten dat de ontwikkeling van FlightGear-vliegtuigen via een centrale repository op het Subversion (SVN) versiebeheersysteem de beste oplossing zou zijn. Dit zou het communautair beheer en het onderhoud van de vliegtuigen vergemakkelijken en tegelijkertijd zorgen voor modulariteit, kleinere downloads en kleinere lokale repositories.

Eind 2014 kondigde Gitorious, de aanbieder van de open-source-infrastructuur voor de FlightGear source code en data repositories, aan dat het zijn diensten tegen mei 2015 zou sluiten vanwege de overname door GitLab. Dit was de aanzet voor een versnelde splitsing van fgdata-oud en een overstap naar de SourceForge open source infrastructuur voor het hosten van de VC repositories. Andere delen van de FlightGear-infrastructuur werden al gehost door SourceForge, waardoor de verhuizing een logische stap werd. SourceForge stemde er schriftelijk mee in om de enorme FlightGear vliegtuigcollectie te hosten, een collectie waarvan de grootte ongeëvenaard is in open-sourcekringen. Vandaag de dag wordt de FGAddon SVN repository, samen met het grootste deel van de FlightGear projectinfrastructuur, gehost op SourceForge.

In augustus 2015 werd een nieuw FlightGear-beleidsdocument opgesteld om de ongeschreven normen van het project vast te leggen [8]. Met dit document is het licentiebeleid voor de FlightGear-vliegtuigen die op FGAddon worden gehost, opgewaardeerd van GPLv2-only naar GPLv2+. Om de licentie proliferatie tegen te gaan, complicaties te vermijden door werk vanuit het ene vliegtuig in het andere te gebruiken, en omwille van de integriteit en het welzijn van het FlightGear-project, wordt sterk aanbevolen dat alle originele inhoud (zowel die wordt gehost in FGAddon of elders) gebruik maakt van een GPLv2+ licentie.


Het verkrijgen van vliegtuigen

Tip  Als je graag andere vliegtuigen voor een stabiele FlightGear release zou willen gebruiken en als je niet op de hoogte bent van een versiebeheersysteem, moet je de FlightGear hangars bezoeken om vliegtuigen te downloaden.
Let op  Als de FlightGear- en FGAddon-versies van vliegtuigen niet met elkaar overeenkomen, kun je onverwachte problemen ontmoeten en zal de versie-mismatch van deze combinatie niet worden ondersteund door de FlightGear-community.

Met toegang tot de Subversion Subversion (SVN) tools kan de FGAddon versie control repository een handige manier zijn om vliegtuigen te verkrijgen voor gebruik binnen een specifieke FlightGear versie en wel rechtstreeks van de officiële bron. Bij gebruik van de nightly builds of een version controlled copy of FlightGear, moet je de meest recente versie van het vliegtuig downloaden zodat de versies overeenkomen. Hieronder wordt beschreven hoe je als FlightGear gebruiker de officiële repository kunt gebruiken om vliegtuigen te verkrijgen.

Voorbereiding

Om de FGAddon-repository te kunnen gebruiken, moet Subversion geïnstalleerd worden:

  • MS Windows: Installeer een van many Subversion clients. Bij voorbeeld SlikSVN is een van de beste commandoregelversies en de beste voor vliegtuigontwikkeling en TortoiseSVN biedt een gebruiksvriendelijke grafische gebruikersinterface (GUI) door de integratie in Windows Explorer.
  • Mac OS X: Installeer de official Subversion client.
  • GNU/Linux: Installeer de Subversion client via de package manager. Dit zal gewoonlijk een pakket zijn met de naam subversion-*.{rpm,deb}.
    • Dit commando zou ook moeten werken voor het Raspberry Pi platform: sudo apt-get install subversion. Het bevat ook een client.

FGAddon mappenstructuur

Om te weten hoe je de FGAddon repository moet gebruiken, is een goed begrip van de opzet van de repository directory essentieel.

  • /trunk: In deze basismap zitten de in ontwikkeling zijnde versies van de vliegtuigen.
  • /branches/release-x.y.z/: Deze directories/mappen komen overeen met de verschillende stabiele FlightGear releases.

De web interface for the FGAddon repository maakt het mogelijk een overzicht van alle vliegtuigen te krijgen.

Downloaden

Aircraft to be downloaded

Kies eerst een vliegtuig om te downloaden. In dit voorbeeld zullen we de Bell Boeing V-22 Osprey gebruiken.

Command line

Om dit vliegtuig voor FlightGear 3.4 te downloaden, type je in:

svn co https://svn.code.sf.net/p/flightgear/fgaddon/branches/release-3.4.0/Aircraft/V22-Osprey

Om de in ontwikkeling zijnde versie te verkrijgen, gebruik je:

svn co https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/V22-Osprey

Als je alle ~500 vliegtuigen uit de repository wil hebben - pas wel op dat dit een enorme download van meer dan 6 GB zal zijn - gebruik dan de volgende opdracht:

svn co https://svn.code.sf.net/p/flightgear/fgaddon/trunk flightgear-fgaddon

Wanneer je een stabiele FlightGear release gebruikt, bijvoorbeeld FlightGear 2016.1, en je wilt alle FGAddon-vliegtuigen downloaden voor die specifieke FlightGear-versie, gebruik dan:

svn co https://svn.code.sf.net/p/flightgear/fgaddon/branches/release-2016.1 flightgear-fgaddon

GUI cliënten en TortoiseSVN

Wanneer je een van de GUI's van Subversion gebruikt (GUI = grafische gebruikersinterfaces), kopieer dan gewoon een van de bovenstaande https:// URL's en gebruik deze in de betreffende GUI (elke GUI is anders, zie de relevante documentatie voor hulp). Voor de versie van TortoiseSVN:

  • Maak in Windows Verkenner een nieuwe, lege map aan voor het vliegtuig (of voor een verzameling vliegtuigen)
  • Klik met de rechtermuisknop in de nieuwe map en selecteer SVN Checkout...
  • Kopieer en plak de URL, bijvoorbeeld https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/V22-Osprey, laat alle andere instellingen zoals ze zijn en importeer door op OK te klikken.

Zie voor meer details de TortoiseSVN documentation. Houd er rekening mee dat er een optie is om het commandoregelgereeedschap mee te nemen bij het installeren van TortoiseSVN.

Vliegen

Om het nieuw gedownloade vliegtuig te gebruiken, raadpleeg je het artikel Howto:Install aircraft, waarbij je de instructies voor het downloaden en uitpakken van het vliegtuig kunt overslaan.

Updaten

Met een uitgecheckte versie van de /trunk ontwikkelversie kan het vliegtuig worden bijgewerkt naar de laatste versie, met het commando:

svn up

Ontwikkelen van vliegtuigen

Tip  De FlightGear-gemeenschap stimuleert de ontwikkeling van vliegtuigen rechtstreeks binnen FGAddon.

Contact met de oorspronkelijke vliegtuigontwikkelaars

De eerste stap om vliegtuigen uit de officiële FlightGear hangar of vanuit een van de private hangars te helpen ontwikkelen en vooruit te helpen is door contact te leggen met de oorspronkelijke ontwikkelaar(s). Hun namen kun je vinden in het *-set.xml bestand en wel in de <authors> XML tag. Vaak wordt het emailadres van de ontwikkelaar vermeld in een README-bestand of in een ander tekstbestand in de bestandenmap van het betreffende vliegtuig. Zo niet, dan kan soms contact worden opgenomen via FlightGear development mailing list. Contact opnemen met de oorspronkelijke ontwikkelaar(s) is belangrijk om te zien of het vliegtuig nog actief wordt doorontwikkeld en of jij als onderdeel van het ontwikkelteam mee kunt helpen.

SourceForge account

Om aan de officiële vliegtuigcollectie mee te kunnen werken, moet eerst een https://sourceforge.net/user/registration SourceForge-account worden aangemaakt. Op die manier kun je, zodra toegang is verleend, ofwel direct bijdragen leveren via de FGAddon repository of meewerken als onderdeel van een SourceForge-ontwikkelteam. Het registratieproces neemt zeer weinig tijd in beslag en de SourceForge ontwikkel-infrastructuur en ontwikkelaarsdiensten zijn in minder dan een minuut toegankelijk.

Toegang tot Commit

Voordat je toegang tot "commit" krijgt, moet je eerst alles in het werk stellen om contact op te nemen met de oorspronkelijke ontwikkelaar(s) om zeker te weten dat het vliegtuig van jouw keuze actief wordt ontwikkeld. Als dit niet lukt, meld je dan aan voor de FlightGear development mailing list en vraag daar om hulp. Als het vliegtuig een actieve ontwikkelaar heeft, zal worden aangegeven hoe je aan de ontwikkeling kunt bijdragen. Vraag anders of iemand jou als mentor kan begeleiden in het proces om een vliegtuigontwikkelaar te worden met volledige commit toegang.

Om toegang te krijgen tot commit, zul je eerst:

  1. Jouw capaciteiten en ontwikkelvaardigheden moeten aantonen.
  2. Moeten duidelijk maken dat je het flightgear policy document begrijpt.
  3. Moeten laten zien dat je de GPL-licentieproblemen begrijpt en dat je geen auteursrechtelijk beschermd, niet-GPL-materiaal, zult gebruiken.
  4. Het vertrouwen van de FlightGear-gemeenschap verdient.

Deze eenvoudig te nemen hindernissen zijn ontworpen om de database te beschermen tegen beschadiging of vervuiling door illegale inhoud.

Om jouw wijzigingen in de FGAddon database te laten vastleggen, moet je afstemmen met de oorspronkelijke vliegtuigontwikkelaar of met jouw mentor, hoe je dat het beste kunt regelen. Afhankelijk van het Nl/FGAddon#Ontwikkelscenario's kan dit door samenvoeging van aanvraag, bestandsoverdracht, het primitieve patchsysteem of op een andere handige manier. Zodra je denkt dat je jouw capaciteiten hebt bewezen en dat je op de hoogte bent van GPL-licentieproblatiek is het zaak een bericht te sturen naar de mailinglijst voor ontwikkelaars met de vraag of je toegang kunt krijgen en tegelijkertijd een SourceForge-gebruikersnaam doorgeven.

FGAddon commitlog mailinglijst

Om alle wijzigingen te kunnen volgen die zich voordoen in de FGAddon-repository, moet je je abonneren op de speciale Flightgear FGAddon commitlogs mailing list. Per vastlegging wordt één e-mail verstuurd, zodra de vastlegging is gedaan.

Version control tools/Hulpmiddelen voor versiebeheer

Om toegang te krijgen tot FGAddon en het te gebruiken voor vliegtuigontwikkeling, zijn de Subversion of SVN versie control hulpmiddelen nodig. Als alternatief biedt git-svn een interface voor degenen die de voorkeur geven aan de git versiebeheersystemen.

Subversion

Instellen

De FGAddon vliegtuighangar is opgeslagen in een Subversion database op de SourceForge infrastructuur en daarom is het het eenvoudigst om de SVN tools te gebruiken voor de ontwikkeling van vliegtuigen om zo de minste problemen te ontmoeten. Zie het hoofdstuk Voorbereiding voor het instellen van deze hulpmiddelen.

Repository checkout

De eerste stap is de zogenaamde 'checkout' van een kopie van ofwel de repository trunk of één van de vliegtuigen daaruit:

svn co <url> <dir>

Voor het gebruik van de relevante URL moet je een van de Ontwikkelscenario's kiezen en de URL in die sectie vinden. Dit commando maakt een lokale subversion repository kopie aan in de gegeven <dir> directory. Let op dat dit alleen het deel van de FGAddon repository bevat dat in de URL is gespecificeerd. Dit betekent dat Subversion je in staat stelt om ofwel één enkel bestand uit te checken tot aan de volledige database.

Informatie en geschiedenis

Om op elk gewenst moment informatie te kunnen bekijken over het lokale bestand, type je:

svn info

Om de geschiedenis van de uitgecheckte kopie van de repository te zien, typ je:

svn log
svn log | less
svn log -v | less

Dagelijks gebruik

Het belangrijkste Subversion commando dat je zult gebruiken is:

svn add <path>

Dit registreert het bestand of de map <path> binnen de lokale repository om toe te staan dat het later 'gecommit' wordt naar de remote git repository. Als je een bestand of map wilt verplaatsen of hernoemen, gebruik je:

svn mv <path1> <path2>

Dit moet worden gebruikt in plaats van het normaal verplaatsen/hernoemen van bestanden, zodat de wijziging wordt bijgehouden in de lokale repository. Als je een bestand uit de lokale repository wilt verwijderen, typ je:

svn rm <path>

Om de huidige status van het lokale archief te zien, typ je:

svn st

Als je het lokale archief wilt bijwerken met wijzigingen in het externe archief, typ je:

svn up

Veranderingen doorvoeren

Alle bovenstaande bewerkingen vinden alleen plaats in de lokale repository-kopie - de externe FGAddon-repository bij SourceForge zal niets van deze wijzigingen weten. Als je al jouw wijzigingen naar FGAddon wilt verzenden, moet je de wijzigingen doorvoeren met:

svn ci

Hiermee wordt een editor geopend waarmee je een informatief commit-logbericht kunt schrijven. Wanneer je commit, kun je het beste kleine modulaire commits maken, zodat elke commit overeenkomt met een enkel doel. Merk op dat je alleen commits kunt aanbieden aan FGAddon als je Toegang tot Commit hebt.

Vertakken

Het concept van Subversion vertakking wordt momenteel alleen gebruikt in het FlightGear project voor het markeren van de stabiele releases. Als je echter nieuwsgierig bent naar vertakken, raadpleeg dan het hoofdstuk hoofdstuk over vertakken en samenvoegen in de Subversion handleiding en het Svnmerge.py script dat het proces aanzienlijk kan vereenvoudigen.

Git-svn

De git-svn tool is handig voor diegenen die al vertrouwd zijn met het gebruik van git repositories of voor degenen die hun eigen privé vliegtuig ontwikkelruimte willen hebben. Git-svn verzorgt een brug tussen de remote FGAddon Subversion repository en een lokaal opgeslagen git repository. Voor degenen die niet vertrouwd zijn met git, git-svn in combinatie met de git repository is veel ingewikkelder om te gebruiken dan het native Subversion gereedschap.

Voor meer informatie over het gebruik van git, zie Howto: start werken met git Howto: Begin git te gebruiken. In het volgende wordt ervan uitgegaan dat slechts één enkel vliegtuig wordt opgeslagen in de lokale git repository

Instellen

Het git versie beheersysteem moet eerst worden geïnstalleerd.

Het klonen van één enkel vliegtuig

De eerste stap is het 'klonen' van een kopie van één van de vliegtuigen in het remote Subversion systeem:

git svn clone <aircraft_url>

Voor het gebruik van de relevante vliegtuig-URL moet je een van de Ontwikkelscenario's kiezen en de betreffende URL vind je in dat onderdeel. De URL is afhankelijk van jouw FGAddon Toegang tot Commit. Het kloon commando zal een lokale git repository aanmaken met alleen het vliegtuig van jouw voorkeur en zal de git-svn brug initialiseren.

Informatie en geschiedenis

Om op elk gewenst moment informatie te kunnen bekijken over het lokale bestand, typ je:

git svn info
git branch -vva
git remote -v

Om de geschiedenis van de uitgecheckte kopie van het archief te zien, typ je:

git log

Dagelijks gebruik

Het belangrijkste git commando dat je zult gebruiken is:

git add <path>

Dit registreert het bestand of de map <pad> binnen de lokale repository om toe te staan dat het later 'gecommit' wordt naar de lokale git repository. Als je een bestand of map wilt verplaatsen of hernoemen, gebruikt je:

git mv <path1> <path2>

Let echter op dat de git geschiedenis niet zo robuust is als geschiedenis in svn. Zie de sectie git-svn: bestanden verplaatsen of hernoemen voor meer informatie over het uitvoeren van deze handeling. Als je een bestand uit het lokale archief wilt verwijderen, typ je:

git rm <path>

Om de huidige status van de lokale repository te zien, typ je:

git status

Wijzigingen doorvoeren

Aangezien git een gedistribueerd versiebeheersysteem is, worden wijzigingen vastgelegd in de lokale git repository.

git commit

Hiermee wordt een editor geopend waarmee je een informatief commit-logbericht kunt schrijven. De commit is lokaal en zal niet naar FGAddon worden verzonden.

Gespecialiseerde FGAddon tak

In bovenstaande voorbeelden zijn we ervan uitgegaan dat er slechts één enkele versie in de repository beschikbaar is. Als interactie met een remote git repository of vertakking in de lokale git repository gewenst is, dan is een andere strategie vereist. De reden hiervoor is dat de met FGAddon gesynchroniseerde tak een preserve a linear history moet behouden. Dit betekent dat alleen de gewenste veranderingen in die tak toegestaan worden.

In het volgende voorbeeld zullen twee takken worden aangemaakt in de lokale git repository:

  • fgaddon: Deze tak zal worden gewijd aan de synchronisatie van FGAddon en zal een lineaire geschiedenis behouden.
  • master: Een hoofdtak voor de ontwikkeling van vliegtuigen, die samenvoegingen en andere niet-lineaire historische operaties mogelijk maakt.

Uitgaande van een nieuw gekloonde repository maak je de nieuwe fgaddon tak met het commando:

git branch fgaddon

Schakel vervolgens over naar die tak:

git checkout fgaddon

Op deze tak kan dan de synchronisatie van FGAddon worden uitgevoerd. Om de ontwikkelingen uit de hoofdtak te halen, gebruik je 'cherry-picking' om een sequentieel geordende lijst van commit hashes aan te brengen:

git cherry-pick <commit hash 1>
git cherry-pick <commit hash 2>
git cherry-pick <commit hash 3>
...

Om de lijst met commits te zien die naar FGAddon zullen worden gestuurd, voorafgaand aan dcommitting, typ je::

git log git-svn..HEAD

En om de veranderingen in één diff te zien::

git diff git-svn..HEAD

Synchroniseren

Om de wijzigingen naar de remote FGAddon repository te sturen, moet je eerst overschakelen naar de dedicated (gespecialiseerde) fgaddon tak:

git checkout fgaddon

Zorg ervoor dat de lokale git-svn-repository up-to-date is met alle wijzigingen die zich hebben voorgedaan in FGAddon:

git svn rebase

Daarna kun je met een Push of dcommit jouw wijzigingen naar FGAddon zenden met:

git svn dcommit

Tekortkomingen van git-svn

Waarschuwing  Het uitvoeren van git-svn clone van de /trunk/ of van de hele repository is niet aan te raden, omdat de volledige geschiedenis van de repository gedownload zal worden, wat resulteert in een enorme lokale repository/database en een grote belasting vormt voor de open source infrastructuur van FlightGear.

Het is belangrijk om te begrijpen dat er bewerkingen zijn waarbij het gebruik van git-svn nadelen heeft. In dergelijke gevallen verdient het aanbeveling de svn-tools te gebruiken.

Bestanden kopiëren tussen vliegtuigen

Let op  Git-svn houdt de kopieergeschiedenis van bestanden, die normaal aanwezig is in een Subversion repository, niet bij.

De belangrijkste tekortkoming betreft het kopiëren van content van andere FGAddon-vliegtuigen. In dit geval heb je FGAddon commit-toegang nodig en een lokale svn-kopie van de repository. Synchroniseer eerst de repositories door alle wijzigingen d.m.v. dcommit terug te draaien naar FGAddon:

git svn dcommit

Kopieer het gewenste bestand vervolgens in de lokale svn repository:

svn cp Aircraft/<aircraft1>/<file_path1> Aircraft/<aircraft2>/<file_path2>

En voer de verandering door d.m.v. commit:

svn ci

Terug in de lokale git-svn repository, haal je de nieuwe bestanden binnen:

git svn rebase

Door gebruik te maken van de subversion tools vermijd je dat de FGAddon repository backend aanzienlijk in omvang toeneemt, aangezien svn copies are cheap.

Bestanden verplaatsen of hernoemen

Let op  Git-svn houdt niet altijd een overzicht bij van het verplaatsen- of hernoemen van bestanden, zoals dat wel het geval is in een Subversion-repository.

Dit probleem komt voort uit het feit dat de svn geschiedenis robuuster is dan die van git. De commando's svn mv en git mv zijn niet gelijkwaardig. Het subversion commando slaat de verplaatsingsgeschiedenis direct op in de betreffende repository, terwijl git dat niet doet (git gebruikt in plaats daarvan heuristische methoden om op een later moment te proberen de geschiedenis te herleiden). Het resultaat van het gebruik van git-svn is dat de verplaatsing vaak niet wordt getoond. De FGAddon geschiedenis geeft daarentegen aan dat een bestand of directory zou zijn verwijderd, terwijl een ander zou zijn toegevoegd. Hierdoor neemt ook de omvang van de database toe. Het svn mv commando leidt daarentegen niet tot een significante toename van de omvang van de repository-backend. Als je een beter historisch overzicht in de FGAddon-repository wil hebben en rekening wil houden met de backend van de repository, dan is het raadzaam om tijdelijk over te schakelen naar de subversion tools. Synchroniseer eerst de repositories:

git svn dcommit

Verplaats of hernoem het bestand vervolgens in de lokale svn-repostory:

svn mv Aircraft/<aircraft>/<file_path1> Aircraft/<aircraft>/<file_path2>

En commit de verandering:

svn ci

Terug in de lokale git-svn repository, haal je de veranderingen binnen met:

git svn rebase

Kopiëren van bestanden binnen één vliegtuig

Net zoals het commando svn mv de bewegingsinformatie direct in de repository opslaat, slaat svn cp de kopieerinformatie op. Dus als je een tekstbestand wilt dupliceren en aanpassen, dan gebruik je de native Subversion-tools in plaats van git-svn voor deze bewerking zodat de bestandsgeschiedenis permanent kan worden bewaard in de FGAddon-repository.

Subversion-eigenschappen

Let op  Git-svn ondersteunt momenteel alleen de svn:executable eigenschap, alle andere eigenschappen worden genegeerd en kunnen niet worden toegevoegd, gewijzigd of verwijderd in een git-svn-kloon van het vliegtuig.

Intern identificeert Subversion binaire bestanden met behulp van de repository eigenschap svn:mime-type. Omdat git-svn deze eigenschap niet kan instellen bij gebruik van het commando git add, is het resultaat dat binaire bestanden als tekst worden behandeld. Binaire diffs zullen getoond worden bij het gebruik van svn diff of git diff, en een binair diff zal getoond worden in de FGAddon commitlog mailinglijst berichten. Aangezien dit issue niet uniek is voor git-svn, kun je het beste ook nog even kijken bij Binaire verschillen .

Andere protocollen dan svn+ssh

Het commando git svn init reproduceert de volledige geschiedenis van een vliegtuig in een lokaal archief. Als onderdeel van dit proces genereert het een git commit ID of hash voor elke Subversion revisie. Het probleem is dat de git commit ID afhankelijk is van het protocol dat gebruikt wordt om te lezen uit de Subversion repository (waarschijnlijk een git bug). Vandaar dat:

git svn init svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/<aircraft>

en

git svn init https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/<aircraft>

zal resulteren in twee verschillende en incompatibele git repositories, ook al bevatten ze dezelfde gegevens. De onverenigbaarheid is niet meteen duidelijk, maar zal op een later moment problemen opleveren. Stel dat iemand met alleen-lezen toegang tot FGAddon de https-methode gebruikt en vervolgens een FGAddon admin vraagt om zijn wijzigingen vast te leggen. De admin gebruikt natuurlijk svn+ssh, aangezien dit het enige protocol is dat met schrijfrechten werkt. Wanneer de admin probeert om de https-bijdrage van de contribuant samen te voegen in de eigen svn+ssh kloon, dan zal git klagen dat de twee repositories geen geschiedenis gemeen hebben, en elke verandering als een conflict markeren.

Dus, als je van plan bent om wijzigingen aan te brengen aan de code van een vliegtuig, zorg er dan voor dat je svn+ssh gebruikt, zelfs als je nog geen commit rechten op FGAddon hebt. Voor svn+ssh zijn geen schrijfrechten vereist, maar alleen een SourceForge-gebruikers-ID.

Ontwikkelconcepten FGAddon

Nieuwe vliegtuigen

Om een nieuw vliegtuig toe te voegen aan de FGAddon repository is het SVN gereedschap nodig. Als je problemen met svn:mime-type rechten ondervindt bij het toevoegen van een nieuw vliegtuig, kijk dan bij mime-type problems sectie voor het oplossen van het probleem.

svn import

Waarschuwing  Het hierin beschreven svn import commando zal alle inhoud van de opgegeven directory direct naar FGAddon sturen zonder waarschuwing en zonder een manier om de bewerking te annuleren. Daarom moet je extra voorzichtig zijn bij het specificeren van de map die je wilt uploaden naar FGAddon, datzelfde geldt voor de doelmap binnen FGAddon. Zie de sectie svn_add=toevoegen hieronder voor een veiligere manier om een nieuw vliegtuig toe te voegen.

De opdracht svn import is de eenvoudigste methode en je hoeft geen lokale kopie van het archief uit te checken. Om te beginnen:

  1. Creëer een lege lokale vliegtuigdirectory.
  2. Kopieer de vliegtuigbestanden naar deze directory.
  3. Controleer zorgvuldig alle bestanden om er zeker van te zijn dat er geen verborgen of tijdelijke bestanden zijn die niet naar FGAddon geüpload moeten worden.

Aangenomen dat het Dead Simple Human Powered Airplane (DaSH PA of "DaSH") vliegtuig als voorbeeld kan dienen, dat zich in de map DaSH/ bevindt, geef dan op de commandoregel de opdracht:

svn import DaSH/ svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/DaSH/ -m \
    "Initial import of the DaSH human powered aircraft.\n\nFor details see the forum thread at http://forum.flightgear.org/viewtopic.php?f=4&t=24495 ."

Hierin is <usernaam> jouw SourceForge gebruikersnaam. Dit zal alle bestanden toevoegen aan FGAddon met een commit log bericht met de overzichtsregel Initial import of the DaSH human powered aircraft., gevolgd door een blanco regel en vervolgens een gedetailleerde beschrijving die verwijst naar de oorspronkelijke locatie of bespreking van het vliegtuig. Om te zien of het vliegtuig met succes is toegevoegd aan de repository, typ je:

svn list svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/DaSH/

Of bezoek de FGAddon web interface. Het vliegtuig kan dan worden uitgecheckt zoals beschreven in de Ontwikkelscenario's.

svn add (=toevoegen)

Als er een lokale kopie van de FGAddon-hoofdmap aanwezig is, dan kan het commando svn add in plaats daarvan worden gebruikt. Dit is veel veiliger dan het svn import commando, omdat de wijziging voor het vastleggen dubbel gecontroleerd kan worden. Maak in de map Aircraft/ van het lokale archief de map DaSH/ aan. Deze kan leeg zijn, maar kan ook alle bestanden van het initiële vliegtuig bevatten. Voeg vervolgens op de commandoregel het vliegtuig toe aan de lokale repository:

svn add DaSH/

Controleer dan eerst goed de wijzigingen voordat je e.e.a. vastlegt:

svn st

En stuur de wijzigingen naar FGAddon d.m.v.:

svn ci

Een editor, vaak vi[9], zal openen en de commit boodschap kan worden opgesteld. Als alternatief kan het logboekbericht worden gegeven op de opdrachtregel m.b.v.:

svn ci -m "<subject_line>\n\n<detailed_description>".

blokkeren van vastlegging door pre-commit hooks

Soms wordt bij het committen naar FGAddon de vastlegging geblokkeerd en wordt het volgende geprint:

svn: E165001: Commit mislukt (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:

Dit is te wijten aan de aanwezigheid van twee repository pre-commit hook scripts die de kwaliteit van de vastlegging controleren, het blokkeren als een tekstbestand is ingesteld op een binair mime-type bestand of als de executable flag is ingesteld. Deze scripts dienen eenvoudig om de repository te beschermen en vervuiling te voorkomen.

Mime-type problemen

Soms wordt, bij een poging om bestanden vast te leggen in FGAddon met behulp van het SVN gereedschap, de vastlegging geblokkeerd met het volgende bericht:

Sending        dash-set.xml
svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:

Aborting the commit, the svn:mime-type property is labelling the following text
files as binary:

  dash-set.xml:  svn:mime-type=application/xml

Before committing, please remove this property by typing 'svn propdel svn:mime-
type file_name' for all affected files.  This will allow the text files to be
treated as text within the FGAddon repository.

To avoid the svn:mime-type property being incorrectly set by your subversion
client, the subversion configuration file at $HOME/.subversion/config or
%appdata%\roaming\subversion\config should be edited and a new entry added to
[auto-props] for each affected file type.  In most cases, the problem is with
XML files being labelled as "application/xml" by a library called libmagic.  To
override this, add the following to the svn config file:

*.xml = svn:mime-type=text/xml

svn: E165001: Your commit message was left in a temporary file:
svn: E165001:    '/flightgear/repo_testing/svn-commit.tmp'

Ondanks berichten over het toevoegen of verzenden van bestanden, zal er geen verandering hebben plaatsgevonden in de FGAddon repository. Dit bericht wordt aangemaakt door een repository pre-commit hook script dat controleert of de Subversion eigenschap svn:mime-type voorkomt op een lijst van bekende tekstbestanden en, als het mime-type is ingesteld op een binair formaat, wordt de vastlegging geblokkeerd. De reden voor deze blokkade is het beschermen van de repository. Nieuwere SVN clients vertrouwen op een 3rd party library bekend als libmagic die de vliegtuig XML bestanden zal detecteren als het binaire mime-type van -application/xml. Het resultaat hiervan is dat de XML-bestanden worden behandeld als binaire bestanden in het archief. Dit gedrag is absoluut onwenselijk, omdat veranderingen hierdoor niet kunnen worden gevolgd op de flightgear-fgaddon-commitlogs mailinglijst of in de repository geschiedenis. Ook zal de grootte van de commits hierdoor vele malen groter worden. Om dit probleem te voorkomen is deze werkwijze geblokkeerd om het FlightGear project te beschermen. Als oplossing probleem, volg je de instructies in het bericht en typ je het met behulp van de opdrachtregeltools:

svn propdel svn:mime-type <file_name>

Herhaal dit voor elk tekstbestand in de foutmelding. Maak dan opnieuw een commit met behulp van het bericht dat opgeslagen is in het svn-commit.tmp bestand. De bestandsnaam van het bericht wordt gerapporteerd in het logbericht over de foutmelding, maar controleer eerst de inhoud:

cat svn-commit.tmp

En voer de commit nogmaals uit:

svn ci -F svn-commit.tmp
Subversion config file

De automatische instelling van svn:mime-type kan worden geregeld door het bestand Subversion config aan te passen. Controleer eerst in de sectie [miscellany] of de auto-eigenschappen zijn ingeschakeld:

enable-auto-props = yes

Voeg dan in het gedeelte [auto-props] toe:

*.ac = svn:mime-type=text/plain
*.eff = svn:mime-type=text/xml
*.frag = svn:mime-type=text/plain
*.nas = svn:mime-type=text/plain
*.osgx = svn:mime-type=text/xml
*.svg = svn:mime-type=text/svg+xml
*.txt = svn:mime-type=text/plain
*.vert = svn:mime-type=text/plain
*.xhtml = svn:mime-type=text/xml
*.xml = svn:mime-type=text/xml
*.xsl = svn:mime-type=text/xml

Dit zijn alle tekstbestanden waarvan het hook script zal controleren of het mime-type is ingesteld op een tekstformaat, hoewel er in de toekomst waarschijnlijk nieuwe tekstbestanden zullen worden toegevoegd. Deze aanvullingen kunnen zowel aan het gebruiker-configuratiebestand in ~/.subversion/config (of %USERPROFILE%\AppData\Roaming\Subversion\config in Windows) worden toegevoegd of, als er geen gebruiker-configuratiebestand bestaat, aan het algemene configuratiebestand op /etc/subversion/config (of %APPDATA%\Subversion\config in Windows) worden toegevoegd.

Executable flag

Een ander blokkeringsbericht bij het vastleggen van bestanden aan FGAddon met behulp van het SVN gereedschap is:

Adding         dash-set.xml
Transmitting file data .svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:

The svn:executable property is set on the files ['dash-set.xml'], aborting the
commit.

The current policy is that no executable files are allowed in FGAddon.  Before
committing, please remove this property by typing 'svn propdel svn:executable
file_name' for all affected files.  Or to remove it recursively from all files
to be committed, in your aircraft directory type 'svn propdel svn:executable
-R'.

To avoid the svn:executable property being set by your subversion client, on
GNU/Linux and Mac OS X systems simply make sure that the file's execute bit is
not set before adding the file to be committed.

svn: E165001: Your commit message was left in a temporary file:
svn: E165001:    '/flightgear/repo_testing/svn-commit.tmp'

Dit zal waarschijnlijk alleen te zien zijn op Mac OS X en GNU/Linux-systemen. Dit bericht wordt afgedrukt met behulp van een script dat controleert of de Subversion eigenschap svn:executable is ingesteld en, als dit het geval is, wordt de vastlegging geblokkeerd. Dit is een veiligheidsmaatregel omdat vliegtuigbestanden niet uitvoerbaar mogen zijn. Om het probleem op te lossen, volg je de instructies in het bericht en typ je op de command line:

svn propdel svn:executable -R

Maak dan opnieuw een vastlegging met behulp van het bericht dat opgeslagen is in het svn-commit.tmp bestand. De bestandsnaam van het bericht wordt opgenomen in de foutmelding voor het vastleggen, maar controleer eerst de inhoud:

kat svn-commit.tmp

Herhaal vervolgens de vastlegging:

svn ci -F svn-commit.tmp

Binaire verschillen

Waarschuwing  De verkeerde instelling of het ontbreken van de eigenschap van het mime-type van een binair bestand zal resulteren in een binair verschil.

Als je kijkt naar de output van svn diff (of git diff als je git-svn gebruikt) of als je berichten leest van de FGAddon commitlog mailinglijst, kan het zijn dat je een groot aantal onherkenbare tekens ziet. Dit is het resultaat van wat bekend staat als een binary diff, die de binaire bestandsverschillen toont alsof het om tekst gaat. Hoewel dit geen probleem is voor het gebruik van de repository, is wel sprake van een esthetisch probleem, dat het moeilijker maakt om de wijzigingen te evalueren.

Om het probleem op te lossen moeten eerst de binaire bestanden met waarvan de eigenschap svn:mime-type ontbreekt, worden geïdentificeerd. Het volgende subversion commando kan hiertoe worden gebruikt:

svn propget svn:mime-type <file_name>

Omdat het een hele klus kan zijn om elk bestand afzonderlijk te controleren, vereenvoudigt en automatiseert het volgende Python-script het proces om alle binaire bestanden te herkennen met een probleem van het mime-type:

het oplossen van het probleem

Aangezien Subversion-eigenschappen het svn:mime-type niet kunnen veranderen, is een svn checkout copy van het vliegtuig noodzakelijk. De eigenschap kan dan worden ingesteld op het standaard Subversion binary mime-type met:

svn propset svn:mime-type "application/octet-stream" <file_name>.

Als alternatief kunnen de volgende shellcommando's worden gebruikt om het proces te automatiseren:

SourceForge-ontwikkel services

Het FlightGear-project wordt gehost op de open-source-infrastructuur van SourceForge. Deze ontwikkeldienstenparagraaf zal een aantal van de nuttige tools belichten waarvan je kunt profiteren. SourceForge kent twee categorieën van diensten:

Project-infrastructuur
Het FlightGear project maakt gebruik van de projectdiensten van SourceForge. Deze diensten zijn bedoeld voor stand-alone software projecten.
Ontwikkelaars-infrastructuur
Dit zijn diensten die beschikbaar zijn voor iedereen met een SourceForge account, zij zijn beschikbaar via de SourceForge homepage en toegankelijk voor iedereen. Dit omvat de mogelijkheid om meerdere versie controle repositories (svn, git, hg), wiki's, forums, ontwikkelteams, blogs, en ticket trackers (voor bugs, supportvragen, taken, enz.) te creëren.

In plaats van steeds een nieuw project te creëren, zou iedere ontwikkeling voor het FlightGear-project gebaseerd moeten zijn op de ontwikkelaars-infrastructuur.

ontwikkelaar git repository

Om je eigen remote git repository in te richten, hier t.b.v. het ontwikkelen van het FGAddon fkdr1 vliegtuig, doe je het volgende:

  • Op jouw profielpagina op https://sourceforge.net/u/<username>/profile/, ga je naar Admin -> Add New -> >Git.
  • Label instellen op fkdr1 FGAddon git-svn repository.
  • Stel het pad voor de code in op code-fkdr1. De code-* prefix is om dit te onderscheiden van de forum-*, wiki-* en andere directories.

De repository zal zich bevinden op https://sourceforge.net/u/<username>/code-fkdr1/ci/master/tree/.

Ontwikkelteams

Als jij en een groep vrienden als team een van de FGAddon-vliegtuigen zouden willen ontwikkelen, ervan uitgaande dat je contact hebt opgenomen met de oorspronkelijke vliegtuigontwikkelaars en het vliegtuig niet actief wordt doorontwikkeld, dan moet je eerst een SourceForge-ontwikkelteam opzetten. Er moet een teamleider worden aangesteld om dit op te zetten onder het eigen SourceForge-account. Ervan uitgaande dat jullie het "ornithopter"-vliegtuig willen ontwikkelen zijn de volgende stappen nodig:

  • Ga naar Personal tools -> Admin.
  • Klik op User Permissions.
  • Klik aan de onderkant op Add a new group.
  • Stel de naam in op ornithopter en sla op.
  • Klik op Add in de groep ornithopter en voeg de namen van de SourceForge leden van jullie team toe.

Na het instellen van een private repository in het account van de teamleider, zoals hieronder beschreven, moet het ontwikkelteam worden ingesteld voor de repository.

  • Ga naar de repository in jouw SourceForge-account.
  • Klik op Admin - <repository name>, selecteer dan Permissions.
  • In het gedeelte Write, verwijder je Developer en voeg je ornithopter toe.
  • Klik op Save.

De leden van het ontwikkelteam krijgen daarmee toegang tot de private repository.

Teamcommunicatie

Om te helpen met de teamontwikkeling, maakt de SourceForge infrastructuur het mogelijk om meerdere dedicated discussion forums te creëren. Dit kan zowel binnen een SourceForge-project zijn als op de homepage van een SourceForge gebruiker. Dit stelt de teamleider in staat om een forum te creëren dat uitsluitend gewijd is aan de ontwikkeling van het betreffende vliegtuig. Voortbordurend op het voorbeeld van de ornithopter zijn de volgende stappen door de teamleider nog nodig:

  • Op jouw profielpagina https://sourceforge.net/u/<username>/profile/, ga je naar Personal tools -> Admin.
  • Klik in het linkermenu op de optie Tools.
  • Klik op Discussion in de sectie Click to install.
  • Verander bijvoorbeeld het label in Ornithopter forum en het pad naar forum-ornithopter. De forum-* prefix is om dit te onderscheiden van de code-*, wiki-* en andere directory's.
  • Klik op Save.

Meer details zijn te vinden op SourceForge Discussion documentation.

Ontwikkelscenario's

Afzonderlijke ontwikkelaar

Note  Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de standaard Subversion tools.

Dit is verreweg het eenvoudigste ontwikkelscenario en zou in de meeste gevallen gebruikt moeten worden. Als je gebruik maakt van de command line Subversion client, kun je een individueel vliegtuig uitchecken met:

svn co svn+ssh://&lt;username&gt;@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/wrightFlyer1903

Hierbij is <username> jouw SourceForge gebruikersnaam. Als alternatief kun je ook alle vliegtuigen uitchecken met:

svn co svn+ssh://&lt;username&gt;@svn.code.sf.net/p/flightgear/fgaddon/trunk flightgear-fgaddon

Als je geen commit-toegang hebt, typ je één van de volgende commando's:

svn co https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/wrightFlyer1903
svn co https://svn.code.sf.net/p/flightgear/fgaddon/trunk flightgear-fgaddon

Om de nieuwe lokale svn-repostory te kunnen gebruiken, zie Subversion gebruiksaanwijzingen.

Afzonderlijke ontwikkelaar (git-svn)

Note  Ontwikkelscenario: Je bent een individuele ontwikkelaar en gebruikt de git-svn tools.

Dit is gecompliceerder dan het gebruik van het native SVN gereedschap, maar kan nuttig zijn zonder FGAddon toegang, omdat er meerdere lokale commits kunnen worden verzonden naar de oorspronkelijke auteurs van het vliegtuig of naar de development mailinglijst/forum. Om het vliegtuig van jouw keuze te klonen in een nieuwe git repository, typ je:

git svn clone svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/<aircraft>

Hier is <username> jouw gebruikersnaam en aircraft> is de mapnaam in het FGAddon archief. Dit is geldig ongeacht of je al dan niet commit-machtigingen hebt.

Om de nieuwe lokale git-repository te gebruiken, zie git-svn instructions en Tekortkomingen van git-svn.

Uploaden naar Sourceforge

Om de lokale ontwikkelingen te delen, kunnen de wijzigingen worden geüpload naar een remote git repository op de SourceForge infrastructuur. Hiervoor moet eerst een developer git repository worden ingesteld onder jouw SourceForge profiel. Voeg deze dan als volgt toe:

git remote add origin ssh://<username>@git.code.sf.net/u/<username>/code-<aircraft>/
lang = "sh".

En stuur de master branch waar ontwikkelingen mee te maken hebben:

git push --set-upstream origin master

De veranderingen in de nieuwe repository zullen zichtbaar worden via de web interface op https://sourceforge.net/u/<username>/code-<aircraft>/ci/master/tree/.

Externe git-repository veranderingen verzenden naar FGAddon

Note  Ontwikkelingsscenario: Jij bent een individuele ontwikkelaar met FGAddon commit toegang en je wilt de commits in een remote git repository overzetten naar FGAddon met behulp van een tijdelijke, lokale git repository.

Kloon eerst het FGAddon vliegtuig in een lokale git-svn repository d.m.v.:

git svn clone svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/<aircraft>

Hierdoor ontstaat een nieuwe lokale git repository gekoppeld aan FGAddon via git-svn. Als het vliegtuig nieuw is en niet aanwezig in FGAddon, kijk dan bij instructies voor het toevoegen van nieuwe vliegtuigen aan FGAddon. Stel vervolgens de remote git repository in als remote, en haal de gegevens op met:

git remote add <name> <url>
git fetch

<url> is hierbij de URL is van het remote git archief. Maak ten slotte een geordende lijst van alle hashes van de commits die allemaal naar FGAddon gestuurd moeten worden, en cherry-pick ze in de git-svn hoofdtak:

git cherry-pick <commit hash 1>
git cherry-pick <commit hash 2>
git cherry-pick <commit hash 3>
...

Merk op dat het lokale git-svn archief slechts één master tak mag hebben en alleen betrekking heeft op cherry-picking. Om de wijzigingen te zien die in de wachtrij staan voor verzending naar FGAddon:

git log git-svn..HEAD
git diff git-svn..HEAD

Om de wijzigingen vervolgens naar FGAddon te sturen, "pull" de wijzigingen en verzendt de commits:

git svn rebase
git svn dcommit

Het tijdelijke lokale archief kan vervolgens worden verwijderd.

Een bestaande git-repository verbinden met FGAddon

Note  Ontwikkelscenario: Je bent een individuele ontwikkelaar of teamleider met FGAddon commit toegang en je wilt een reeds bestaande remote git repository verbinden met FGAddon om alle wijzigingen terug te sturen naar FGAddon.

Als er al een remote git repository bestaat met een ontwikkeld vliegtuig, is het mogelijk om deze te koppelen aan de remote FGAddon repository met behulp van de git-svn tools.

Het volgende voorbeeld maakt gebruik van de Gespecialiseerde FGAddon tak. Om te beginnen maak je de koppeling naar FGAddon met behulp van git-svn in de vliegtuigspecifieke repository:

git svn init svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/<aircraft>

Hierin is <aircraft> de naam van de vliegtuigdirectory in FGAddon. Merk op dat deze stap kan worden uitgevoerd zonder commit-toegang tot FGAddon door gebruik van een alleen-lezen SVN URL, maar dat wijzigingen vervolgens niet kunnen worden gerealiseerd in FGAddon dcommitting, zoals het in de git-svn terminologie wordt genoemd). Hierdoor kunnen upstream FGAddon-wijzigingen worden geïntegreerd in de remote git-repository, waardoor het eenvoudig wordt om wijzigingen voor te bereiden voor invoeging in FGAddon, met behulp van patches die naar de mailinglijst worden verzonden of die via andere kanalen worden verzonden.

Haal nu de huidige status op uit de externe FGAddon-repository:

git svn fetch

De gedownloade SVN-geschiedenis kun je vinden in remotes/git-svn. Om wijzigingen vast te leggen in SVN heb je een lokale tak nodig die je in staat stelt deze externe tak te volgen. Creëer een lokale fgaddon tak die je zult gebruiken om updates naar FGAddon te zenden:

git branch fgaddon remots/git-svn

Na het vastleggen van de nieuwe gegevens in de master tak en om te kunnen uploaden naar FGAddon, checkout de fgaddon tak en update via SVN in het geval iemand anders het vliegtuig heeft bewerkt in de externe FGAddon repository:

git checkout fgaddon
git svn rebase

Cherry-pick de nieuwe commits van master naar fgaddon om een lineaire geschiedenis te realiseren:

git cherry-pick <commit hash 1>
git cherry-pick <commit hash 2>
git cherry-pick <commit hash 3>
...

Om de wijzigingen te kunnen zien die in de wachtrij staan voor verzending naar FGAddon als vastlegging of als diff, typ je:

git log git-svn..HEAD
git diff git-svn..HEAD

Als alles in orde lijkt, dcommit de lokale commits op de fgaddon tak om deze aansluitend te verzenden naar de externe FGAddon SVN repository:

git svn dcommit

Schakel terug naar de master branch voor lokale ontwikkeling:

git checkout master

Om veranderingen van upstream te krijgen kunt je ze zowel gewoon downloaden met

git svn fetch

of download ze en herbouw gelijktijdig jouw fgaddon tak :

git checkout fgaddon
git svn rebase

Teamontwikkeling

Note  Ontwikkelscenario: Alle leden van het team treden op als poortwachter en alle commits worden rechtstreeks vastgelegd in FGAddon, hetzij met behulp van svn of met git-svn.

De eenvoudigste manier om als team te werken is die waarbij elke ontwikkelaar ofwel een svn kopie van FGAddon heeft ofwel een git-svn kopie van FGAddon en iedereen wijzigingen direct vastlegt in FGAddon. Communicatie en coördinatie tussen de teamleden kan worden geregeld met behulp van een door de teamleider ingesteld SourceForge forum of met behulp van het FlightGear forum. In dit scenario moet het team het initiatief nemen en vraagt iedereen toegang tot FGAddon.

Private teamontwikkeling (git-svn)

Note  Ontwikkelscenario: Een teamleider treedt op als poortwachter op een private git repository, gehost op de interne SourceForge infrastructuur, met gebruikmaking van git-svn om een fgaddon branch naar FGAddon te pushen, waarbij teamleden direct wijzigingen vastleggen in de private git repository of samenvoegverzoeken doen vanaf hun "vork" van de private repository.

Om alles in eigen huis te houden, zal de hele operatie gebaseerd zijn op de officiële infrastructuur en remote repositories onder het SourceForge (SF) profiel van elke gebruiker. Opmerking aan de teamleider - je moet keep your git-svn history lineair (wat betekent dat er een Gespecialiseerde FGAddon tak aangemaakt moet worden en dat wijzigingen manueel <<cherry-pick>> moeten worden verwerkt in deze branch). Hieronder wordt het ornithopter vliegtuig als voorbeeld gebruikt.

Het team

Om te beginnen moet het hele team zich aanmelden voor SourceForge accounts.

Teamleider

Inrichting van een privé-repository

Deze stappen moeten worden genomen door de teamleider. Stel in jouw SourceForge gebruikersprofiel een ontwikkelaar git repository in met het label Ornithopter FGAddon git-svn repository en het codepad code-ornithopter. Maak dan een lege lokale git repository:

$ mkdir ornithopter
$ cd ornithopter
$ git init

Koppel het lege archief aan de ornithopter vliegtuigdirectory in het externe FGAddon archief en download de gegevens met:

$ git svn init svn+ssh://<username>@svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/ornithopter
$ git svn fetch

Vervang <<username> door jouw SF-gebruikersnaam. Zet een speciale git-svn branch op voor de koppeling met FGAddon en voor dcommitting van wijzigingen naar FGAddon:

$ git branch fgaddon remotes/git-svn
$ git checkout fgaddon

En download de ornithopter vanuit FGAddon:

$ git svn rebase

Om de huidige instelling van de lokale git-svn repository te zien, typ je:

$ git branch -vva
$ git remote -v
$ git svn info

Ga dan terug naar de hoofdtak:

$ git checkout master

Tot slot stel je de externe git repository in als remote:

$ git remote add origin ssh://<username>@git.code.sf.net/u/<username>/code-ornithopter/

En stuur de master branch naar de externe git repository:

$ git push -u origin master

Om de nieuwe opzet te zien, typ je:

$ git branch -vva
$ git remote -v

De repository zal zich bevinden op https://sourceforge.net/u/<username>/code-ornithopter/ci/master/tree/ Merk op dat de git-svn informatie die is opgeslagen in de .git/svn directory niet geűpload zal worden naar de remote SoureForge repository en daarom zal de link naar FGAddon alleen aanwezig zijn in de lokale kopie van de teamleider. De git-svn-verbinding kan, indien nodig, op een later tijdstip worden ingesteld.

Teamopstelling

Oprichting van een speciaal Ontwikkelteam met toegang tot de git-svn repository.

Uploaden naar FGAddon

Wijzigingen vastleggen in FGAddon wordt gedaan vanuit de lokale git repository van de teamleider. De geschiedenis moet lineair zijn in de tak van de fgaddon, dus cherry-picking is de juiste weg. Dit wat betreft de Afzonderlijke ontwikkelaar (git-svn) sectie. In de lokale git repository, schakel je over naar de fgaddon tak:

git checkout fgaddon

Download de wijzigingen die in FGAddon hebben plaatsgevonden:

git svn rebase

Om de wijzigingen te zien in de master tak die niet in de fgaddon tak zitten, typ je één van de volgende regels:

git log HEAD..master
git log HEAD..master --pretty=oneline

Selecteer handmatig de commits die naar FGAddon moet worden gestuurd en selecteer deze d.m.v. cherry-pick:

git cherry-pick <commit hash 1>
git cherry-pick <commit hash 2>
git cherry-pick <commit hash 3>
...

Je kunt ook d.m.v. cherry-pick een reeks commits kiezen:

git cherry-pick <commit hash 1>^..<commit hash 8>

Controleer dan wat er verstuurd gaat worden:

git log git-svn..HEAD
git diff git-svn..HEAD

Stuur de wijzigingen naar FGAddon, stuur de git fgaddon branch wijzigingen naar de externe git repository en schakel terug naar de master branch:

git svn dcommit
git push
git checkout master

Voeg tenslotte de wijzigingen samen in de git svn met hun nieuwe hashes van de fgaddon tak en stuur alles naar de remote git repository:

git merge fgaddon
git push

Teamleden

Werken met de repository

Elk teamlid zou een kloon van de private git repository moeten maken:

$ git clone ssh://<username>@git.code.sf.net/u/<username_leader>/code-ornithopter/ ornithopter

Vervang <username> door jouw SourceForge gebruikersnaam en <username_leader> is de SourceForge gebruikersnaam van de teamleider.

Verzoeken om afsplistingen en samenvoegingen

Als alternatief kan elk teamlid een afsplitsing maken van de git repository onder het SourceForge-account: Ga naar {{#tag:span|{#tag:tt|https://sourceforge.net/u/<username>/code-ornithopter/ci/meester/tree/}, waarbij <username> de SourceForge gebruikersnaam is van de teamleider.

  • Click on Fork.
  • Stel het pad in naar code-ornithopter en wijzig het label naar wens.

Ontwikkel en upload naar jouw afsplitsing, verzoek dan om de commits samen te voegen door te klikken op de Request Merge knop.

References

  1. David Murr (Apr 9, 1996). FlightGear proposal 1.0: "A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@". Published on the rec.aviation.simulators newsgroup.
  2. David Murr (1996). FlightGear proposal 2.0: FLIGHT GEAR "This truly is as real as it gets!" - a proposal for a new flight simulator - REVISION 2.0.
  3. David Murr (Oct 29, 1996). FlightGear proposal 3.0: FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0 - Wednesday, 10.30.96, "The future of flight simulation is here". Published on the flight-gear@infoplane.com mailing list.
  4. David Murr (Sep 11, 1998). FlightGear proposal 3.0.1: FLIGHT GEAR FLIGHT SIMULATOR, revision 3.0.1 - Friday, Sep.11.98, "The future of flight simulation is here".
  5. Curtis Olson (Sep 28, 2015). Re: A PROPOSAL FOR A NEW FLIGHT SIMULATOR - home built!@. Published on the FlightGear forum.
  6. James Turner (May 20, 2010). [Flightgear-devel] Re: Flightgear git repositories (was Re: GIT or CVS - Confusion) Published on the flightgear-devel mailing list.
  7. Cedric Sodhi (Oct 18, 2011) [Flightgear-devel] FGData Split Completed - a.k.a Life after the Split Published on the flightgear-devel mailing list.
  8. FlightGear Policy Document and Roadmap, draft document.
  9. Vim documentatie