Un simple git clone
en la raíz del documento no es del todo exacto. La clonación de un repositorio GIT expuesto no es posible con servidores " tontos ", como una exposición accidental de .git a través de HTTP, a menos que git update-server-info
se ejecute en el servidor. Si bien algunos de los metadatos están disponibles, .git/objects
no siempre es posible obtener el contenido del directorio (también conocido como material jugoso). Es posible recuperar objetos que no están empaquetados . No debería ser el caso con una copia de trabajo / repositorio en un servidor de producción.
Es una historia diferente para una máquina de desarrollo con cambios comprometidos que no se envían a un control remoto. En este caso, generalmente no se llama al recolector de basura, a menos que invoque git gc
, por lo tanto, los archivos aún no forman parte de los archivos de paquete. Puede recuperar a través de HTTP los archivos comprometidos desde el último envío.
update-server-info básicamente crea un mapa de las referencias (.git / info / refs) y de los paquetes (.git / objects / info / packs). Si bien se pueden usar .git / package -refs para sustituir el primero, no es posible obtener los archivos de paquete sin tener habilitado el índice de directorio o SHA-1 de fuerza bruta (que es una mala idea desde el principio).
git clone http://website.com/.git
? Ese es el mayor riesgo (poder clonar el repositorio completo).