Mantenere aggiornato il codice sorgente di terze parti

6

Qual è il modo migliore per mantenere aggiornato il codice sorgente di terze parti?

Ad esempio nella mia app, sto utilizzando il codice sorgente di terze parti da un repository GitHub aperto. Quello che ho fatto è che ho scaricato lo zip del codice sorgente, l'ho decompresso e importato nella mia app iOS e poi ho iniziato a modificare questo codice sorgente nel mio contenuto di cuori.

Quindi questo codice sorgente di terze parti ha funzionato benissimo per me, ma ora alcuni mesi dopo lo sviluppatore del codice sorgente di terze parti ha rilasciato un aggiornamento del suo codice da 1.0 -> 2.0 . Ora ovviamente voglio avere questo aggiornamento anche nella mia app iOS. Quale sarebbe il modo più semplice per migrare il mio 1.0 codice sorgente di terze parti (insieme a tutte le mie aggiunte al codice) a 2.0 ?

    
posta Peter Warbo 17.07.2013 - 23:22
fonte

2 risposte

5

Mentre stai usando un qualsiasi repository di codice da github, c'è la possibilità che tu lo "stanzi". Con fork significa che puoi creare la tua versione del repository. Quindi, se apporti modifiche (ad esempio correzioni di bug), puoi inviare al creatore originale una richiesta di "fusione". Se il creatore originale accetta le tue modifiche verranno anche inserite nel suo repository.

Se le tue modifiche non sono qualcosa che il creatore originale accetterebbe allora puoi mantenere la tua app in forma modulare. Cerca di non modificare l'interfaccia originale della lib di terze parti. Ciò dovrebbe rendere possibile l'aggiornamento.

Se ciò non è possibile o è possibile utilizzare diff per trovare la differenza tra le 2 versioni e quindi apportare manualmente le modifiche. Puoi anche trovare la differenza "clonando" il repository git sul tuo computer. Quindi, passando attraverso i commit, puoi capire la differenza. Quello sarebbe un percorso più lungo. Ti suggerirei di utilizzare diff per trovare la differenza tra le 2 versioni.

Come MichaelT ha sottolineato, diff3 può essere più adatto per un simile confronto.

    
risposta data 18.07.2013 - 00:17
fonte
4

Nel prendere una copia del codice e apportarvi modifiche locali, hai effettivamente ramificato it. Nel frattempo, sulla linea principale, sono avvenuti altri cambiamenti e una versione 2.0 è stata rilasciata.

Notachequesti#1,#2,#3nonhannobisognodicorrispondere,nésonolastessacaratteristica-solounarappresentazionedidiversemodifichechesonostateapportateaciascunalineadelcodice.

Questoèquellochesembraora,estaiprovandoarenderloquelmerged2.0point.

BastafareundiffdelcodiceinYourchange#3eversion2.0timostreràcosaècambiatotraidue,manonmostracomesiadatta.Amenochetunonabbiasegnatoiltuocodiceinqualchemodo,avraidifficoltàadeterminareseladifferenzatrayourchange#3eversion2.0ècambiatarispettoallenuovefunzionalitànellalineaprincipaleoallemodificheapportatenelramo.

Perquesto,ènecessarioutilizzare diff3 che implementa un un modo unione tre del tuo codice, il codice più vecchio e il loro codice. Questo prende il version 1.0 come una modifica.

Le pagine man per diff3 su developer.apple .com e opendiff su developer.apple.com (puoi anche usare FileMerge sul mac - ricorda di espandere la finestra per la diff 3 vie Vedi anche Come si fa un'unione a 3 vie in FileMerge? - si può anche trovare p4merge da perforce per essere di tuo gradimento).

L'unione di un intero aggiornamento importante potrebbe essere un'impresa significativa. Non posso dire quanto è cambiato nella mainline tra version 1.0 e version 2.0 . A lungo termine, dovresti prendere in considerazione l'uso di git, la forking del repository e poi fare costantemente delle modifiche al tuo ramo. Questo è coperto in richiama le modifiche upstream nel git fork for repo articolo. Fare questo per piccole modifiche ti aiuterà a mantenere aggiornato il tuo codice e anche a ridurre il carico di lavoro rispetto alle principali modifiche. Ti manterrà aggiornato anche se ci sono delle sezioni importanti in fase di rilavorazione in cui hai apportato delle modifiche, in modo che tu sappia che dovrai risparmiare tempo per reintrodurre le tue modifiche.

    
risposta data 18.07.2013 - 05:11
fonte

Leggi altre domande sui tag