Cómo evitar "Merge branch 'master' de ssh: //gdcm.git.sourceforge.net/gitroot/gdcm/gdcm"

A algunos queueboradores de nuestro proyecto les gusta trabajar directamente con el maestro y aún así se olvidan de git pull --rebase .

¿Hay alguna manera de rechazar en el server la confirmación con commit como Merge branch 'master' of ... into master ?

Como comenta VonC , puede hacer esto con una versión más simple del gancho pre-receive que escribí para esa pregunta.

Para reformular lo que está preguntando, le gustaría un gancho de pre-receive en su server que rechazará cualquier bash de dominar que tenga un historial no lineal, es decir, introduzca cualquier confirmación con más de un padre. Este gancho debe hacer lo que quieras:

 #!/usr/bin/ruby -w ref_to_check = "refs/heads/master" STDIN.each_line do |line| rev_old, rev_new, ref = line.split(" ") if ref == ref_to_check merges_introduced = `git rev-list --merges #{rev_old}..#{rev_new}` unless merges_introduced.strip.empty? STDERR.puts "Refusing push to #{ref}, since it would create non-linear" STDERR.puts "history by introducing the following merge commits:" STDERR.puts merges_introduced exit(1) end end end 

Actualización: en la respuesta de Jefromi a la pregunta vinculada, demuestra que usar git rev-list --merges es mucho más git rev-list --merges , así que actualicé este script para usarlo, y lo arreglé para recorrer cada ref que el push está intentando actualizar.