Переименованный файл, теперь 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
Это, по-видимому, указывает, что мне нужно зафиксировать как предыдущий файл (который был переименован), так и новый переименованный файл. Как я могу передать файл, который больше не существует...?
Ответы
Ответ 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 делает эту ошибку.
В этом случае это означает ", пожалуйста, не делайте папку/файл, отмеченные как удаленные"