¿Puedo hacer que Subversion + TortoiseSVN sea insensible a mayúsculas y minúsculas para Windows?


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 muy bien! Sin embargo, de vez en cuando mi FoxPro IDE cambiará el caso de una extensión de archivo sin previo aviso donde "programa.prg " se convierte en " programa. PRG") TortoiseSVN aparentemente toma esto para significar que el primer archivo fue eliminado, siendo marcado como "desaparecido" y el segundo nombre aparece como "no versionado", causando estragos en mi capacidad para rastrear los cambios en el archivo. Entiendo que Subversion tiene su origen en el mundo sensible a mayúsculas y minúsculas de * nix, pero, ¿hay alguna manera de controlar este comportamiento en Subversion o TortoiseSVN para que sea insensible a mayúsculas y minúsculas cuando se usa con Windows?

Author: Simon, 2008-08-18

7 answers

Desafortunadamente, Subversion distingue entre mayúsculas y minúsculas. Esto se debe al hecho de que los archivos de Subversion pueden ser extraídos tanto en sistemas de archivos sensibles a mayúsculas y minúsculas (por ejemplo, *nix) como en sistemas de archivos insensibles a mayúsculas y minúsculas (por ejemplo, Windows, Mac).

Este script de gancho pre-commit puede ayudarte a evitar problemas cuando registras 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 verificar entrada / salida. Será una PITA, pero tal vez tu mejor apuesta.

 20
Author: jacobko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-22 12:40:31

Windows admite la sensibilidad de 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 del registro (SFU/Tools for Unix y Ultimate Windows 7 ya tiene esta entrada del registro configurada para que Windows admita nombres de archivo que distinguen entre mayúsculas y minúsculas).

Windows está diseñado fuera de Unix, pero cosas como Explorer.exe y otros programas están diseñados para no permitir la sensibilidad de mayúsculas y minúsculas para la compatibilidad con versiones anteriores y la seguridad (sobre todo cuando se trata de dos ejecutando bloc de notas.exe vs el BLOC de notas.EXE, donde all caps es un virus o malware).

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

TortiousSVN simplemente no admite pasar esta bandera posix mientras crea y cambia el nombre de los archivos.

 4
Author: TamusJRoyce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-20 20:32:08

Uso TortoiseSVN con VFP, y en su mayoría maneja sin problemas el cambio de caja. La única vez que no lo hace es si tengo el archivo abierto en el IDE cuando intento hacer la confirmación: el bloqueo de archivos que VFP tiene lo confunde. ¿Es aquí donde entra tu problema, o hay otros problemas?

Hice una presentación en FoxForward el año pasado 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 ayudarle a trabajar con Subversion en VFP. http://docs.google.com/Presentation?id=dfxkh6x4_3ghnqc4

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-22 13:25:26

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 guardar los cambios la extensión es minúscula. Si realiza un comando modificar desde la ventana de comandos y guarda los cambios, la extensión es mayúscula. Al parecer, los programadores de Microsoft no se preocuparon por el caso de la extensión de ser el mismo.

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-24 14:00:17

Kit, comentaste anteriormente que los archivos fuente basados en binarios de VFP son difíciles de trabajar en Subversion. El enlace que di anteriormente menciona un par de herramientas para hacerlo más fácil, pero con la que trabajo es la utilidad TwoFox de Christof Wollenhaupt converts 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

 1
Author: SarekOfVulcan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 13:53:15

No, seguro que no puede. SVN distingue entre mayúsculas y minúsculas a menos que deba reescribir el código de alguna manera ... es de código abierto.

 0
Author: dewalla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-17 22:20:28

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

  • Para confirmaciones hechas manualy, ahora TortoiseSVN corrige el caso de los nombres de archivo automáticamente: 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 no debería haber ningún problema con eso.

  • Para confirmaciones automatizadas no puede usar TortoiseSVN, como requiere que confirme manualmente la confirmación (abre la ventana de confirmación con un mensaje específico, pero aún tiene que hacer clic en aceptar). Pero si usa directamente Subversion (svn) para hacer una confirmación automatizada, 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 resolver esto para confirmaciones automatizadas? Bueno, probé un enfoque mixto: crear un archivo por lotes llamado FixCaseSensitiveFileNames.bat que puede llamar pasando la ruta que desea arreglar antes de la commit, 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 archivo, 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 archivo que distinguen entre mayúsculas y minúsculas ya arreglados. La pausa se emula con un ping local, y puede cambiar la duración cambiando el argumento -n, que es el número de intentos. Si no hace una pausa lo suficientemente larga, existe el riesgo de cerrar la TortoiseSVN ventana antes de que haga su arreglo mágico. Aquí está 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 una ventana se abrirá durante unos segundos, lo que no fue un problema para nuestra compilación diaria, pero si eso es un problema para usted, también podría haber soluciones...

 0
Author: Hugo González Castro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-18 10:13:32