Subversion, переименование, Wha? - PullRequest
       72

Subversion, переименование, Wha?

5 голосов
/ 14 декабря 2010

Так что у меня есть забавная проблема.

Subversion, вам не разрешено переименовывать предметы с одинаковыми именами, если разница только в заглавных буквах. Netbeans имеет подрывную деятельность. Netbeans позволяет переименовывать файлы, если изменяется заглавная буква.

Я переименовал нечто, называемое eventCreator.php, в EventCreator.php в subversion и загрузил (это класс). Все прошло нормально в Netbeans. На самом деле я сделал еще около 10 коммитов. Я пытался загрузить его на другой компьютер, и это ошибка, которая происходит
"Не могу открыть файл
C: \ xampp \ htdocs \ MyProject \ scripts.svn \ tmp \ text-base \ eventCreator.php.svn-base ':
Системе не удается найти указанный файл."

Мой репозиторий находится в DreamHost. Итак, я захожу на dreamhost и могу зайти в папку сценариев и увидеть в репозитории и eventCreator.php, и EventCreator.php, но я не могу скачать его ни с netbeans, ни с tortoiseSVN.

Ответы [ 5 ]

6 голосов
/ 14 декабря 2010

Удалить ненужный файл с

svn del http://domain/path/to/eventCreator.php

Или вы можете даже открыть repo browser (из контекстного меню Subversion) и удалить файл без использования скучных консольных команд; -)

3 голосов
/ 18 октября 2011

Subversion 1.7 теперь, кажется, обрабатывает , регистр только переименовывает в Windows.

2 голосов
/ 14 декабря 2010

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

Чтобы решить эту проблему, ответ zerkms находится на правильном пути. Удалите воспроизведение файла, который вам не нужен, с помощью браузера репозитория или какого-либо инструмента (при необходимости, командной строки), который работает непосредственно с репозиторием на сервере.

Чтобы это не повторилось, используйте сценарий case-insensitive.py из проекта Subversion в своем сценарии ловушки перед фиксацией. Он проверит, есть ли уже файл в репозитории с другим случаем, когда коммит добавляет файл. Если это так, это позволит вам отклонить коммит, пока он не будет решен.

Поскольку у вас есть стороннее хранилище вашего хранилища Subversion, свяжитесь с ним, чтобы применить этот хук, если вы не можете использовать его инструменты управления.

1 голос
/ 05 февраля 2014

Проблема не в Subversion, а в Windows (и нет, у Mac такая же проблема, так что не начинайте чувствовать себя лучше на этом - фанат.)

В Windows случаи сохраняются,но не имеет значения в названии файла.В Windows это все один и тот же файл:

  • myfile.txt
  • MYfile.TXT
  • MYFILE.TXT
  • MyFiLe.TxT

К сожалению, Unix (за исключением Mac) сохраняет регистр и имеет большое значение.Для Unix все эти файлы - разные файлы.

Веселость возникает, когда вы сохраняете хранилище Subversion на хосте Linux / Unix, но используете клиент Windows / Mac.Репозиторий Unix Subversion отслеживает каждую вариацию заглавных букв как отдельный файл, но клиент Subversion на вашем ПК считает, что они все одинаковые.Существует два решения:

  • Использование компьютера с Linux для проверки, исправления проблемы и возврата ее обратно.
  • Использование синтаксиса URL svn delete http://.... для удаления одного изискаженные копии, поэтому есть только один файл с таким именем.
1 голос
/ 01 августа 2013

Другой способ - просто скопировать (щелкнуть правой кнопкой мыши Копировать проект) проект с новым именем. Это удалит все следы каталога .svn, и вы можете повторно зафиксировать его. Однако вы также потеряете ссылку на все редактирование, которое ранее было сделано и зафиксировано в SVN.

...