Я думаю, что вторая проблема OP вызвана ошибкой SVN, которая была исправлена в SVN 1.7.Вы изменяете структуру каталогов (перемещаете, переименовываете, удаляете) и фиксируете ее, но при использовании svn diff
исправление кажется «ничего не делать».
У меня возникла эта проблема при удалении каталогов, и симптомыто же самое, поэтому я предполагаю, что мы испытываем ту же «корневую ошибку».Для меня, обновление до svn 1.7 решило это, потому что svn 1.7 генерирует diff (патчи) по-разному.
Некоторые версии svn diff
вообще не помещают перемещенные / переименованные / удаленные файлы в diff вообще!
См .: http://svn.haxx.se/dev/archive-2004-03/0333.shtml. В этом архивном сообщении электронной почты из списка SVN DEV показаны разработчики, которые идентифицировали эту проблему, когда-то до выпуска 1.0.1, более десяти лет назад.Если вы следите за веткой, они, похоже, были полны решимости исправить это тогда, но даже 1.6 также оставляло вещи вне различий.Мне пришлось обновить до 1.7.
По сути, если svn <1.7 обнаружит, что каталог <code>svn delete ', он не будет рекурсировать и обрабатывать дочерние элементы, он просто остановится и ничего не поместит под это.дерево в дифф.Это не то, что нам нужно, мы хотим явного удаления для ВСЕХ дочерних элементов, чтобы патч, как упоминалось в другом ответе, удалял пустые файлы и каталоги через -E.Патч ничего не может сделать, если файл отсутствует в патче.
Использование SVN 1.7 Я сделал идентичный diff, как и раньше, но каждый файл в удаленном каталоге был явно в патче как имеющий все строкиудален (очищен), а затем patch
/ quilt
успешно удалил файлы и папки.Я предполагаю, что нечто подобное должно произойти в вашем случае с перемещением или переименованием.
GOTCHAS: Обновление до 1.7 оставит ваши рабочие копии бесполезными. Убедитесь, что вы зафиксировали свои изменения перед обновлением.Затем вам нужно снова оформить заказ. Редактировать: Клиент SVN 1.7 может восстановить ваши рабочие каталоги, но если это невозможно, вам, возможно, придется снова оформить заказ.Просто будьте осторожны, чтобы не потерять работу.