Git confirma y envía un file binary, pero no guarda el historial

Tengo un repository .NET C #. Se incluye un ejecutable binary que construye una database basada en una serie de scripts SQL actualizados regularmente también en el mismo repository. Naturalmente, la carpeta bin se ignora utilizando .gitignore .

Sin embargo, tengo algunos usuarios que no son desarrolladores que necesitan actualizaciones regulares de este file. Idealmente, lo que me gustaría hacer es poner un simple script por lotes en su máquina que haga un git pull y reciba el nuevo binary. Sin embargo, realmente no quiero seguir el historial de este file y obstruir mi repository con datos innecesarios.

¿Es posible enviar un file sin conservar el historial de ese file? Así que cada vez que comprometo el file, simplemente reemplaza el object almacenado en el repository, en lugar de crear una nueva versión de ese object.

Si no, alguno de ustedes tiene soluciones muy simples para esto. El file es solo una utilidad interna utilizada por 5 o 6 miembros del personal, por lo que cualquier tipo de solución de hack hará.

Puede mantener ese file en una sucursal huérfana separada ( git checkout --orphan NEWBRANCH ), y confirmar su file allí.

Cuando necesite replace el file, confírmelo con –men y luego fuerce – presione esa twig.

Esto sobrescribirá la confirmación previa, por lo que solo tendrá una única revisión del file en cualquier momento. En el lado del cliente puede get el contenido del file ya sea revisando la twig con el file o usando git show branch:file > file

Puede crear un blob para el file binary y labelr el blob, cuando reemplaza el file binary, realmente crea un nuevo blob, prune el anterior, elimina la label, crea una nueva label que apunta al nuevo blob.

Siga los siguientes pasos para crear un blob y labelr el blob:

  1. cat my_binary_file | git hash-object --stdin -w | xargs git tag -a tag_my_binary_file -m 'this is the message describing the binary file'
  2. git push --tags

Ahora ha creado un blob para my_binary_file y ha creado la label anotada tag_my_binary_file apunta al blob, y ha tag_my_binary_file la label y blob en la parte anterior. Puede verificar el file binary de otro cliente con los siguientes pasos:

  1. git fetch --tags
  2. git cat-file -p tag_my_binary_file | head -1 | cut -d" " -f2 | xargs git show > my_binary_file

Ahora encontrará su file binary llamado my_binary_file en el directory actual.

Para replace el file, siga los siguientes pasos:

  1. git tag -d tag_my_binary_file
  2. git gc ; git prune
  3. repite los pasos para crear blob y label