Подтвердите решение как SVN

Мы используем VisualStudio с SVN и VisualSVN.

Я реструктурировал решение путем перемещения (вырезать и вставлять / перетаскивать) и переименовывать много файлов.

Никогда не слышал жалобы от VisualSVN, теперь настало время его совершить, отказывается это сделать:

Commit failed (details follow):
Error: Cannot commit 'C:\Sources\xxx' 'xx\Model\Model.cs' because it was moved to
'xxx\NewModel.cs' which is not part of the commit; both sides of the move must be committed together

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

Мне нужно SVN, чтобы сохранить решение, как сейчас. Это нормально, что я не смогу отслеживать историю изменений для перемещенных и / или скопированных файлов.

Есть ли способ заставить совершить коммит?

3 ответа

На прошлой неделе я столкнулся с этой проблемой, когда произвел рефакторинг кода и переименовал множество файлов. Я смог исправить проблему следующим образом:

  1. Я зафиксировал папки моего проекта по одной (на уровне папок), чтобы изолировать проблему. В моем случае все кроме двух папок фиксируются без ошибок.
  2. В проблемных папках я фиксировал файлы по отдельности. Теперь у меня была зеленая точка рядом с каждым файлом, но две папки все еще оставались желтыми.
  3. Я попытался зафиксировать папку снова. Он выдал мне ту же ошибку, но теперь он просто показал файлы, с которыми у него были проблемы в диалоговом окне.
  4. Файлы, которые доставляли мне проблемы, были файлами, которые были удалены, а не на моем диске. Я щелкнул правой кнопкой мыши по каждому файлу и восстановил его. Это поместило файл обратно на мой диск, хотя он не был частью моего проекта в VS.
  5. Наконец, я добавил файл обратно в проект в VS, а затем немедленно удалил его и зафиксировал проект. Кажется, все исправлено.

TL; DR - если SVN считает, что файл является частью вашего проекта, но файл отсутствует на вашем жестком диске, он выдаст вам эту ошибку. Просто верните файл, чтобы вернуть его на свой диск. Чтобы очистить его, добавьте файл обратно в ваш проект, а затем удалите его в VS, чтобы синхронизировать все.

Кажется, что вы получаете ошибку, потому что вы делаете только часть действия перемещения. Ходы в Subversion состоят из svn copy (к новому месту нахождения) с последующим svn delete (оригинального предмета), поэтому обе стороны хода должны быть зафиксированы в одной ревизии вместе.

Я предлагаю следующие шаги:

  1. Visual Studio | VisualSVN | Совершить... Убедитесь, что обе стороны выполненного вами хода перечислены в представлении списка "Произведенные изменения", и попробуйте зафиксировать. Вы все еще получаете ту же ошибку?

  2. Если первый шаг не удался, перейдите в Visual Studio | VisualSVN | Windows | Ожидающие изменения. Щелкните правой кнопкой мыши корневой узел вашего решения / рабочей копии и выберите " Принять...". Все еще получаете ошибку?

  3. Перейти в Visual Studio | VisualSVN | Задайте Корень рабочей копии... и убедитесь, что корень рабочей копии указывает на корень WC вашего решения. Попытайтесь совершить после этого шага.

Пожалуйста, сначала нажмите кнопку "Обновить", после обновления в коммит-пакете Visual Studio будут включены правила удаления и переименования, необходимые для SVN.

Другие вопросы по тегам