Novità con Git Support in Xcode 9

Cosa starai creando

L'ultima versione di IDE di Apple, Xcode 9, è stata rilasciata insieme a iOS 11 questo settembre. Ed è un enorme aggiornamento! I fan di Git per il controllo del codice sorgente (SCM) sono i grandi vincitori di questa imminente uscita.

Le versioni precedenti di Xcode avevano il supporto per SCM, ma non è mai stato considerato un cittadino di prima classe. Il supporto Git di Xcode era buggato e scialbo, impallidito rispetto agli strumenti specializzati come SourceTree, il che significava che gli sviluppatori dovevano saltare tra gli strumenti per essere in grado di fare attività avanzate di gestione del repository Git. 

Tutto questo è cambiato in Xcode 9. Apple non vede più SCM come secondario, ma ha optato per una stretta integrazione con GitHub e ha collaborato strettamente con GitHub per Xcode 9. 

Il risultato è che ora puoi accedere al tuo account GitHub direttamente da Xcode, per navigare, navigare e clonare i tuoi repository GitHub. Puoi anche cercare altri repository senza dover passare a una finestra del browser. Inversamente, se hai un repository GitHub aperto nel tuo browser, puoi fare clic sul pulsante clone e fare in modo che Xcode cloni automaticamente e apra il progetto. 

Come dice Apple, "Il supporto per Git è ora in prima fila e centrale" e Apple ha introdotto un nuovo navigatore di controllo del codice sorgente, quindi non è necessario aprire una nuova finestra visivamente separata dal resto di Xcode. Gli sviluppatori possono ora visualizzare rami, tag e telecomandi attraverso una timeline chiara e intuitiva, possono ispezionare i commit in modo più granulare e possono vedere un confronto più elegante e attraente delle modifiche. 

Obiettivi di questo tutorial

In questo tutorial, ti guiderò attraverso l'elenco delle nuove funzionalità SCM introdotte con Xcode 9. Vedremo tre aree principali:

  • impegna
  • rami
  • tag

Conoscenza presunta

Per seguire questo tutorial, dovresti avere qualche esperienza precedente con Xcode e alcune conoscenze di gestione del controllo del codice sorgente attraverso Git. 

Inizia con Xcode 9 SCM

Impostazione del tuo ambiente

Per utilizzare le nuove funzionalità SCM di Xcode, è necessario: 

  • Scarica Xcode 9.
  • Avere un account GitHub gratuito o pagato.

Una volta che hai scaricato e installato l'ultima build Xcode e disponi di un account GitHub corrente, sei pronto per connettere il tuo account GitHub a Xcode 9. Avvia Xcode e vai a Preferenze > conti. Quindi, selezionare il + pulsante in basso a sinistra per aggiungere un nuovo account. 

Selezionare GitHub dalla finestra modale e inserisci le credenziali di GitHub. Se utilizzi l'autenticazione a due fattori, Xcode ti chiederà di inserire il tuo codice. 

Navigazione e ricerca nei repository GitHub

Vediamo come è possibile sfogliare i repository GitHub pubblici esistenti direttamente da Xcode. Apri la schermata di benvenuto di Xcode se non è già visualizzata andando a Finestra > Benvenuto in Xcode

Quindi selezionare Clona un progetto esistente, che farà apparire la lista dei repository su GitHub che attualmente possiedi, lavori o hai recitato come protagonista. 

Oltre alla lista che ha presentato, puoi anche cercare un repo pubblico (o un repository privato a cui hai accesso) per nome o inserendo il suo URL GitHub. Per il nostro tutorial, digita RealmDo e fare clic Clone, e quindi selezionare una directory locale per clonare il progetto in. 

Quindi ti chiederà una directory per verificare il progetto in:

Invece di estrarre il repository di progetto da Xcode, un'altra caratteristica davvero interessante è che puoi aprire un repository GitHub nel tuo browser e selezionare Clona o scarica e vedrai un nuovo pulsante etichettato Apri in Xcode

Esatto: se si fa clic su di esso, verrà automaticamente aperto il progetto in Xcode, per essere clonato e scaricato. 

Torna al nostro progetto. Poiché utilizziamo CocoaPods per gestire le dipendenze, è necessario tornare al terminale di comando ed eseguire installazione pod:

19:06 $ pod install Analisi delle dipendenze Download delle dipendenze Utilizzo di Realm (2.7.0) Utilizzo di RealmSwift (2.7.0) Progetto di generazione di pod Integrazione del progetto client Invio delle statistiche Installazione del pod completata! Esiste 1 dipendenza dal Podfile e 2 pod totali installati.

Il nostro progetto dovrebbe ora essere installato localmente e il tuo .xcworkspace dovrebbe essere aperto in Xcode con tutti i file nel tuo progetto. 

Preferenze Xcode SCM

Navigando verso le preferenze di Xcode e quindi selezionando Controllo della fonte, puoi cambiare vari aspetti del suo comportamento direttamente dal pannello delle preferenze, incluso il nome e l'e-mail dell'autore Git, e, cosa interessante, persino aggiornare il tuo .gitignore impostazioni pure. 

Associare un nuovo progetto con GitHub

D'altra parte, se hai creato un nuovo progetto Xcode e non hai ancora creato il progetto su GitHub, puoi creare un nuovo progetto GitHub direttamente da Xcode. Fai clic destro su Telecomandi e quindi selezionare Crea il telecomando "RealmDo" su GitHub

Xcode ti chiederà quindi di dare un nome al repository e selezionare un account per il quale essere associato.

Esplorando la nuova interfaccia SCM

Esploriamo ciascuna delle sezioni della nuova interfaccia. 


  1. Il riquadro a sinistra contiene un elenco familiare di icone per accedere alle proprietà del progetto. La seconda scheda è nuova: è il Navigatore del controllo del codice sorgente.
  2. Il Commit History il riquadro è la parte più importante del navigatore, mostrando un elenco storico di commit per il progetto e il ramo.
  3. Il riquadro a destra ti fornisce informazioni contestuali aggiuntive sul ramo e sui commit selezionati.
  4. Accanto al ramo contestuale e alle informazioni di commit, questa sottosezione sul lato destro mostra quali file sono stati parte del commit selezionato.
  5. Il riquadro a sinistra offre una vista gerarchica del progetto da una prospettiva SCM, mostrando il ramo corrente, eventuali altri rami sia locali che remoti e tag. Inoltre segnala se ci sono nuovi commit da spingere o tirare, come vedremo più avanti.

Il Navigatore del controllo del codice sorgente

Una delle prime cose che esploreremo in Xcode 9 è il Navigatore di controllo del codice sorgente, nuovo di zecca per Xcode 9. Non è più la vista di origine di un cittadino di seconda classe - ora è completamente trasformato in Xcode. Seleziona la seconda icona nel riquadro a sinistra come indicato da (1) nella schermata sopra per aprire il Navigatore del controllo del codice sorgente. 

Commit History

Diamo un'occhiata alla prospettiva Commit History, che mostra l'elenco di commit per il progetto, incluso il nome dell'autore del commit, la data, la descrizione e l'avatar dell'autore di GitHub, che costituisce la cronologia del progetto. 

Questa è una prospettiva molto chiara e ben organizzata. Mentre questo progetto di esempio è piuttosto scarso per quanto riguarda la cronologia (anche se lo cambieremo a breve), questo pannello è ingannevolmente potente. 

Oltre a essere in grado di scorrere facilmente e ottenere informazioni storiche utili, puoi anche filtrare e cercare intuitivamente per revisione, messaggio o autore. In effetti, puoi concatenare o unire più filtri, per cercare non solo dall'autore ma anche dalla revisione. Puoi anche cercare usando la barra dell'ambito, in base a periodi specifici, come ad esempio Ultime 24 oreUltimi 7 giorni, o Ultimi 30 giorni.

Selezionando un commit specifico vengono visualizzate alcune informazioni aggiuntive nel riquadro a destra. Accanto alle informazioni sul ramo, ottieni informazioni di commit, SHA completo, autore, messaggio e data. Viene visualizzato anche l'elenco di file creati durante il commit, che è estremamente utile per aiutarti a individuare il commit che ha causato un problema durante il debug. 

Facendo doppio clic su un commit viene visualizzato un elenco dei file che sono stati modificati in quel commit nel riquadro a sinistra e un confronto di versione verrà visualizzato in primo piano. Questa è la prospettiva diff diffusa, ma molto migliorata questa volta. 

Selezionando l'Assistant Editor nella parte in alto a destra è possibile accedere a una visualizzazione diff molto grande, che consente non solo di visualizzare un diff del file, ma anche di attraversare facilmente i commit precedenti, e di vedere le informazioni di commit e l'effettiva cambiamenti di file. 

Facendo clic con il pulsante destro del mouse su un commit, puoi anche visualizzare un menu che ti consente di contattare l'autore, copiare le informazioni di commit, derivare da quel commit o persino aprire il commit su GitHub nel browser. 

Puoi anche creare un tag, che è quello che faremo. Seleziona il Etichetta pulsante sul primo commit e nominarlo rilascio / 0,1

Assegnare un nome ai tag in questo formato, impostando un gruppo genitore (versione, beta, ecc.) Ha uno scopo interessante, che scopriremo a breve. Per ora, dal momento che abbiamo taggato un commit, passeremo al nostro prossimo argomento: branching. 

branching

Attualmente stiamo sviluppando sul ramo principale, ma durante il normale flusso di lavoro di sviluppo normalmente lavoravamo su un ramo separato. Creeremo un ramo per sviluppare e testare una funzionalità e quindi unirli nuovamente al ramo principale quando funziona correttamente. Creiamo un nuovo ramo facendo clic con il tasto destro maestro e selezionando Branch dal master. Chiama il nuovo ramo readme_changes

Voglio dimostrare come funziona la fusione, quindi nel nuovo ramo, commettiamo i nostri cambiamenti selezionando Controllo della fonte > Commettere. Questo ci riporta alla vista di confronto, dandoci l'opportunità di confermare tutte le modifiche che abbiamo apportato in questo commit, con la possibilità di confrontare i nostri cambiamenti riga per riga.

Quando hai controllato le modifiche, inserisci un messaggio di commit simile al seguente. E assicurati di controllare il Premi sul telecomando scatola.

Quando il nostro ramo di funzionalità è completo, vogliamo unirlo al ramo principale. Fare clic con il tasto destro del mouse sul ramo principale e selezionare la seconda opzione di unione: Unisci da "readme_changes" a "master"

Xcode verrà quindi unito e automaticamente tornerà al ramo principale. Tornando al ramo principale, noterai una piccola freccia in su con il numero 1 a destra dell'attuale filiale. 

Questo ci fa sapere che abbiamo un commit che deve essere trasferito al repository remoto. Se il conteggio era 2, ci sarebbero due commit davanti al master remoto. 

Inversamente, se ci sono nuovi aggiornamenti nel master che non hai ancora tirato, Xcode ti farà sapere. Xcode preleverà dal telecomando e ti notificherà con una freccia in giù e conterà che sei dietro al master remoto. 

Tagging

In precedenza, abbiamo creato un tag su uno dei precedenti commit. Osservando il riquadro principale, puoi vedere un altro commit che è stato taggato. Il riquadro a sinistra semplifica la visualizzazione di un elenco conciso di tutti i tag, sotto i rami. 

Ricorda la convenzione di denominazione che abbiamo utilizzato per il nostro tag, rilascio / 0,1. Lo abbiamo fatto per una ragione. La creazione di tag con un genitore gerarchico consente a Xcode di raggruppare i tag. 

Nel nostro caso, abbiamo due tag che appartengono al pubblicazione tag principale. Possiamo creare più gruppi logici per i nostri tag per diversi motivi, e Xcode rende facile organizzare i nostri tag. 

Selezionando un tag specifico, la nostra cronologia di commit mostrerà solo commit relativi a quel tag, il che significa che abbiamo un manifest di codifica completo di tutte le modifiche introdotte durante una release. Questo ci aiuterà a restringere qualsiasi codice problematico specifico per quella versione.

Conclusione

Xcode 9 è un'enorme release e una delle più grandi novità è che Apple ha finalmente integrato SCM come cittadino di prima classe dell'IDE. Questo risolve un problema di vecchia data che molti sviluppatori hanno espresso su come Xcode ha gestito lo sviluppo collaborativo e il controllo delle versioni. 

In Xcode 9, GitHub non solo si fonde perfettamente con la piattaforma, ma gli sviluppatori sono ora ricompensati con una bellissima interfaccia di gestione del codice in una nuova scheda SCM. Gli sviluppatori ottengono una visione definitiva della cronologia del codice, commit, fusioni, tagging e ramificazioni, oltre a prospettive avanzate per il debugging e l'identificazione dei commit che hanno introdotto bug. Gli appassionati di Git e gli appassionati di SCM apprezzeranno davvero l'iniziativa di Apple di consolidare uno strumento di gestione Git davvero potente, tutto all'interno dell'IDE.

Mentre sei qui, dai uno sguardo ad alcuni dei nostri altri post sullo sviluppo di app Xcode, Swift e iOS!