Come collaborare alle funzionalità usando github

3

github incoraggia 1 fork per utente, in modo che quell'utente possa lavorare in modo indipendente su una funzione e quindi richiedere che tale funzione venga accettata nel repository principale tramite richiesta pull.

Tuttavia, che cosa succede se 2 sviluppatori devono collaborare a tale funzione? Qual è il flusso di lavoro ideale per questo? Potrei vedere una serie di opzioni:

  1. Entrambi gli sviluppatori puntano al repository originale. Ogni sviluppatore tira / spinge le modifiche tra i repository degli altri. Sembra molto lavoro (micro operazioni minuscole) e crea anche un ritardo tra le modifiche, quindi aumenta la finestra per i conflitti.
  2. Forchette per sviluppatori 1 dal repository principale, forche per sviluppatori 2 dallo sviluppatore 1. Come per la 1, ma si spera che semplifichi un po 'la vita dello sviluppatore 2?
  3. Lo sviluppatore 1 fornisce le autorizzazioni di Developer 2 alla propria fork, in modo che entrambi lavorino dallo stesso repository centrale. Non sono sicuro che sia l'ideale.

Sono anche curioso di sapere dove entrano i rami. Ovviamente ci sarebbe un ramo per la funzionalità stessa, ma quel ramo non può esistere in un singolo luogo, dovrebbe esistere su più fork e essere sincronizzato.

Fondamentalmente solo molto confuso su questo flusso di lavoro, vorrebbe un approccio per come questo può essere realizzato al meglio.

    
posta void.pointer 29.10.2013 - 17:51
fonte

1 risposta

7

Crea un ramo di funzionalità per la funzionalità che desideri implementare.

Entrambi gli sviluppatori estraggono una copia locale del ramo di funzionalità. Possono inviare progressi incrementali al ramo della funzione e i conflitti verranno risolti mediante la fusione, qualora si presentassero.

Modifica

Il modo in cui vorrei affrontare questo problema:

  1. Dal repository principale e aggiornato, crea un ramo git checkout -b FeatureBranch
  2. Entrambi gli utenti controllano questo ramo git fetch e git checkout FeatureBranch
  3. Ora ogni utente ha una copia locale di FeatureBranch sulla sua macchina
  4. Ogni utente può progredire individualmente sul proprio ramo locale, commettendo le modifiche a loro piacimento. Quando vengono fatti abbastanza progressi, ognuno può spingere le proprie modifiche al ramo remoto git push origin FeatureBranch . Git gestirà l'unione automaticamente, a meno che non si presenti un conflitto che non può essere risolto automaticamente. In questo caso, il pusher dovrà risolverlo manualmente.
  5. Quando il ramo della funzione è pronto per essere riunito in master, emettere una richiesta di pull o git merge

FYI Penso che tu abbia la tua terminologia confusa nel tuo post. Gli utenti dovrebbero creare un ramo dal ramo principale e, al termine del loro lavoro, emetteranno una richiesta di pull e gli amministratori potranno decidere di unirlo o meno. Forking, almeno nella mia mente, è riservato per prendere un progetto ad un certo punto e dirigersi in una direzione diversa con lo sviluppo. Se un ramo di funzionalità ha lo scopo di migliorare la base di codice attuale e si adatta all'ideologia e al paradigma del progetto, consiglierei la ramificazione.

Potrebbero esserti utili ulteriori informazioni di base sul tuo caso d'uso.

    
risposta data 29.10.2013 - 20:34
fonte

Leggi altre domande sui tag