2012-05-21 13 views
5

Indovina che ho un problema che molti potrebbero aver avuto. Sto usando una libreria di terze parti. Naturalmente, quando il venditore pubblica una nuova versione, devo aggiornare i file di intestazione ecc. Nel mio progetto. Ma XCode non viene fornito con una funzione di sostituzione, quindi è necessario eliminare! i file e copiare nuovamente i nuovi file nel progetto. Tuttavia, dal momento che l'ho fatto, ho un file di intestazione, che continua ad essere nello stato A per aggiunto e un insieme di risorse (una directory con immagini e file audio dall'SDK), che continua a dirmi che non è esistente, quando Voglio impegnare l'intero progetto.XCode/Git, lo stato di un file aggiornato non viene aggiornato nel controllo sorgente

Qualche idea, come posso ripulire quel casino? Ho inviato una richiesta di miglioramento ad Apple perché ritengo che la sostituzione di file in un progetto sia una funzionalità MUST.

+0

ok, ho risolto il problema del file non esistente aggiungendo 2 directory vuote (che non sono più in grado di eliminare ora, suppongo dovrebbe aggiungere un file a loro ??) – renesteg

+0

- qual è il tuo output nel progetto git - terminal ==> stato git - sekcond: problema permisson provare chmod - Spero tu abbia creato un ramo prima di aver effettuato il check in della nuova lib. – glenn

risposta

1

oh sì, i problemi di sovversione ... cosa faccio come ultima risorsa: eliminare i file locali, tirare la versione più recente e quindi applicare nuovamente le modifiche. Per me questi problemi si verificano spesso aggiungendo o eliminando le cartelle. Quindi prima aggiungo/elimini i file correlati sul server (normalmente utilizzo un'app di terze parti in quel caso, ad esempio gitbox o SourceTree) e poi riprovo a sincronizzare.

Normalmente dovrebbe essere possibile avere più repository git in un progetto (controlla la libreria nel tuo progetto) ma personalmente non mi piace. Invece ho il secondo repository in un'altra directory e aggiungo quei file come riferimento collegato (l'opzione che puoi scegliere quando aggiungi nuovi file -> deseleziona "copy items into destinations group folder"). Ogni volta che la libreria cambia, si applica automaticamente al tuo progetto. Lo svantaggio è che non controllerà automaticamente se è disponibile un aggiornamento. D'altra parte è probabilmente più sicuro usare una libreria più vecchia di una nuova (ogni volta che aggiorni la libreria hai teoricamente testato l'intera applicazione per i bug)

Torna al tuo problema. In molti casi è più facile creare una nuova struttura di repository. Effettua il backup dello stato corrente ed elimina il repository (locale o remoto). Quindi copia i file nel repository e sincronizzali. Dovrebbe risolvere quasi tutti i casi. (... e ogni volta che cerco di risolverlo altrimenti, finisco per sprecare ore con diversi metodi per ricostruire l'intero repo come ho descritto sopra.)

+0

Non consiglio di cancellare il repository - prova a rimuovere l'ultimo commit. Buon post di Chris per questo argomento: http://goo.gl/yCU2N Suggerimento: ogni volta che si effettua un'importazione/aggiornamento da prodotti di terze parti o modifiche importanti. Crea una nuova filiale nel tuo repository prima di iniziare. - git branch myHotFix - git checkout -b myHotFix Ora puoi giocare e modificare qualsiasi cosa - se c'è qualcosa di buono - fare unire - se non rilasciare il ramo -> creane una nuova e riprova. – glenn

+0

thx finora. Per me è stato naturalizzato durante l'utilizzo di SVN (nessun ramo fino a che) ma anche con git ho avuto alcuni problemi che non potevo risolvere in quel modo. A volte ottengo uno stato repo inutilizzabile in modo tale da non riuscire nemmeno a stabilire una connessione con il server. Forse l'ho detto ambiguo: non consiglio di cancellare il repository, solo come ultima possibilità! –

+0

Prima di tutto mi dispiace, per non aver risposto prima, Laptop era nell'ospedale Apple ;-) Per quanto riguarda le risposte: Holy moly, voglio solo aggiungere qualche file. Il fatto, che la risposta sia già di 3 paragrafi (grazie comunque comunque) non aggiunge il mio livello di confidenza a git. Gli strumenti professionali (ok costano poche centinaia/migliaia di $) non hanno problemi con la sostituzione di un file esistente nel progetto e semplicemente creare una nuova versione di esso. E creare un ramo, solo perché vorrei aggiornare un componente di terze parti? Hmmm, non sembra essere l'approccio giusto. Comunque, grazie ancora a tutti. – renesteg

Problemi correlati