Quale dovrebbe essere il flusso di lavoro con un repository git?

7

Lavoro su diversi repository git anche se su non più di 2 persone lavorano. Per lo più io e il mio capo. Molto spesso quando lavoriamo in parallelo succede che "git log" non sembra così bello a causa della fusione commette. Il mio capo si lamenta sempre di questo. Odio davvero questo fatto perché questo mi rende effettivamente serializzato il mio lavoro. Per evitare questi commit di unione, devo sempre rebase alla versione più recente e andare nell'altro ufficio per essere sicuro che il mio capo non dimentichi di elaborare le richieste di fusione prima di impegnarsi personalmente. Peggio ancora, mi ha detto che da una settimana circa non riceve notifiche via email per la richiesta di fusione, anche se ho problemi a crederci.

Ancor più peggio ora egli stesso unisce la richiesta di revisione da parte dei pari, elevando ulteriormente il problema. (La parte migliore è che pensa che mi dimentico sempre di rebase e di aggiornare in tempo ...) In diverse occasioni ho già provato a spiegargli che faccio tutto il modo in cui mi suggerisce ma non mi crede perché ha più esperienza con git, almeno in ambienti non di gruppo.

Lavoro in questo posto da 3 mesi, anche se in realtà faccio il lavoro di squadra da poche settimane. Speravo davvero che avremmo usato svn perché con questo flusso di lavoro in git spreco molto del mio tempo e mi viene il mal di testa. In particolare abbiamo circa 40 repository con moduli che nella maggior parte dei casi non superano 3000 LOC. Così, quando cambio qualcosa di intimo in Repo A, potrei dover cambiare qualcosa in Repo B. Se dovessi decidere, metterei tutto quel materiale in un repository, almeno i moduli che appartengono a un gruppo di software.

Ovviamente come nuovo dipendente non puoi criticare troppo il tuo capo o influenzarlo troppo. Quindi qual è il modo migliore per affrontare questo problema?

    
posta Joe 02.07.2011 - 09:23
fonte

3 risposte

5

Presumo con questa risposta che sia tu che il tuo capo lavorate sugli stessi repository, quindi state facendo delle vere e proprie fusioni, piuttosto che veloci.

Se hai ri-basato il tuo lavoro sulla testa del tuo repository condiviso, hai fatto tutto il possibile tu per mantenere lineare la cronologia.

Se desidera una cronologia lineare per le proprie modifiche, deve seguire la stessa procedura in cui si aspetta e rebase le sue modifiche locali sulla testa del repository condiviso.

Così com'è, penso che stia vivendo nel passato con una storia lineare, ma è un desiderio comune con persone che sono state punse troppe volte dalla gestione delle filiali nei vecchi sistemi VCS. Fino a quando non riuscirai a persuaderlo altrimenti, hai il peggiore dei due mondi, provando a calzare un flusso di lavoro lineare in un ambiente utilizzando un DVCS in cui ci si aspetta che la ramificazione sia la norma.

    
risposta data 04.07.2011 - 14:12
fonte
3

Sembra che il tuo capo abbia deciso che il modo in cui le sue cose funzioneranno e ti sta dicendo di aggirare il problema, anche se il modo in cui lo desidera non si allinea con il flusso naturale dei sistemi distribuiti. (Ha anche qualche problema con la microgestione e la fiducia dei suoi dipendenti, ma non è questo il vero problema.)

Un modello di branching Git riuscito
Questa è una descrizione ben scritta e dettagliata di un modello di ramificazione. Ti consente di mantenere le cose organizzate e seguire il flusso delle modifiche. Parla anche del concetto di avere un'origine "centralizzata" che tutti possono spingere e tirare, invece di dover unirsi a tutti quelli della tua squadra.

Il pensiero che mi piace di più di quell'articolo è la sua posizione sulla fusione.

git merge --no-ff myfeature

L'arresto dell'avanzamento veloce significa che il fatto che il ramo esistesse rimane intatto. Quindi, quando si visualizza il grafico del registro

git log --oneline --graph

vedrai il ramo e unisci i punti e segui i diversi percorsi anche quando più persone lavorano in parallelo.

    
risposta data 04.07.2011 - 16:28
fonte
0

Ci sono diversi problemi qui:

  • Usare git su svn.

git è migliore perché è distribuito.
git è diventato anche uno standard a causa di problemi come questo.

  • Rapporti con il tuo capo.

Chiaramente sei in una situazione difficile. In situazioni come questa, i commenti "stop by" o "hallway" non funzioneranno. Ti consiglierei di richiedere un incontro formale con lui / lei su un oggetto di cui sei molto preoccupato. Usa quella lingua "molto preoccupata" nella tua richiesta di riunione ma NON dire di cosa si tratta affatto. Questo attirerà la sua attenzione!

  • Standard di settore.

Con lo sviluppo di oggi è molto importante tenersi aggiornati sugli strumenti e le cose cambiano rapidamente. A differenza di quando programmavo 30 anni fa e gli strumenti potevano essere standard per un decennio. Prenderò in considerazione l'uso di questo e di altri post nel tuo incontro con il tuo capo ... anche se questa domanda e le risposte probabilmente le faranno incazzare a causa delle critiche. Quindi forse altre domande sullo stesso argomento.

Nota finale:
Il mio ultimo capo ha usato svn e quando ho cercato di parlare di come fosse meglio fare git, ho avuto l'accorto "svn è un sistema perfettamente buono, l'ho usato per anni, non è come se fosse caduto lungo la strada". La verità è venuta fuori quando qualcuno - ok sono stato io - ha sbagliato un po 'di codice. Ha poi avuto un duro periodo di tempo per farlo tornare indietro. Abbastanza ironico visto che questo è un punto super importante di un sistema di controllo della versione. Quindi, in pratica, svn ha funzionato bene ... fino a quando abbiamo effettivamente avuto bisogno di funzionalità chiave. Probabilmente avrei dovuto sapere questo dato che non era stato a gruppi di utenti in 3 anni, non ha un buon account SO, ecc Date le vostre descrizioni vorrei anche ripulire quel curriculum e assicurarmi di essere in contatto con il mercato! La gente con cui vuoi lavorare sarà felice che tu stia usando git!

    
risposta data 05.03.2012 - 17:04
fonte

Leggi altre domande sui tag