enlaces duros git: ¿sabe que un archivo es un enlace duro?

16

Comencé a usar enlaces duros en lugar de enlaces simbólicos para organizar archivos ...

He estado haciendo esto para las fotos que tomo para clasificarlas e indicar cuáles quiero imprimir, etc.

Estoy usando git para hacer una copia de seguridad de mis imágenes y parece que git pensó que eran archivos nuevos ya que el repositorio creció aproximadamente 1 GB de tamaño. Git funciona realmente bien en la detección de cambios de nombre si no uso git para cambiar el nombre del archivo, pero ¿también maneja enlaces duros?

Walter

Walter
fuente
2
Todos los archivos normales son enlaces duros. ¿Quizás quiso decir "archivos con múltiples enlaces duros"?
Ignacio Vazquez-Abrams
Sí, eso es lo que quise decir.
Walter
1
Corrígeme si me equivoco, pero ¿no da más pistas content? ¿Por qué sería importante si los archivos tienen el mismo contenido? Después de todo, técnicamente son el mismo archivo.
nuevo123456
1
Para las personas que tropiezan con esto, ¿tal vez considere usar enlaces simbólicos en su lugar? stackoverflow.com/q/954560/492
CAD bloke
Parece que quiere un sistema de archivos basado en etiquetas.
Nayuki

Respuestas:

14

Los archivos rastreados con enlaces múltiples no harán que el almacén de objetos de Git crezca mucho, ya que cada enlace estará representado por el mismo objeto blob. Sin embargo, su árbol de trabajo podría terminar creciendo debido a enlaces rotos.

Git no rastrea si los archivos de árbol rastreados y en funcionamiento son enlaces duros al mismo archivo.

Git dejará solo archivos de árbol enlazados, rastreados y en funcionamiento si no le pide que haga algo que implique modificar el contenido de esos nombres de ruta o eliminar las entradas del directorio de nombres de ruta. Pero, si tuviera que (por ejemplo) verificar una confirmación o rama antigua y luego volver a su rama / confirmación normal más reciente, entonces Git terminará "rompiendo" los enlaces duros (reemplazando los nombres de ruta afectados con nuevos (pero idénticos) ) en lugar de recrear su situación de enlace múltiple).

Para recuperar su estado de enlace múltiple, puede escribir un programa para buscar archivos idénticos y volver a vincularlos a cualquiera de los archivos. Tal operación de "reenlace" puede ser más complicada si todos los enlaces no están en el árbol de trabajo o, al menos, no en una ubicación "externa" fácilmente identificable (es decir, probablemente será difícil recuperar los enlaces si está enlazando) Archivos "aleatorios" de todo su directorio de inicio en un repositorio de "copia de seguridad" y usando Git para modificar el árbol de trabajo).

La idea ha surgido en la lista de correo de Git:

Chris Johnsen
fuente
Para los Linux basados ​​en Debian, existe la herramienta de enlace duro ( packages.debian.org/search?keywords=hardlink ) que puede realizar esta operación de enlace. desafortunadamente, no es muy rápido
Daniel Alder
Corro hardlinkcomo un trabajo nocturno /var/lib/jenkins.
Amedee Van Gasse