Vad är nytt med Git Support i Xcode 9

Vad du ska skapa

Apples senaste IDE-version, Xcode 9, släpps tillsammans med iOS 11 i september. Och det är en stor uppdatering! Fans för Git för källkontroll (SCM) är stora vinnare i den här kommande utgåvan.

Tidigare versioner av Xcode hade stöd för SCM, men det betraktades aldrig som en förstklassig medborgare. Xcode: s Git-support var buggy och lackluster, jämfört med specialverktyg som SourceTree, vilket innebar att utvecklare var tvungna att hoppa mellan verktyg för att kunna göra avancerade Git repository management uppgifter. 

Allt detta har ändrats i Xcode 9. Apple ser inte längre SCM som sekundärt men har istället valt en snabb integration med GitHub och har samarbetat med GitHub närmare för Xcode 9. 

Nettoresultatet är att du nu kan logga in på ditt GitHub-konto direkt från Xcode, för att bläddra, navigera och klona din GitHub-repos. Du kan också söka efter andra repositories utan att behöva byta till ett webbläsarfönster. Om du har en GitHub repo i din webbläsare kan du klicka på klonknappen och ha Xcode automatiskt klona och öppna projektet. 

Som Apple säger "Support for Git är nu framför och centrum", och Apple har introducerat en ny källkontroll-navigator, så du behöver inte öppna ett nytt fönster som är visuellt lossnat från resten av Xcode. Utvecklare kan nu se grenar, taggar och fjärrkontroller genom en tydlig och intuitiv tidslinje, de kan inspektera begår mer granulärt och de kan se en mer elegant och attraktiv jämförelse av förändringar. 

Målen för denna handledning

I denna handledning går jag igenom listan över nya SCM-funktioner som introducerades med Xcode 9. Vi tittar på tre huvudområden:

  • begår
  • grenar
  • taggar

Förutsatt kunskap

För att följa med denna handledning borde du ha tidigare erfarenhet av Xcode och lite kunskap om källkontrollhantering via Git. 

Kom igång med Xcode 9 SCM

Ställa in din miljö

För att utnyttja Xcodes nya SCM-funktioner måste du: 

  • Hämta Xcode 9.
  • Ha ett gratis eller betalt GitHub-konto.

När du har laddat ner och installerat den senaste Xcode-byggningen och har ett nuvarande GitHub-konto, är du redo att ansluta ditt GitHub-konto till Xcode 9. Starta Xcode och gå till Inställningar > konton. Välj sedan + knappen längst ned till vänster för att lägga till ett nytt konto. 

Välj GitHub från det modala fönstret och ange dina GitHub-uppgifter. Om du använder tvåfaktorsautentisering uppmanas Xcode att ange din kod. 

Bläddring och sökning av GitHub Repositories

Låt oss se hur seamlöst du kan bläddra bland befintliga offentliga GitHub-repositories, precis inom Xcode. Öppna Xcode välkomstskärmen om den inte redan visas genom att gå till Fönster > Välkommen till Xcode

Välj sedan Klona ett befintligt projekt, som kommer att hämta listan över repositories på GitHub du äger, jobbar med eller har spelat med. 

Förutom listan som den har presenterat kan du också söka efter en offentlig repo (eller privat repo du har tillgång till) med namn eller genom att skriva in sin GitHub-URL. För vår handledning, skriv RealmDo och klicka Klona, och välj sedan en lokal katalog för att klona projektet in. 

Det kommer då att fråga dig en katalog för att kontrollera projektet ut i:

Istället för att dra projektprojektet från Xcode, är en annan riktigt smart funktion att du kan öppna en GitHub repo i din webbläsare och välj Klon eller nedladdning och du kommer se en ny knapp märkt Öppna i Xcode

Det är rätt: om du klickar på det kommer det automatiskt att öppna projektet i Xcode, att klonas och laddas ner. 

Tillbaka till vårt projekt. Eftersom vi använder CocoaPods för att hantera beroenden måste vi hoppa tillbaka till kommandoterminalen och springa pod installera:

19:06 $ pod installera Analysera beroenden Nedladdning av beroenden Använda Realm (2.7.0) Använda RealmSwift (2.7.0) Generera Pods-projekt Integrera klientprojekt Skicka statistik Podinstallation komplett! Det finns 1 beroende av Podfile och 2 totalt pods installerade.

Vårt projekt ska nu ställas in lokalt och din .xcworkspace ska vara öppen i Xcode med alla filer i ditt projekt. 

Xcode SCM-inställningar

Genom att navigera till Xcodes inställningar och sedan välja Källkontroll, Du kan ändra olika aspekter av sitt beteende direkt från inställningsrutan, inklusive Git-författarens namn och e-post, och intressant nog, uppdatera även din .gitignore inställningar också. 

Associera ett nytt projekt med GitHub

Å andra sidan, om du har skapat ett nytt Xcode-projekt och inte har skapat projektet på GitHub ännu, kan du skapa ett nytt GitHub-projekt direkt från Xcode. Högerklicka på fjärrkontroller och välj sedan Skapa "RealmDo" Remote på GitHub

Xcode kommer då att be dig att ge förvaret ett namn och välj ett konto för att det ska associeras med.

Utforska den nya SCM-gränssnittet

Låt oss utforska var och en av delarna av det nya gränssnittet. 


  1. Den vänstra rutan har din välbekanta lista med ikoner för att få tillgång till projektets egenskaper. Den andra fliken är helt ny: det är källkontrollnavigatorn.
  2. De Commit History rutan är den mest framträdande delen av navigatorn, som visar dig en historisk lista över förpliktelser för projektet och filialen.
  3. I högra rutan presenteras extra kontextuell information om filialen och de markerade förbindelserna.
  4. Tillsammans med den kontextuella förgreningen och begå information, visar detta underavsnitt på höger sida vilka filer som har varit en del av det valda åtagandet.
  5. Den vänstra rutan ger dig en hierarkisk vy över ditt projekt från ett SCM-perspektiv, som visar dig den aktuella filialen, alla andra grenar, antingen lokala eller fjärranslutna och taggar. Det signalerar också om det finns nya förbindelser som ska skjutas eller dras, som du kommer att se senare.

Source Control Navigator

En av de första sakerna vi kommer att utforska i Xcode 9 är Source Control Navigator, helt ny till Xcode 9. Ej längre är källvisningen en andraklassig medborgare-den är nu fullt bakad i Xcode. Välj den andra ikonen i den vänstra rutan som anges av (1) i skärmbilden ovan för att öppna källkontrollnavigatorn. 

Commit History

Låt oss ta en titt på kommittéhistorikperspektivet, som visar listan med förpliktelser för projektet, bland annat förplikta författarnamn, datum, beskrivning samt författarens avatar från GitHub, som utgör projekthistoriken. 

Detta är ett mycket tydligt och vackert organiserat perspektiv. Medan detta exempelprojekt är ganska sparsomt så långt historien går (även om vi kommer att förändra det så fort), är den här panelen bedrägligt kraftfull. 

Utöver att enkelt kunna bläddra och få användbar historisk information kan du också filtrera och söka intuitivt genom revision, meddelande eller författare. Faktum är att du kan kedja eller gå med i flera filter för att söka inte bara av författaren utan också genom revision. Du kan också söka med hjälp av räckvidden, efter specifika datumperioder, till exempel Senaste 24 timmarnaSenaste 7 dagarna, eller Senaste 30 dagarna.

Att välja ett specifikt commit ger lite extra information i den högra rutan. Vid sidan av filialinformationen får du begå information, hela SHA, författare, meddelande och datum. Du ser också listan över filer som gjorts under det här commitet, vilket är mycket användbart för att hjälpa dig att identifiera det åtagande som orsakade ett problem under debugging. 

Dubbelklickning på ett commit ger upp en lista över de filer som har ändrats i det åtagandet i den vänstra rutan, och en versions jämförelse kommer att visas fram och till centrum. Detta är det välbekanta diff perspektivet, men mycket förbättrats denna gång. 

Om du väljer assistentredigeraren längst upp till höger kan du få tillgång till en riktigt bra diff-vy som gör det möjligt att inte bara visa en diff av filen utan också att gå igenom föregående förpliktelser enkelt och se förpliktelsen såväl som den faktiska filändringar. 

Genom att högerklicka på ett commit kan du också se en meny som låter dig kontakta författaren, kopiera commitinformationen, filialen från det begåendet eller till och med öppna commit på GitHub i webbläsaren. 

Du kan också skapa en tagg, vilket är vad vi ska göra. Välj Märka knappen på den första commit och namnge den frisättning / 0,1

Namngivna dina taggar i det här formatet, genom att ange en föräldergrupp (release, beta, etc.), tjänar ett intressant syfte, som vi snart kommer att ta reda på. För tillfället, eftersom vi har taggat ett engagemang, kommer vi att gå in i vårt nästa ämne: förgrening. 

Förgrening

Vi utvecklar för närvarande på huvudgrenen, men under normala utvecklingsarbeten brukar vi arbeta på en separat filial. Vi skulle göra en filial för att utveckla och testa en funktion, och sedan slå tillbaka den till huvudgrenen när den fungerar korrekt. Låt oss skapa en ny fil genom att högerklicka bemästra och välja Gren från mästare. Ring den nya grenen readme_changes

Jag vill visa hur sammanslagning fungerar, så i den nya grenen, låt oss begå våra ändringar genom att välja Källkontroll > Begå. Detta ger oss tillbaka till jämförelsevisningen, vilket ger oss möjlighet att bekräfta alla de förändringar som vi har gjort i detta engagemang, med möjlighet att jämföra våra ändringslinjer efter rad.

När du har kontrollerat ändringarna anger du ett kommandotmeddelande som liknar följande. Och var noga med att kolla Tryck på fjärrkontrollen låda.

När vår funktionsgren är klar vill vi slå tillbaka den till huvudkontoret. Högerklicka på huvudgrenen och välj alternativet för det andra fältet: Slå samman "readme_changes" i "master"

Xcode kommer sedan att slå samman och automatiskt växla tillbaka till huvudgrenen. Om du växlar tillbaka till huvudgrenen märker du en liten pil upp med siffran 1 till höger om den nuvarande filialen. 

Detta låter oss veta att vi har ett engagemang som måste skjutas till fjärrförvaret. Om räkningen var 2, vi skulle vara tvungna före fjärrmästaren. 

Om inte det finns nya uppdateringar i befälhavaren som du inte har dragit än, kommer Xcode meddela dig. Xcode hämtar från fjärrkontrollen och meddelar dig med en nedåtpil och räknar med att du ligger bakom fjärrmästaren. 

tagg~~POS=TRUNC

Tidigare skapade vi en tagg på ett av de tidigare förpliktelserna. Observera den primära rutan, du kan se ett annat åtagande som har taggats. Den vänstra rutan gör det enkelt att visa en kort lista över alla taggar, under grenar. 

Kom ihåg namngivningskonventionen som vi använde för vår tagg, frisättning / 0,1. Det gjorde vi av en anledning. Skapa taggar med en hierarkisk förälder tillåter Xcode att gruppera taggar tillsammans. 

I vårt fall har vi två taggar som tillhör släpp förälder tagg. Vi kan skapa flera logiska grupper för våra taggar av olika skäl, och Xcode gör det enkelt att organisera våra taggar. 

Genom att välja en specifik tagg visar vår förlovningshistorik endast förpliktelser som är relaterade till den här taggen, vilket innebär att vi har ett komplett kodnings manifest för alla ändringar som infördes under en release. Detta kommer att hjälpa oss att begränsa eventuella problemkod som är specifika för den släppningen.

Slutsats

Xcode 9 är en enorm release, och en av de största nya funktionerna är att Apple äntligen har integrerat SCM som en förstklassig medborgare i IDE. Detta löser ett långvarigt grepp som många utvecklare har uttryckt om hur Xcode lyckades samarbeta utveckling och versionering. 

I Xcode 9 är inte bara GitHub sömlöst blandad i plattformen, men utvecklare är nu belönade med ett vackert kodhanteringsgränssnitt i en ny SCM-flik. Utvecklare får en slutgiltig bild av kodhistoriken, förbinder, sammanfogar, taggar och förgrenar sig, samt avancerade perspektiv för debugging och identifierande förpliktelser som har infört buggar. Git lovers och SCM aficionados kommer verkligen uppskatta Apples initiativ att konsolidera ett verkligt kraftfullt Git-hanteringsverktyg, allt inom IDE.

Medan du är här, kolla in några av våra andra inlägg på Xcode, Swift och iOS app utveckling!