Se decidi che la ramificazione è una brutta cosa, allora perché usare Git su SVN? [chiuso]

-2

Ho usato Git e Mercurial un po 'negli ultimi dieci anni e li apprezzo e li preferisco, ma la maggior parte della mia esperienza è con SVN. Se nel gruppo di programmazione aziendale viene deciso che la ramificazione e la fusione non devono essere eseguite perché causano troppi problemi, allora quale vantaggio significativo rimane per Git su SVN? Sono consapevole che le capacità offline e locali sono benefico ma mi sembra che i loro benefici siano minimizzati dal divieto delle tecniche di ramificazione e dalla quantità minima di tempo trascorso lavorando offline.

Preferisco Git e non sto cercando di discuterne, ma mi è stato detto che Git avrebbe migliorato le cose anche se non dovevamo diramarti e unirmi.

    
posta altendky 11.12.2015 - 19:19
fonte

2 risposte

6

È utile perché l'intera azienda non deve utilizzare la stessa politica. Puoi avere una politica ufficiale di non succursale sul repository centrale ufficiale per le persone avverse alle filiali, ma i piccoli team locali possono tirarsi gli uni dagli altri, impegnarsi di frequente e impostare le proprie politiche, purché aderiscano alle policy quando spingono al repository centrale ufficiale.

In realtà uso git in cima alla perforce, quindi posso eseguire il commit localmente molto più frequentemente tra commit forzati, il che offre molta libertà di sperimentare, oltre a essere in grado di annullare facilmente le modifiche di debug degli ultimi 10 minuti circa. Posso creare rapidamente un ramo locale per correggere un bug, quindi tornare al mio compito a lungo termine. Ci sono molti vantaggi nell'usare git senza filiali a lungo termine, anche a livello locale senza l'approvazione ufficiale dell'azienda.

    
risposta data 11.12.2015 - 20:50
fonte
3

Prendendo il modello SVN, avrai N + 1 rami per ogni N sviluppatori che modificano il ramo principale. Ciò diventa più complicato una volta calcolato che alla fine questi rami non condividono lo stesso antenato comune (cioè la modifica è stata avviata da un commit diverso).

Quindi, anche se pubblichi solo un singolo ramo, il tuo strumento deve supportare fusioni e conflitti. Git ti consente di supportare i rami con un modello che gestisce questi casi semplici, oltre a cose molto più complicate. Il vantaggio per l'utente è che una volta compreso questo modello, esso può essere applicato alle azioni complesse mantenendo lo stesso processo fondamentale.

Ad esempio, è possibile creare un numero illimitato di filiali nel repository locale che possono essere unite, modificate, riordinate, regolate, ecc. I comandi per gestire queste operazioni sono gli stessi di quando si lavora con i rami creati da altri.

Supponiamo, tuttavia, che il tuo progetto sia solo uno sviluppatore che si impegna sempre nel ramo principale (cioè c'è un singolo ramo), l'architettura di git è di gran lunga superiore a SVN in un certo numero di modi fondamentali.

  1. L'hash SHA1 del tuo ramo convalida l'integrità dell'intero ramo. Se viene modificato un file o un messaggio di commit, il valore SHA1 cambierà. Ciò garantisce che rilevi immediatamente la corruzione dei tuoi dati repo.

  2. Il repository git è autocontenuto e non richiede un server o alcuna configurazione. Puoi letteralmente creare un nuovo repository in meno di 1 secondo.

  3. Git mantiene tutte le tue revisioni nel repository locale. In questo modo è possibile eseguire i comandi di ricerca e diff tra i vari ordini di grandezza più velocemente di SVN. Immagina di trovare il commit che ha modificato una linea su 10.000 modifiche o di trovare qualsiasi modifica che contenesse una variabile globale in code-base con 50.000 file o più. Git può restituire risultati in pochi secondi durante l'esecuzione su unità SDD onnipresenti.

  4. Git traccia il contenuto non i file. Ciò gli conferisce incredibili capacità di tracciare facilmente i file che sono stati rinominati o blocchi di codice che si spostano tra i file. Alcuni strumenti come SVN supportano i nomi, ma git fa questo senza che tu debba dire che c'era un rinominare.

  5. Git semplifica la creazione di un commit che implementa un "singolo cambiamento logico". Questo è importante per leggere la cronologia dei commit e quando è necessario ripristinare specifici commit che in seguito sono stati trovati o richiedono lavoro aggiuntivo o diventano obsoleti. SVN ti consente solo di inviare un singolo file alla volta, ma la codifica non avviene sempre in modo lineare ea volte, se ti dimentichi di inviare ogni modifica, alla fine raccogli 3 o 4 modifiche separate nello stesso file. Git semplifica la creazione di 4 commit da 4 modifiche nello stesso file (tuttavia se le modifiche si sovrappongono, devi comunque ricreare gli stati intermedi che sono stati persi)

risposta data 11.12.2015 - 21:41
fonte

Leggi altre domande sui tag