iphone - xcode for windows 10




Come usare Git correttamente con XCode? (4)

Francamente, le risposte esistenti sono fuorvianti.

Se non si eliminano o non si rinominano i file, utilizzare la strategia merge=union , che combina direttamente le differenze tra diverse commit, è una buona idea.

Tuttavia, nel mondo reale, a volte è necessario eliminare o rinominare i file. Unire le differenze senza alcuna modifica comporterebbe molti problemi in queste situazioni e questi problemi di solito portano al problema "Workspace Integrity - Impossibile caricare il progetto", il che rende persino impossibile eseguire il progetto.

La migliore soluzione che ho ottenuto finora:

1) Progettare bene il progetto e aggiungere tutti i file necessari all'inizio, quindi raramente è necessario modificare project.pbxproj .

2) Rendi minime le tue caratteristiche. Non fare troppe cose in un ramo.

3) Per qualsiasi motivo, se è necessario modificare la struttura del file e ottenere conflitti in project.pbxproj , utilizzare il proprio editor di testo preferito per risolverli manualmente. Man mano che si riducono i compiti, i conflitti potrebbero essere facili da risolvere.

Sono stato uno sviluppatore di iphone per un po 'e recentemente ho incluso git nel mio flusso di lavoro. Ho utilizzato le impostazioni git trovate su http://shanesbrain.net/2008/7/9/using-xcode-with-git per il mio flusso di lavoro finora.

Queste impostazioni dicono a git di escludere * .pbxproj dall'unione? C'è una vera ragione per farlo? Ad esempio, quando aggiungo un file al progetto e spingo all'origine, i miei colleghi sviluppatori non avranno quel file aggiunto al loro progetto xcode quando lo tirano. Quindi se uno di loro crea una versione questo file potrebbe non essere incluso. Non dovrei semplicemente lasciare che git gestisca le unioni per il file di progetto? Qualcuno potrebbe spiegare perché o perché questo file non dovrebbe essere unito e come gestire correttamente la situazione quando i file vengono aggiunti al progetto. Grazie.


Ho creato uno script Python in grado di gestire conflitti di unione nei file di progetto XCode.

Se vuoi provarlo, puoi verificarlo qui: https://github.com/simonwagner/mergepbx

Dovrai installarlo come un driver di unione, in modo che venga chiamato automaticamente quando si verifica un conflitto di unione nel file di progetto (il file README.md ti dirà come farlo).

Dovrebbe funzionare molto meglio che usare merge=union come mergepbx capisce la semantica del tuo file di progetto e quindi risolverà il conflitto correttamente.

Comunque il progetto è ancora alfa, non aspettarti che capisca ogni file di progetto che è là fuori.


La risposta breve è che anche se non includi quella riga in .gitattributes , potresti non essere in grado di unire facilmente due versioni modificate di un file .pbxproj. È meglio che git lo consideri un binario.

Vedi qui per i dettagli: Git e pbxproj

Aggiornamento: Anche se il libro Git è ancora d'accordo con questa risposta, non lo faccio più. I versione controlla il mio .pbxproj proprio come qualsiasi altro file sorgente non binario.








git