У нас была похожая проблема, и я нашел лучшее решение , чем предложенные здесь, поэтому я делюсь им сейчас:
Для коммитов сделано вручную , теперь TortoiseSVN исправляет регистр имен файлов автоматически: он переименовывает локальные файлы в соответствии с регистром версионных файлов (просто открывая окно фиксации в этом путь), поэтому не должно быть без проблем с этим.
Для автоматических фиксаций вы не можете использовать TortoiseSVN, так как для этого требуется вручную подтвердить фиксацию (открывается окно фиксации с определенным сообщением, но вам все равно нужно нажать кнопку ОК). Но если вы напрямую используете Subversion (svn) для создания автоматического коммита, то у вас будет проблема с учетом регистра для этого коммита, поскольку Subversion по-прежнему чувствительна к регистру ...
Как решить эту проблему для автоматических коммитов? Ну, я попробовал смешанный подход: создать пакетный файл с именем FixCaseSensitiveFileNames.bat
, который вы можете назвать, передавая путь, который вы хотите исправить перед фиксацией, например: call FixCaseSensitiveFileNames.bat C:\MyRepo
. Пакетный файл открывает TortoiseSVN для ручной фиксации, которая автоматически исправляет имена файлов, но затем закрывает окно фиксации после предварительно определенной паузы, поэтому вы можете продолжить автоматическую фиксацию с уже фиксированными именами файлов с учетом регистра. Пауза эмулируется с помощью локального пинга, и вы можете изменить продолжительность, изменив аргумент -n
, который является числом попыток. Если вы не сделаете достаточно длинную паузу, существует риск закрыть окно TortoiseSVN, прежде чем оно исправится. Вот он код командного файла :
@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
Это полностью решило проблему для нашего автоматизированного ежедневного процесса сборки. Единственная проблема, которую я вижу, это то, что окно откроется на несколько секунд, что не было проблемой для нашей ежедневной сборки, но если это проблема для вас, то могут быть и обходные пути ...