Сведения о вопросе

Solllo

05:33, 29th August, 2020

Теги

windows   svn   tortoisesvn    

Могу ли я сделать Subversion + TortoiseSVN нечувствительным к регистру для Windows?

Просмотров: 419   Ответов: 7

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



  Сведения об ответе

pumpa

12:05, 13th August, 2020

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

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


  Сведения об ответе

#hash

15:32, 20th August, 2020

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

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

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

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


  Сведения об ответе

dump

21:26, 21st August, 2020

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


  Сведения об ответе

PIRLO

04:50, 24th August, 2020

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

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


  Сведения об ответе

lesha

22:24, 14th August, 2020

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

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


  Сведения об ответе

piter

17:08, 26th August, 2020

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


  Сведения об ответе

FAriza

10:25, 1st August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться