2011-04-14 11 views
39

Sto cercando di capire il miglior flusso di lavoro per lavorare con un fork di un progetto opensource esistente in Github. Voglio prendere un progetto esistente e apportare modifiche significative ad esso, in questo caso portarlo su Android e aggiungere funzionalità specifiche di Android. Vorrei soddisfare quanto segue:Miglior flusso di lavoro durante la foratura e la ridenominazione di un progetto GitHub

  1. Essere in grado di estrarre le modifiche dal loro repo pubblico alla nuova porta Android man mano che il codice originale viene aggiornato.
  2. Essere in grado di riassumere le modifiche (tramite richieste di pull) al progetto originale quando correggo bug che non sono solo applicabili alla porta Android.
  3. Avere una versione rinominata separata del progetto per chiarire che si tratta di una porta Android. Ho dato un'occhiata al rinominare una forchetta e Github mi ha dato enormi avvertimenti su come farlo.

I miei pensieri iniziali sono avrei sborsare il progetto originario poi forchetta e rinominare la forchetta di darmi i seguenti pronti contro termine:

original-author/projectA 
nicstrong/projectA 
nicstrong/projectA-android 

Questo mi avrebbe permesso di lavorare sul mio repo locale local/projectA- modifiche push android a nicstrong/projectA-android. Quindi per aggiornare dal progetto originale potrei rebase nicstrong/projectA al più recente da original-author/projectA quindi recuperare/unire da nicstrong/projectA a local/projectA-android.

Le mie domande sono:

  1. Sono abbastanza nuovo per l'intera Git cosa. Questo sembra un buon approccio ? O c'è un miglior flusso di lavoro per gestire questo scenerio?
  2. Come gestirlo premendo da projectA-android su nicstrong/projectA in modo che possa impostare la richiesta di pull per il progetto originale?

risposta

17

1/Sì, che sembra l'approccio più sicuro, in quanto ogni modifica si finisce per back-porting in nicstrong/projectA sarà in un progetto con la stessa struttura original-author/projectA.
Ciò significa che le richieste di pull saranno più facili da organizzare, poiché ci si troverà in un progetto che rispecchia il progetto dell'autore originale.

2/Se avete massiccia refactoring in corso in nicstrong/projectA-android, vorrei fare un ramo backport, accuratamente fondere o cherry-pick quello che vi serve dalle numerose modifiche al ramo backport, e quindi spingere quel ramo a nicstrong/projectA.
(il che significa che sono stati aggiunti nicstrong/projectA come un telecomando di nicstrong/projectA-android)

+2

Per creare le forche multiple necessarie, ho utilizzato la tecnica descritta in questo post: http://adrianshort.org/2011/11/08/create-multiple-forks-of-a-github-repo/ – dbasch

+1

@dbasch vero, ma non sarà un vero fork, in quanto non ci sarà alcuna richiesta di pull da una seconda "fork" al repository originale. – VonC

+0

Userò il repository projectA per richieste pull al repository originale. Le modifiche in projectA-android/backport verranno unite manualmente in projectA. Questa è una buona strategia? – dbasch

3

Il nome di un repository git è fortemente dipendente dal nome del telecomando. Vai avanti e clonalo, quindi aggiungi un nuovo telecomando (con un nome diverso) e inizia a spingere lì. A quel punto, ovviamente, puoi andare avanti e cambiare il nome della directory del progetto senza problemi.

Problemi correlati