Come faccio a gestire un'importante revisione di un progetto open-source con git?

5

Ho un progetto open source piuttosto popolare su Github e mi sto preparando a fare una revisione major - struttura di directory completamente diversa, versioni sostanzialmente diverse dei componenti principali e molti file che semplicemente non esisterà più.

Non voglio creare un repository completamente nuovo, perché perderanno tutti i problemi, le stelle, le pagine wiki e altri extra che vengono forniti con un repository Github. D'altra parte, iniziare su un nuovo ramo dev sembra meno che ideale, perché dovrò .gitignore un sacco di file non tracciati dalla vecchia versione per poter passare facilmente tra le due versioni.

Altre idee che ho considerato:

  • Crea un ramo orfano vuoto per la nuova versione;
  • "Forchetta" la versione corrente in un nuovo repository, svilupparlo nel nuovo repository e quindi unire nuovamente il fork nel repository originale quando è pronto per il rilascio (è possibile?)

Qual è l'approccio migliore per fare una revisione così importante?

    
posta alexw 23.06.2016 - 23:29
fonte

2 risposte

5

Utilizza un ramo, questo è esattamente ciò per cui sono progettati i rami.

On the other hand, starting on a new dev branch seems less-than-ideal, because I will have to .gitignore a lot of untracked files from the old version to be able to easily switch between the two versions.

Una possibilità potrebbe essere quella di avere un ramo nel repository GitHub, ma clonarlo in un'altra directory di lavoro quando si lavora sul codice. In questo modo i file non tracciati da una versione non saranno nella directory di lavoro dell'altra versione. Se è una riscrittura completa in cui i file di configurazione saranno incompatibili, allora questo è un buon modo per andare.

Ma, aggiungendo alcune linee aggiuntive a .gitignore in entrambi i rami per consentire un facile passaggio tra di loro è un costo piuttosto basso. Se vuoi essere in grado di fare il checkout da una versione all'altra, questa è una strada abbastanza buona.

    
risposta data 24.06.2016 - 01:24
fonte
1

Forse basta usare due cartelle old e new affiancate. Dal momento che la nuova versione sembra essere completamente incompatibile con il codice sorgente, non avresti comunque alcun utile risultato di unione. Sembra che a un certo punto tu debba solo cancellare il vecchio codice e usare il nuovo codice andando avanti.

Create an empty orphan branch

Questo è molto simile alla soluzione a due cartelle ma hai indicato che vuoi utilizzare entrambe le versioni affiancate.

Probabilmente puoi far funzionare il ramo orfano anche con due sole copie di lavoro. Dai un'occhiata a ciascuna delle due "epoche" in cartelle separate.

Spero che ciò che ho detto abbia senso in un contesto Git. Sono più esperto di Subversion in cui tali soluzioni "low-tech" sono più comuni. Nei rami SVN ci sono solo cartelle comunque.

    
risposta data 24.06.2016 - 00:11
fonte

Leggi altre domande sui tag