Di recente ho cercato di entrare in una collaborazione open source in GitHub e mi sono imbattuto in una situazione per la quale sono curioso di sapere quale sia il modo preferito di procedere.
Circa un mese fa, ho trovato un progetto su GitHub per una libreria che già utilizzavo da un po 'e in cui avevo trovato (e corretto) alcuni bug.
Come iniziale incursione nella collaborazione con GitHub, ho trovato il repository che sembrava avere il maggior volume di attività recenti, risolto un bug, aggiunto test unitari, inviato a GitHub e fatto una richiesta pull. Nel giro di poche ore, il manutentore del repository che ho biforcato aveva accettato il PR e si era unito a qualche altro PR di altre persone che stavano aspettando.
Spinto da questo, ho risolto altri tre bug che avevo trovato, ognuno in un ramo separato del mio repository, e ho presentato un problema e ho tirato la richiesta per ognuno separatamente.
Questo è successo poco più di un mese fa e le richieste di pull sono rimaste lì, intatte, da allora. L'utente il cui repository è stato biforcato non sembra essere molto attivo, dopo aver effettuato solo 7 contributi totali su GitHub nell'ultimo anno e quel repository non ha effettuato alcun commit da quella prima richiesta pull che ho fatto.
Quindi la mia domanda:
Come si procede in questa situazione? Idealmente, vorrei evitare di creare frammentazione della libreria andando via e facendo un sacco di modifiche nel mio repository che non vengono unite nel repository principale. Tuttavia, vorrei continuare a fare correzioni di errori e aggiungere funzionalità, ma se unisco tutto nel mio ramo master e baso tutte le nuove correzioni su quel ramo, allora se il gestore del repository che ho biforcato dovesse mai tornare indietro, avrei vinto essere in grado di dividere tutte le modifiche in richieste pull separate per ogni funzione / correzione di bug (ho letto che le richieste pull dovrebbero generalmente essere una richiesta pull per funzione o correzione bug).
Devo mantenere un ramo in linea con il repository originale, basare tutti i miei nuovi rami su quello e quindi mantenere tutti i commit uniti nel mio ramo master? Sembra che mi lascerebbe con un sacco di rami e un compito sempre più gravoso ogni volta che devo unire nuove modifiche nel mio ramo principale.
Qual è il modo tipico in cui uno dovrebbe affrontare una situazione come questa? Sembra abbastanza comune che un progetto venga appena abbandonato con i collaboratori originali non in giro per rivedere nuove richieste pull. È una situazione in cui qualcuno dovrebbe semplicemente prendere il timone e correre con esso? Sembra che creerebbe frammentazione se i partecipanti originali torneranno indietro e vorranno lavorare di nuovo sul progetto.