È una buona pratica fare git merges su git server?
Facebook è attualmente in fase di implementando il rebasing lato server (c'è un sommario qui o puoi saltare a circa 10:55 nel video).
Nel loro caso hanno un tale volume di spinte che gli sviluppatori sono in competizione per spingere, e possono rimanere bloccati cercando di tirare poi spingere prima che qualcun altro li spinga e li costringe a tirare di nuovo.
Implementando i rebase lato server, i push vengono semplicemente aggiunti a una coda ed elaborati in ordine, assicurando che gli sviluppatori non perdano tempo a rimanere bloccati in un ciclo push / pull in attesa dell'opportunità di spingere in modo pulito. La maggior parte dei rebase può essere eseguita senza conflitti, ma se c'è poi lo sviluppatore viene avvisato di gestire manualmente l'unione, quindi inviare una nuova spinta. Aiuta anche a disporre di una suite di test automatizzata molto intensiva (discussa anche in quel video) in modo che possano avere maggiore fiducia nell'integrità della fusione automatizzata.
Detto questo, questo approccio ha solo benefici perché hanno un volume così elevato di spinte. Questi vantaggi non esistono se non si ha conflitto tra i push e la fusione sul lato server può complicare significativamente gli scenari di conflitto.
In generale, ha più senso che il pusher gestisca l'unione perché è nella posizione migliore per gestire i conflitti e di solito non si risparmia alcun tempo eseguendo il processo sul lato server.
L'idea alla base della fusione è che devi considerare la risoluzione dei conflitti. Non puoi semplicemente unire e sperare che il sistema capisca cosa intendi: è soprattutto conveniente, ma non confondersi e pensare che tutte le fusioni funzionino perfettamente tutto il tempo.
Dopo la fusione, vorrai rivedere i risultati e solo se supererà il controllo umano (e possibilmente compili ed eseguirà i test locali), allora puoi impegnarti con una buona speranza di correttezza.
Non è possibile farlo sul server a meno che non ci si colleghi e si tratti del server come se fosse la stazione di lavoro locale. E se lo fai, perché non farlo sul tuo posto di lavoro locale, in primo luogo!?
Leggi altre domande sui tag git