Предотвращение проблем с оболочкой файлов в Subversion - PullRequest
3 голосов
/ 11 сентября 2008

Мы столкнулись с проблемой при использовании Subversion в Windows. Разработчик зафиксировал файл foo.Data.sql, а позже другой разработчик зафиксировал файл с именем foo.data.sql. Естественно, это вызвало проблему на клиентах Windows (все клиенты являются Windows в наших средах), потому что файлы чувствительны к регистру в Subversion, но не в Windows.

Нам удалось решить эту проблему, удалив один из файлов непосредственно в хранилище, но у меня все еще есть два вопроса:

  1. Как разработчик может сделать это с помощью клиента Windows? Есть ли у него неверная рабочая копия, или есть ошибка в клиенте (TortoiseSVN)?
  2. Как мы можем предотвратить внесение подобных изменений в репозиторий (т. Е. Кто-нибудь написал сценарий перехвата, который выполняет проверку работоспособности для проблем с корпусом файла)?

Ответы [ 3 ]

4 голосов
/ 11 сентября 2008

Определенно, есть скрипт-ловушка, который проверяет чувствительность к регистру - Sourceforge имеет его в качестве одного из вариантов. Появляется быстрый Google: http://www.subversionary.org/howto/using-check-case-insensitive-py-on-windows и http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/case-insensitive.py

Проблема возникнет на платформе Windows, если пользователь 1 добавил foo.data.sql, а пользователь 2 добавил foo.Data.sql до получения обновления от пользователя 1.

Надеюсь, это поможет:)

2 голосов
/ 11 сентября 2008

В Windows файлы чувствительны к регистру, но сохраняют регистр. Вы можете переименовать файл, изменив регистр, и Windows сохранит изменения. Проблема возникает, когда Subversion пытается создать второй файл. Windows сообщает, что файл уже существует.

Если вы хотите объединить два файла в одну копию, вместо удаления файла в хранилище вы можете переименовать поврежденный файл в хранилище (то есть добавить суффикс, например «.temp»), обновить клиент объединить в хороший файл, а затем удалить плохой файл.

0 голосов
/ 11 сентября 2008

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

2; Чек TortoiseSVN FAQ

...