¿Puedo hacer que Subversion + TortoiseSVN no distinga entre mayúsculas y minúsculas para Windows?

StackOverflow https://stackoverflow.com/questions/14582

  •  08-06-2019
  •  | 
  •  

Pregunta

He estado usando Subversion para el control de código con TortoiseSVN para interactuar con el servidor durante los últimos meses y, en general, ¡ha ido genial!Sin embargo, ocasionalmente mi IDE de FoxPro cambiará el caso de una extensión de archivo sin previo aviso donde "programa.prg"se convierte en"programa.PRG") TortoiseSVN aparentemente interpreta que esto significa que el primer archivo fue eliminado, siendo marcado como "perdido" y el segundo nombre aparece como "sin versión", causando estragos en mi capacidad para rastrear cambios en el archivo.Entiendo que Subversion tiene su origen en el mundo de *nix, que distingue entre mayúsculas y minúsculas, pero, ¿hay alguna forma de controlar este comportamiento en Subversion o TortoiseSVN para que los nombres de archivos no distingan entre mayúsculas y minúsculas cuando se usan con Windows?

¿Fue útil?

Solución

Desafortunadamente, Subversion distingue entre mayúsculas y minúsculas.Esto se debe al hecho de que los archivos de Subversion se pueden extraer tanto en sistemas de archivos que distinguen entre mayúsculas y minúsculas (por ejemplo, *nix) como en sistemas de archivos que no distinguen entre mayúsculas y minúsculas (por ejemplo, Windows, Mac).

Este script de enlace previo a la confirmación puede ayudarle a evitar problemas al registrar archivos.Si no resuelve su problema, mi mejor sugerencia es escribir un pequeño script para asegurarse de que todas las extensiones estén en minúsculas y ejecutarlo cada vez antes de realizar el check-in/check-out.Será un PITA, pero quizás sea tu mejor opción.

Otros consejos

Windows admite la distinción entre mayúsculas y minúsculas, pero debe enviarle los indicadores POSIX correctos en CreateFile desde la API de Windows.Es posible que sea necesario cambiar una clave de registro (SFU/Tools para Unix y Ultimate Windows 7 ya tiene esta entrada de registro configurada, por lo que Windows admite nombres de archivos que distinguen entre mayúsculas y minúsculas).

Windows está diseñado a partir de Unix, pero cosas como Explorer.exe y otros programas están diseñados para no permitir la distinción entre mayúsculas y minúsculas por compatibilidad con versiones anteriores y seguridad (principalmente cuando se trata de dos que ejecutan notepad.exe vs.NOTAPAD.EXE, donde todo en mayúsculas es un virus o malware).

Pero Vista+ tiene atributos de seguridad que lo hacen obsoleto.

TortiousSVN simplemente no admite pasar este indicador posix al crear y cambiar el nombre de archivos.

Utilizo TortoiseSVN con VFP y maneja casi sin problemas el cambio de caso.La única vez que no es así es si tengo el archivo abierto en el IDE cuando intento realizar la confirmación:el bloqueo de archivos que tiene VFP lo confunde.¿Es aquí donde surge su problema o hay otros problemas?

El año pasado hice una presentación en FoxForward sobre el uso de VFP con Subversion:la mayor parte de la presentación trató sobre la línea de comandos, pero hay un par de diapositivas al final que tienen enlaces a herramientas que le ayudarán a trabajar con Subversion en VFP. http://docs.google.com/Presentation?id=dfxkh6x4_3ghnqc4

Creo que las mayúsculas y minúsculas aleatorias en las extensiones no son aleatorias en absoluto.Recuerdo haber probado esto.Si modifica un programa desde el gestor de proyectos.Al hacer clic en el botón modificar digamos.Y luego guarde los cambios, la extensión está en minúsculas.Si realiza un comando de modificación desde la ventana de comandos y guarda los cambios, la extensión está en mayúsculas.Aparentemente, los programadores de Microsoft no se preocuparon de que el caso de extensión fuera el mismo.

Kit, comentaste arriba que es difícil trabajar con los archivos fuente binarios de VFP en Subversion.El enlace que di arriba menciona un par de herramientas para hacerlo más fácil, pero con la que trabajo es la utilidad TwoFox de Christof Wollenhaupt: convierte un proyecto VFP a solo texto.Tienes que ejecutarlo manualmente, pero no tengo ningún problema con eso.

http://www.foxpert.com/docs/cvs.en.htm

No, seguro que no puedes.SVN distingue entre mayúsculas y minúsculas a menos que reescribas el código de alguna manera...él es fuente abierta.

Tuvimos un problema similar y yo encontró una mejor solución que los expuestos aquí, así que lo comparto ahora:

  • Para confirmaciones realizadas manualmente, ahora TortoiseSVN corrige automáticamente las mayúsculas y minúsculas de los nombres de los archivos:cambia el nombre de los archivos locales para que coincidan con el caso de los archivos versionados (simplemente abriendo la ventana de confirmación en esa ruta), por lo que debería haber ningún problema con ese.

  • Para confirmaciones automatizadas no puede usar TortoiseSVN, ya que requiere que confirme manualmente la confirmación (abre la ventana de confirmación con un mensaje específico, pero aún debe hacer clic en Aceptar).Pero si usa directamente Subversion (svn) para realizar una confirmación automática, entonces tendrá el problema de distinguir entre mayúsculas y minúsculas en esa confirmación, ya que Subversion todavía distingue entre mayúsculas y minúsculas...

¿Cómo solucionar esto para las confirmaciones automatizadas?Bueno, probé un enfoque mixto:creando un archivo por lotes llamado FixCaseSensitiveFileNames.bat que puedes llamar pasando la ruta que deseas arreglar antes de la confirmación, por ejemplo: call FixCaseSensitiveFileNames.bat C:\MyRepo.El archivo por lotes abre TortoiseSVN para una confirmación manual, y eso corrige automáticamente los nombres de los archivos, pero luego cierra la ventana de confirmación después de una pausa predefinida, para que pueda continuar con la confirmación automática con los nombres de archivos que distinguen entre mayúsculas y minúsculas ya corregidos.La pausa se emula con un ping local y puede cambiar la duración cambiando el -n argumento, que es el número de intentos.Si no hace una pausa lo suficientemente larga, existe el riesgo de cerrar la ventana de TortoiseSVN antes de que realice su solución mágica.Aquí lo tienes el código del archivo por lotes:

@echo off
REM *** This BAT uses TortoiseSVN to fix the case-sensitive names of the files in Subversion
REM *** Call it before an automated commit. The Tortoise commit fixes this issue for manual commits,
REM *** so the trick is opening the commit window and close it automatically after a pause (with ping).
REM *** %1 = path to be fixed

start TortoiseProc.exe /command:commit /path:"%1"
ping localhost -n 10 >nul
taskkill /im TortoiseProc.exe

Esto resolvió totalmente el problema de nuestro proceso de compilación diario automatizado.El único problema que veo es que se abre una ventana durante unos segundos, lo cual no fue un problema para nuestra compilación diaria, pero si eso es un problema para usted, también podría haber soluciones...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top