Wat is er nieuw met Git-ondersteuning in Xcode 9

Wat je gaat creëren

De nieuwste IDE-versie van Apple, Xcode 9, wordt in september uitgebracht samen met iOS 11. En het is een enorme update! Fans van Git voor source control management (SCM) zijn grote winnaars in deze aankomende release.

Eerdere versies van Xcode hadden ondersteuning voor SCM, maar het werd nooit als een eersteklas burger beschouwd. De Git-ondersteuning van Xcode was buggy en glansloos, blonk in vergelijking met gespecialiseerde tools zoals SourceTree, wat betekende dat ontwikkelaars tussen tools moesten springen om geavanceerde Git repository managementtaken te kunnen doen. 

Dit is allemaal veranderd in Xcode 9. Apple ziet SCM niet langer als secundair, maar heeft in plaats daarvan gekozen voor nauwe integratie met GitHub en heeft nauw samengewerkt met GitHub voor Xcode 9. 

Het nettoresultaat is dat je nu vanuit Xcode kunt inloggen op je GitHub-account, om door je GitHub-repos te bladeren, te navigeren en te klonen. U kunt ook naar andere opslagplaatsen zoeken zonder naar een browservenster over te schakelen. Omgekeerd, als u een GitHub-repo in uw browser geopend heeft, kunt u op de kloonknop klikken en Xcode automatisch het project laten klonen en openen. 

Zoals Apple het zegt, "Ondersteuning voor Git staat nu voorop", en Apple heeft een nieuwe broncontrolenavigator geïntroduceerd, zodat je geen nieuw venster hoeft te openen dat visueel is losgemaakt van de rest van Xcode. Ontwikkelaars kunnen nu takken, tags en afstandsbedieningen bekijken via een duidelijke en intuïtieve tijdlijn, ze kunnen commits gedetailleerder bekijken en een elegantere en aantrekkelijkere vergelijking van wijzigingen zien. 

Doel van deze zelfstudie

In deze zelfstudie zal ik u door de lijst met nieuwe SCM-functies leiden die zijn geïntroduceerd met Xcode 9. We zullen kijken naar drie belangrijke gebieden:

  • begaat
  • takken
  • labels

Aangenomen kennis

Als u deze zelfstudie wilt volgen, moet u wat ervaring hebben met Xcode en enige praktische kennis hebben van bronbeheer via Git. 

Aan de slag met Xcode 9 SCM

Uw omgeving instellen

Om gebruik te maken van de nieuwe SCM-functies van Xcode, moet u: 

  • Download Xcode 9.
  • Heb een gratis of betaald GitHub-account.

Zodra je de nieuwste Xcode-build hebt gedownload en geïnstalleerd en een actueel GitHub-account hebt, ben je klaar om je GitHub-account aan Xcode 9 te koppelen. Start Xcode en ga naar voorkeuren > accounts. Selecteer vervolgens de + knop linksonder om een ​​nieuw account toe te voegen. 

kiezen GitHub in het modale venster en voer je GitHub-inloggegevens in. Als u twee-factorenauthenticatie gebruikt, vraagt ​​Xcode u om uw code in te voeren. 

Bladeren en zoeken in GitHub-verzamelplaatsen

Laten we eens kijken hoe naadloos je kunt bladeren in bestaande openbare GitHub-opslagplaatsen, rechtstreeks vanuit Xcode. Open het welkomstscherm van Xcode als het nog niet wordt weergegeven door naar Venster > Welkom bij Xcode

Selecteer vervolgens Een bestaand project klonen, die de lijst met repositories op GitHub zal openen die je momenteel bezit, waaraan je werkt of waarvan je een ster hebt. 

Naast de lijst die het heeft gepresenteerd, kun je ook op naam zoeken naar een publieke repo (of privé repo waar je toegang toe hebt) of door zijn GitHub-URL in te voeren. Typ voor onze zelfstudie RealmDo en klik Clone, en selecteer vervolgens een lokale map om het project te klonen. 

Vervolgens wordt u om een ​​map gevraagd om het project te bekijken in:

In plaats van de projectrepô uit Xcode te halen, is een andere handige functie dat je een GitHub-repo in je browser kunt openen en selecteren Kloon of download en je ziet een nieuwe knop met het label Openen in Xcode

Dat klopt: als u erop klikt, wordt het project automatisch geopend in Xcode, om te worden gekloond en gedownload. 

Terug naar ons project. Omdat we CocoaPods gebruiken om afhankelijkheden te beheren, moeten we teruggaan naar de opdrachtterminal en uitvoeren pod installeren:

19:06 $ pod-installatie Afhankelijkheden analyseren Afhankelijkheden downloaden Realm (2.7.0) gebruiken RealmSwift gebruiken (2.7.0) Pods-project genereren Klantproject integreren Stats verzenden Podinstallatie voltooid! Er is 1 afhankelijkheid van de Podfile en 2 totale pods geïnstalleerd.

Ons project zou nu lokaal moeten worden opgezet, en jouw .xcworkspace moet open zijn in Xcode met alle bestanden in uw project. 

Xcode SCM-voorkeuren

Door naar de voorkeuren van Xcode te navigeren en vervolgens te selecteren Bron controle, je kunt verschillende aspecten van zijn gedrag veranderen vanuit het voorkeurenpaneel, inclusief de naam en e-mail van de Git-auteur, en interessant genoeg, zelfs je eigen .gitignore instellingen ook. 

Een nieuw project koppelen aan GitHub

Als u daarentegen een nieuw Xcode-project hebt gemaakt en het project nog niet op GitHub hebt gemaakt, kunt u rechtstreeks vanuit Xcode een nieuw GitHub-project maken. Klik met de rechtermuisknop op Remotes en selecteer vervolgens Maak "RealmDo" Remote op GitHub

Xcode vraagt ​​u vervolgens om de repository een naam te geven en een account te selecteren om mee geassocieerd te worden.

De nieuwe SCM-interface verkennen

Laten we elk gedeelte van de nieuwe interface verkennen. 


  1. Het linkerpaneel heeft uw vertrouwde lijst met pictogrammen om toegang te krijgen tot de eigenschappen van het project. Het tweede tabblad is gloednieuw: het is de Source Control Navigator.
  2. De Vastleggingsgeschiedenis paneel is het meest prominente deel van de navigator en toont u een historische lijst met commits voor het project en de vertakking.
  3. Het rechterdeelvenster biedt u extra contextuele informatie over het filiaal en geselecteerde commits.
  4. Naast de contextuele vertakking en commit-informatie laat deze subsectie aan de rechterkant zien welke bestanden deel uitmaken van de geselecteerde commit.
  5. Het linkerdeelvenster geeft u een hiërarchisch overzicht van uw project vanuit een SCM-perspectief en toont u de huidige vertakking, eventuele andere vertakkingen, lokaal of op afstand, en tags. Het geeft ook aan of er nieuwe commits moeten worden geduwd of getrokken, zoals je later zult zien.

De bronregel Navigator

Een van de eerste dingen die we in Xcode 9 zullen verkennen, is de Source Control Navigator, nieuw voor Xcode 9. Niet langer is de bronweergave een tweederangs burger - hij is nu volledig ingebakken in Xcode. Selecteer het tweede pictogram in het linkerdeel zoals aangegeven door (1) in de bovenstaande schermafbeelding om de bronregelnavigator te openen. 

Vastleggingsgeschiedenis

Laten we een blik werpen op het perspectief van de Commit History, die de lijst met commits voor het project toont, inclusief de naam van de commit-auteur, datum, beschrijving en de avatar van de auteur van GitHub, die de projectgeschiedenis vormt.. 

Dit is een heel duidelijk en mooi georganiseerd perspectief. Hoewel dit voorbeeldproject wat betreft de geschiedenis vrij beperkt is (hoewel we dat binnenkort zullen veranderen), is dit venster bedrieglijk krachtig. 

Behalve dat je gemakkelijk kunt scrollen en bruikbare historische informatie kunt krijgen, kun je ook intuïtief filteren en zoeken op revisie, bericht of auteur. U kunt zelfs meerdere filters aaneenschakelen of hieraan deelnemen, om niet alleen door de auteur te zoeken, maar ook door te revisie. U kunt ook zoeken met behulp van de Scope-balk, op specifieke datumperioden, zoals de Laatste 24 uurLaatste 7 dagen, of Laatste 30 dagen.

Door een specifieke commit te selecteren, wordt extra informatie weergegeven in het rechterdeelvenster. Naast de filiaalinformatie krijgt u commit-informatie, de volledige SHA, auteur, bericht en datum. Je ziet ook de lijst met bestanden gemaakt tijdens die commit, wat uitermate handig is om je te helpen de commit te identificeren die een probleem veroorzaakte tijdens het debuggen. 

Dubbelklikken op een commit roept een lijst op van de bestanden die zijn gewijzigd in die commit in het linkerdeelvenster, en een versievergelijking wordt weergegeven in het midden. Dit is het vertrouwde diff-perspectief, maar deze keer veel beter. 

Als u de assistent-editor in de rechterbovenhoek selecteert, krijgt u toegang tot een echt fantastisch diff-overzicht, waardoor u niet alleen een diff van het bestand kunt bekijken, maar ook gemakkelijk door eerdere commits kunt bladeren en zowel de commit-informatie als de daadwerkelijke commits kunt bekijken. bestandswijzigingen. 

Door met de rechtermuisknop op een commit te klikken, kunt u ook een menu zien waarmee u contact kunt opnemen met de auteur, de commit-informatie kunt kopiëren, een vertakking kunt maken van die commit of zelfs de commit kunt openen op GitHub in de browser.. 

Je kunt ook een tag maken, wat we gaan doen. Selecteer de Label knop op de eerste commit, en noem deze vrijgave / 0,1

Het benoemen van uw tags in dit formaat, door het instellen van een bovenliggende groep (release, bèta, enz.), Heeft een interessant doel, dat we binnenkort zullen ontdekken. Omdat we een commit hebben getagd, gaan we voorlopig over op ons volgende onderwerp: branching. 

vertakking

We zijn momenteel bezig met de ontwikkeling van de mastertak, maar tijdens de normale ontwikkelingsworkflow werken we meestal op een aparte afdeling. We zouden een filiaal maken om een ​​functie te ontwikkelen en te testen en deze vervolgens samenvoegen met de hoofdtak als deze goed werkt. Laten we een nieuw filiaal maken door met de rechtermuisknop te klikken meester en selecteren Aftakking van meester. Bel de nieuwe vestiging readme_changes

Ik wil laten zien hoe samenvoegen werkt, dus in de nieuwe branche, laten we onze wijzigingen doorvoeren door te selecteren Bron controle > plegen. Dit brengt ons terug naar de vergelijkingsweergave en geeft ons de mogelijkheid om alle wijzigingen die we in deze commit hebben aangebracht te bevestigen, met de mogelijkheid om onze wijzigingen regel voor regel te vergelijken.

Wanneer u de wijzigingen hebt gecontroleerd, voert u een commit-bericht in dat lijkt op het volgende. En zorg ervoor dat u de Druk op afstandsbediening doos.

Wanneer onze functietak is voltooid, willen we deze samenvoegen met de hoofdtak. Klik met de rechtermuisknop op de hoofdtak en selecteer de tweede samenvoegoptie: Samenvoegen van "readme_changes" naar "master"

Xcode zal dan samenvoegen en automatisch terugschakelen naar de hoofdtak. Terugschakelen naar de hoofdtak, u zult een kleine pijl naar boven zien met het cijfer 1 rechts van de huidige tak. 

Dit laat ons weten dat we een commit hebben die naar de remote repository moet worden gepusht. Als de telling was 2, we zouden twee commits voor de remote master doen. 

Omgekeerd, als er nieuwe updates in de master zijn die je nog niet hebt getrokken, laat Xcode je dit weten. Xcode zal ophalen van de afstandsbediening en u op de hoogte brengen met een pijl naar beneden en tellen dat u zich achter de externe master bevindt. 

tagging

Eerder hebben we een tag gemaakt op een van de eerdere commits. Als u het primaire deelvenster waarneemt, kunt u een andere commit zien die is getagd. Het linkerdeelvenster maakt het gemakkelijk om een ​​beknopte lijst van alle tags, onder takken, te bekijken. 

Denk aan de naamgevingsconventie die we voor onze tag hebben gebruikt, vrijgave / 0,1. Dat hebben we met reden gedaan. Door tags te maken met een hiërarchische bovenliggende code, kan Xcode tags samen groeperen. 

In ons geval hebben we twee tags die behoren tot de vrijlating bovenliggende tag. We kunnen om verschillende redenen meerdere logische groepen voor onze tags maken en Xcode maakt het eenvoudig om onze tags te ordenen. 

Door een specifieke tag te selecteren, toont onze commit-geschiedenis alleen commits die gerelateerd zijn aan die tag, wat betekent dat we een compleet coderingsmanifest hebben van alle wijzigingen die tijdens een release zijn geïntroduceerd. Dit helpt ons om eventuele problematische code specifiek voor die release te beperken.

Conclusie

Xcode 9 is een enorme release en een van de grootste nieuwe functies is dat Apple SCM eindelijk heeft geïntegreerd als een eersteklasburger van de IDE. Dit lost een al lang bestaande klacht op die veel ontwikkelaars hebben geuit over hoe Xcode collaboratieve ontwikkeling en versiebeheer beheerde. 

In Xcode 9 is GitHub niet alleen naadloos in het platform geïntegreerd, maar ontwikkelaars worden nu beloond met een mooie interface voor codebeheer op een nieuw tabblad SCM. Ontwikkelaars krijgen een definitief beeld van de codegeschiedenis, commits, samenvoegingen, tagging en vertakkingen, evenals geavanceerde perspectieven voor het opsporen en opsporen van commits die bugs hebben geïntroduceerd. Git-liefhebbers en SCM-liefhebbers zullen echt het initiatief van Apple waarderen om een ​​echt krachtige Git-beheerstool te consolideren, allemaal binnen de IDE.

Kijk terwijl je hier bent naar enkele van onze andere berichten over de ontwikkeling van Xcode, Swift en iOS-apps!