Могу ли я сделать Subversion + TortoiseSVN без учета регистра для Windows? - PullRequest
24 голосов
/ 18 августа 2008

Я использовал Subversion для управления кодом с TortoiseSVN для взаимодействия с сервером в течение последних нескольких месяцев, и в целом все шло отлично! Однако иногда моя среда разработки FoxPro без предупреждения меняет регистр расширения файла, где " program.prg " становится " program. PRG ") TortoiseSVN, очевидно, занимает это означает, что первый файл был удален, помечен как «отсутствующий», а второе имя названо «не версионным», что наносит ущерб моей способности отслеживать изменения в файле. Я понимаю, что Subversion берет свое начало в чувствительном к регистру мире * nix, но есть ли способ контролировать это поведение в Subversion или TortoiseSVN, чтобы оно не зависело от имени файла при использовании с Windows?

Ответы [ 7 ]

20 голосов
/ 18 августа 2008

К сожалению, Subversion чувствительна к регистру. Это связано с тем, что файлы из Subversion можно извлекать как в чувствительных к регистру файловых системах (например, * nix), так и в нечувствительных к регистру файловых системах (например, Windows, Mac).

Этот сценарий перехвата предварительной фиксации может помочь вам избежать проблем при проверке файлов. Если это не решит вашу проблему, лучше всего написать небольшой скрипт, чтобы убедиться, что все расширения в нижнем регистре, и запускать его каждый раз перед тем, как регистрироваться. Это будет PITA, но, возможно, ваш лучший выбор.

4 голосов
/ 21 мая 2010

Windows поддерживает чувствительность к регистру, но вы должны отправить ей правильные флаги POSIX на CreateFile из Windows API! Может потребоваться изменить раздел реестра (в SFU / Tools для Unix и Ultimate Windows 7 эта запись реестра уже установлена, поэтому Windows поддерживает имена файлов с учетом регистра).

Windows спроектирована на основе Unix, но такие вещи, как Explorer.exe и другие программы, предназначены для запрета чувствительности к регистру для обратной совместимости и безопасности (в основном при работе с dos, выполняющим notepad.exe, а не NOTEPAD.EXE, где все заглавные буквы это вирус или вредоносное ПО).

Но Vista + имеет атрибуты безопасности, которые делают это устаревшим.

TorribleSVN просто не поддерживает передачу этого флага posix при создании и переименовании файлов.

2 голосов
/ 24 февраля 2009

Я считаю, что случайные прописные и строчные буквы на расширениях не случайны вообще. Я помню тестирование на этом. Если вы измените программу из менеджера проекта. Нажав на кнопку Изменить, скажем. А затем сохраните изменения расширения нижнего регистра. Если вы выполните команду изменения из командного окна и сохраните изменения, расширение будет прописным. По-видимому, кодеры в Microsoft не беспокоились о том, что случай расширения такой же.

2 голосов
/ 22 августа 2008

Я использую TortoiseSVN с VFP, и он в основном без проблем справляется с переворотом. Единственный раз, когда этого не происходит, у меня открывается файл в IDE, когда я пытаюсь выполнить коммит: блокировка файла, которую держит VFP, смущает его. Это ваша проблема, или есть другие проблемы?

В прошлом году я выступал на FoxForward с презентацией об использовании VFP с Subversion: большая часть презентации была посвящена командной строке, но в конце есть пара слайдов, на которых есть ссылки на инструменты, помогающие работать с Subversion в VFP. , http://docs.google.com/Presentation?id=dfxkh6x4_3ghnqc4

1 голос
/ 15 сентября 2008

Кит, вы прокомментируете выше, что двоичные исходные файлы VFP трудны для работы в Subversion. Ссылка, которую я дал выше, упоминает несколько инструментов, чтобы упростить ее, но я работаю с утилитой Christof Wollenhaupt TwoFox - она ​​конвертирует проект VFP в текстовый. Вы должны запустить его вручную, но у меня нет проблем с этим.

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

0 голосов
/ 18 июля 2018

У нас была похожая проблема, и я нашел лучшее решение , чем предложенные здесь, поэтому я делюсь им сейчас:

  • Для коммитов сделано вручную , теперь 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

Это полностью решило проблему для нашего автоматизированного ежедневного процесса сборки. Единственная проблема, которую я вижу, это то, что окно откроется на несколько секунд, что не было проблемой для нашей ежедневной сборки, но если это проблема для вас, то могут быть и обходные пути ...

0 голосов
/ 02 августа 2010

Нет, ты точно не можешь. SVN чувствителен к регистру, если вы не должны были как-то переписывать код ... он является открытым исходным кодом.

...