Mientras que la clonación de un repositorio de git desde Linux a un sistema Windows, recibo el siguiente error en el checkout de la fase:

$ git clone [email protected]:/git/git_repo.git git_WA
La clonación en ‘git_WA’…
[email protected] la contraseña:
remoto: Contar objetos: 500846, de hecho.
remoto: la Compresión de los objetos: 100% (118676/118676), hecho.
remoto: Total 500846 (delta 307739), reutilizados 483023 (delta 291136)
Recepción de objetos: 100% (500846/500846), 907.54 MiB | 9.04 MiB/s, de hecho.
La resolución de deltas: 100% (307739/307739), hecho.

error: no se puede crear el archivo RealR**************************************************************************************************************************************************************************************************************validation.xml (No existe el fichero o el directorio)
Comprobación de los archivos de salida: 100% (441329/441329)
Comprobación de los archivos de salida: 100% (441329/441329), hecho.
hecho.

Caso-2: Clonado como desnudo repo, check-out a todos, desde la simple repo local => Mismo error.

Caso 3: Clonar el repo en C:\ directamente, comprobación de éxito, No hay error.

-> Se ve como problema con nombre de archivo/ruta de archivo limitación de la longitud.

Caso 4: comprobación de los mismos archivos desde el SVN repo. Capaz de comprar en cualquier lugar sin ningún problema. Por lo tanto no es problema de windows lado. (Sí, l han de datos de SVN y GIT tanto, acabo de migrar de SVN a GIT).

Por lo tanto, el problema tiene que estar dentro de msysgit, algunos filepath limitación de la longitud. Puede la longitud de la ruta en gitclient/msysgit ser ajustado?

Edit1: Toda la operación intentado con TortoiseGIT cliente v1.8.0 y git bash: git versión 1.8.0.msysgit.0.
Edit2: se ha Añadido el comando real utilizado, mientras que la clonación.

OriginalEl autor rohit | 2013-02-11

5 Comentarios

  1. 15

    He experimentado problemas similares cuando la comprobación de un proyecto en un directorio de Windows que tenía 67 (Windows) o 76- (cygwin) carácter ruta de acceso base – cuando se añade a la de la longitud del recorrido de los archivos protegidos, superó Windows’ ruta-límite de longitud:

    git checkout -f HEAD
    error: unable to create file <194-character filepath> (No such file or directory)
    fatal: cannot create directory at '<187-character directory path>': No such file
    or directory
    

    He resuelto el problema de la comprobación hacia fuera para c:\git que, a los 6 o 15 caracteres de longitud, se mantuvo el máximo de la longitud del recorrido bajo el límite de las Ventanas.

    Este fue un problema para mí. Un buen indicador de ello es que el problema es que un archivo con una particular nombre largo se producirá después de que otros archivos de tener éxito.

    OriginalEl autor StevenHB

  2. 6

    Tratar:

    git config --system core.longpaths true
    

    Esto va a permitir a la comprobación de los archivos, incluso con más rutas de los archivos. El problema con esto sería cuando se trate de eliminarlo, ya que Windows no le permitirá eliminar una ruta más tiempo del permitido umbral. La solución es cambiar el nombre de las carpetas en el repositorio local, de modo que la longitud total de la ruta de acceso es menor. Por ejemplo, una ruta de acceso que se alpha/beta/gamma/universe.txt, puede ser limitado a 1/2/3/universe.txt, de modo que la longitud es menor a la de windows tamaño de archivo umbral.

    ejecute desde un Git Bash con privilegios elevados (ejecutar como administrador)

    OriginalEl autor Waqas Shah

  3. 5

    Muchas Api de Windows se limitan a 260 símbolos para la ruta y nombre de archivo. Así que git no puede crear archivos con los nombres de más de 260 símbolos. Sistema de archivos NTFS que realmente soporta nombres más largos (32k), pero no hay ninguna manera fácil para permitir que los nombres largos de los programas.

    Solución 1: mover el proyecto a una nueva ubicación, más cerca en el disco raíz.
    Ventaja:

    • Todo debería funcionar bien (suponiendo que no hay ningún archivo con la ruta de más de 260)

    Desventaja:

    • Tienes que cambiar la ubicación del proyecto

    Solución 2: crear un Cruce a su carpeta de proyecto a partir de una carpeta que está más cerca del disco de la raíz y hacer git clone desde el cruce de la carpeta. Usted puede hacer esto con mklink comando o Enlace De Extensión De Shell.

    Ventaja:

    • Usted puede tener nombres de archivo largos (más de 260)
    • Puede preservador de la ubicación del proyecto
    • Usted puede eliminar de forma segura cruce después de la primera clonación (si no necesitas trabajar con archivos que violen 260 símbolo de límite en la ubicación original)

    Desventaja:

    • De nombre de archivo completo en la intersección todavía tiene que ser menos de 260 símbolos. De lo contrario, esta solución no será de ayuda.
    • Si desea modificar los archivos con larga
    O usted puede cambiar de registro para permitir que los trayectos más largos: lifehacker.com/…

    OriginalEl autor Alexei Osipov

  4. 2

    La única sugerencia que he visto, teniendo en cuenta un problema similar, fue:

    Solución: utilice http://www.cygwin.com/

    O, al menos, comprobar si un checkout en una git-sesión de bash de msysgit funciona mejor.


    Actualización de Mayo de 2015 (2 años después):

    Nota: el última 2.4.1 git-para-windows propone:

    core.longpaths::
    

    Habilitar largo camino (> 260) apoyo para builtin los comandos de Git para Windows.

    Esto está desactivado por defecto, como las rutas largas no son compatibles con el Explorador de Windows, cmd.exe y el Git para Windows herramienta de la cadena (msys, bash, tcl, perl…).

    Sólo activar esta opción si usted sabe lo que está haciendo y están preparados para vivir con un par de peculiaridades.

    He probado todas estas operaciones con git bash: git versión 1.8.0.msysgit.0, y TortoiseGIT cliente v1.8.0 que utiliza internamente el mismo msysgit. Editado la pregunta, con la misma información.
    cygwin podría ofrecer un entorno completamente diferente, que debe apoyar más la longitud de la ruta (stackoverflow.com/questions/3144082/…). Basado en Windows git-el cliente no puede obtener la ruta de acceso de la ruta de Windows limitación de la longitud.
    He probado con git bash, que se ejecute siempre con cygwin medio ambiente. Además, me han independiente de cygwin instalado en mi sistema. Así, el tratado de la caja con cygwin así, pero enfrentan el mismo problema. Estoy haciendo mal en cualquier lugar.
    Nota, es mi entendimiento de que git bash es diferente de cygwin (de nuevo, stackoverflow.com/questions/3144082/…). Pero la misma limitación se podría aplicar (cygwin.com/ml/cygwin-patches/2005-q1/msg00084.html), de hecho.

    OriginalEl autor VonC

Dejar respuesta

Please enter your comment!
Please enter your name here