Mi equipo usa un flujo de trabajo de twig de característica con git.
Me gustaría configurar de alguna manera un git pull upstream branchname
desde el repository upstream para que siempre sea git pull --ff-only upstream branchname
. ¿Es eso posible?
También me alegraría si pudiera configurar todo el repo upstream
para que solo permitiera --ff-only
.
Nuestra twig de integración principal se develop
en el repository principal ascendente, con twigs de características individuales que comienzan desde el desarrollo, hacen sus cambios y luego aumentan las requestes de extracción para fusionar las twigs de características para que se desarrollen.
El problema es que muchos de nuestros desarrolladores no son tan expertos en git como deberían ser, y siguen estropeando la copy de develop
de su repository local, de modo que difiere de la copy de develop
del upstream.
Ellos no notan esto esta divergencia. A continuación, crean una twig característica de su develop
borked, y no se dan count hasta que aumentan su request de extracción, lo que de repente trae mucha tontería. Si tenemos suerte, un crítico conocedor les dice que limpien su request de extracción mediante un nuevo cálculo. Pero de vez en cuando, una request de extracción defectuosa se fusiona y eso arruina nuestra historia de subida.
Mi recomendación para estos principiantes es utilizar siempre la opción --ff-only
cuando se tira desde la parte superior, para forzar a su twig de develop
local a que siga siendo una copy perfecta del repository upstream.
Si su copy local de develop
ha separado de la stream ascendente, entonces la opción --ff-only
les --ff-only
cuando --ff-only
a intentar tirar. Este grito los obligará a solucionar el problema real.
Pero son git-n00bs y, por lo tanto, a menudo ni siquiera entienden lo que estoy recomendando, y solo siguen estropeando las cosas.
Probaré todas las técnicas de motivación apropiadas de zanahoria / palo (¡Seres humanos! Lo sé, ¿no?), Pero si pudiera configurar de alguna manera sus --ff-only
locales con ruedas de entrenamiento --ff-only
, entonces mi carga de revisión disminuirá (y mis desarrolladores se verán obligados a aprender mejores técnicas de git).
Puede crear un alias git para esto, por ejemplo:
git config --global alias.update 'pull --ff-only'
Y luego dile a tus usuarios que lo usen en lugar de pull
:
git update upstream branchname
ADVERTENCIA: HACK INDOCUMENTADO
El command git pull
es en realidad un script de shell que generalmente se encuentra en el libexec/git-core/git-pull
bajo su installation de git. Este script llama internamente a los commands git fetch
y git merge
en secuencia.
Técnicamente puedes abrir este file y editarlo a tu gusto. Por ejemplo: al inicializar ff_only
shell variable en '--ff-only'
lugar de ''
, se logrará lo que quiera, pero puede entrar en conflicto con otras opciones como --ff
que el usuario puede especificar explícitamente. Por supuesto, puede modificar aún más la secuencia de commands para acomodar esto también.
Sin embargo, tenga en count que la installation de una nueva versión de git probablemente sobrescribirá sus cambios. Todo depende de qué tan determinado esté para lograr lo que está tratando de hacer.