¿Hay alguna forma de bloquear files individuales o directorys en la horquilla cuando se usa github?

Somos un equipo de más de 60 desarrolladores trabajando en el mismo producto y estamos pasando de SVN a Github. Tenemos un process en SVN donde los files individuales están bloqueados y cada vez que un desarrollador desea codificar, necesita que el propietario del file lo desbloquee. Tres de nosotros somos los dueños del total de más de 150 files. El deslocking va precedido de una revisión del código.

En Github, estamos planeando utilizar el model de Fork-Clone: ​​cada proyecto en el que un grupo de desarrolladores está trabajando hará una bifurcación, cada desarrollador hará una copy de la bifurcación, escribirá el código y se comprometerá con el origen, el líder de la la característica hará una request de extracción hacia la stream ascendente.

Aunque parece estar bien, el problema es que cuando se entrega un gran proyecto, trae muchos cambios para su revisión y, por lo tanto, aumenta la carga para los propietarios de los files. Además, esto podría suceder en los últimos ciclos de desarrollo y, por lo tanto, el proyecto podría verse comprometido.

Un método que pensamos que podría funcionar es tener ganchos cuando el git push se hace al origen (fork). Puede haber una revisión final git pull upstream.

Sin embargo, no pudimos encontrar ninguna extensión de Github o ganchos de inserción para el mismo. ¿Hay una manera rápida (leer, extensión existente) de hacer esto con Github o deberíamos usar los mismos ganchos que usaríamos con git?

Este caso de uso es una de las razones por las que Git es mucho mejor que SVN -> rebase ! Si sigue un buen flujo de trabajo de git, rebase desde la stream ascendente antes de enviar sus requestes de extracción. No necesita preocuparse por el locking de files y pisotear los commits y conflictos de fusión de otra persona, etc … una rebase deja su trabajo a un lado, aplica los commit remotos y luego aplica su trabajo en la parte superior.

Creo que esto solo requiere un replanteamiento en su process y confiar en las fortalezas de git versus force que encajan en un flujo de trabajo de Subversion sobre git. Su model de "clon de horquilla" también podría necesitar otro aspecto. Muy a menudo, cada desarrollador tiene su propio tenedor, puede compartir repos mediante controles remotos entre equipos si lo desea. Pero los contribuyentes que comparten el mismo origen establecen algunos malos hábitos.

Gitflow es un flujo de trabajo git muy popular, y Github tiene algunos buenos consejos y comparte su flujo de trabajo .

No es posible, si el file no se puede fusionar y necesita bloquearlo, use una solución centralizada en lugar de GIT, es decir, SVN o ClearCase.

Git no proporciona ninguna funcionalidad de locking, ya que está descentralizado. Sin embargo, si aloja su código en GitLab Enterprise Edition Premium , puede usar la interfaz web para bloquear files o carpetas individuales , logrando exactamente lo que desea hacer.

Si no desea alojar su proyecto en el server de otra persona (su website), también puede download GitLab y alojarlo en su propio server web.

No hay forma de hacerlo en Git. Como dijeron otros, si el documento es "mergable", puede intentar volver a basarlo, cambiando la forma en que actúa. En nuestro caso, tenemos una convención: si REALMENTE necesita bloquearlo, cambie el nombre. Pero solo hacemos tales cosas en documentos de oficina, etc.
Esta constribución no está dando una solución, es un truco de solución (pero stackoverflow no me permite agregar esto como un comentario.