Подтвердить что ты не робот

Переименованный файл, теперь SVN не позволяет мне совершать?

Я разрабатываю сайт ColdFusion, используя Aptana. Мы используем SVN для контроля версий.

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

'SVN Commit' has encountered a problem.
org.apache.subversion.javahl.ClientException: Illegal target for the requested operation
svn: Commit failed (details follow):
svn: Cannot commit 'R:\myPath\My-New-File-Name.cfm' because it was moved from 'R:\myPath\My-Old-File-Name.cfm' which is not part of the commit; both sides of the move must be committed together

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

4b9b3361

Ответ 1

Зафиксируйте каталог, а не файл.

Подумайте о директории в виде текстового файла, содержащего список файлов, которые он содержит, и вы можете увидеть, что для успешной фиксации вам необходимо обновить сам каталог, чтобы он мог удалить старую запись и добавить новую запись. Это будет отображаться в SVN как удаление старого и добавление нового файла (т.е. 2 ​​изменения в каталоге, а не 1 изменение файла)

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

Ответ 2

Различные клиенты, похоже, справляются с этим лучше, чем другие.

AnkhSVN для Visual Studio встречает эту ошибку и не может справиться с ней.

TortiseSVN (расширение оболочки) работает, хотя - он знает, чтобы удалить старый файл и добавить новый.

Итак, если вы работаете в Windows, простой способ обойти это - использовать TortiseSVN из Explorer для совершения фиксации в каталоге (который удаляет старое имя файла и добавляет новый).

Ответ 3

В eclipse с subversion я смог обойти эту запутанную ошибку, выполнив Team- > synchronize в папке с достаточно высоким уровнем в проекте, которая охватывала как старые, так и новые имена файлов и местоположения. Если вы переместили и переименовали свои файлы, или если вы не можете понять, что именно происходит, не может повредить синхронизацию на самом верхнем уровне вашего проекта.

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

Ответ 4

Добавьте файл со старым именем и выполните фиксацию. Затем удалите файл снова, выполните фиксацию.

Ответ 5

Существует вероятность того, что один из файлов будет переименован.

Посмотрите на имена файлов в ошибке и посмотрите, соответствует ли это вашим файлам.

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

Ответ 6

Если что-то действительно запуталось, самым простым решением является удаление папки из репозитория, а затем добавление ее обратно в текущую форму.

Удаление и замена SVN:

  • Скопируйте папку, содержащую все ваши изменения, во временное место.
  • Используйте SVN Delete в папке и затем выполните транзакцию.
  • Скопируйте резервную копию обратно в рабочую копию и зафиксируйте.

Ответ 7

TortiseSVN откройте файл в проводнике Windows. выберите файл, щелкните правой кнопкой мыши, используйте TortiseSVN, и добавьте в список игнорирования

тогда файл избавится от SVN, станет нормальным файлом. таким образом, вы можете выполнить операцию для добавления файла в SVN и отправить его.

Я использую решение для решения проблемы.

Ответ 8

Для Visual Studio 2015 я отключил исправление для Ankh SVN. В моем случае ошибка возникла в результате переименования "Form1.cs" во время разработки (и, возможно, ее перемещения). Это вызвало проблемы со старыми и новыми файлами .resx.

  • Выделите проект в обозревателе решений, чтобы открыть окно просмотра ожидающих изменений,
  • Выберите "Файл" > "Subversion" > "Отложенные изменения"
  • Снимите флажок
  • Проверьте два или более файлов, которые необходимы для подрывной работы. Если "новый" нет в списке, измените его содержимое на недискриминационный способ, чтобы он отображался в списке.
  • Запустить фиксацию.

Надеюсь, это сработает для вас.

Ответ 9

svn commit 'R:\myPath\My-New-File-Name.cfm' 'R:\myPath\My-Old-File-Name.cfm' -m "сообщение"

работает для меня. Вам просто нужно включить удаленный файл.

Ответ 10

Если вы используете IntelliJ IDEA и совершаете фиксацию с TortoiseSVN, иногда бывает, что папка не удаляется IDEA, а Subversion делает эту ошибку.

В этом случае это означает ", пожалуйста, не делайте папку/файл, отмеченные как удаленные"