Перейдите в корень вашего рабочего каталога.
svn add . --force
(Это рекурсивно обходит ваш рабочий каталог и svn add
к каждому найденному файлу, который еще не находится под контролем версий.)
Далее сделайте это:
svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )
(Это запускает svn status
. Команда status рекурсивно выдает список всего, что изменилось в рабочем каталоге. Странная команда sed
находит все строки, начинающиеся с "!"(именно так svn status указывает на удаленный файл.))
Теперь сделайте:
svn commit
Не то, чтобы я действительно советую делать это. Было бы предпочтительнее просто использовать "svn rm oldfile" вместо "rm oldfile", когда вы делаете свои модификации. "Svn add. --Force" тоже не так уж и хорош: он будет проверять все временные файлы и объектные файлы, которые вы генерируете во время тестирования. Было бы лучше просто "svn add newfile", когда вы заботитесь о добавлении нового файла.
Обычно я запускаю «svn status -u» перед каждой проверкой, чтобы получить четкое представление о том, что изменилось в моей рабочей копии.
Я нашел ответ для части svn rm по адресу: https://stackoverflow.com/questions/1265122/how-can-i-programmatics-detect-missing-files-in-tar-archive-and-delete-them-f?rq = 1, что, в свою очередь, относится к http://geryit.com/blog/command-line-subversion-practices/.