Команда svn delete (svn rm), насколько я понял по руководству по SVN, подготавливает файл к удалению, а затем при up-е обязательно удаляет так же файл из рабочей копии.
Можно ли сделать так, чтобы SVN просто начал игнорировать конкретные файлы? (удалил их из репозитория, но не затрагивал их при этом в рабочих копиях)
Анатолий, откуда вы узнали про --keep-local?! В мануале я нигде такой опции не нашёл.
В результате эксперимента с опцией --keep-local выяснилось, что она всё-таки сохраняет файл в текущей рабочей копии, но всё равно удалит его в других при выполнении svn up. То есть это не всё равно не то.
Нет, речь совсем не об этом. Нужно именно удалить файл (файлы) из-под версионного контроля, а не просто начать игнорировать его в конкретной рабочей копии.
Нельзя заигнорить уже созданные файлы…
точнее надо удалить файлы (переместить) установить правила игнорирования выполнить коммит и затем вернуть назад
после этого файлы будут игнорироваться SVN ом
правила игнорирования можно править проще, например на папку log
svn propedit svn:ignore log
открывается редактор и мы можем задавать маски игнорирования * - игнорит все
*.log - игнорит по маске только .log
сохраняем коммитим
все установки игнорирования действуют только на новые файлы… даже если файлы небыли добавлены в SVN но существовали SVN будет на них ругаться что они не под контролем, их надо переместить сделать коммит и вернуть
«даже если файлы небыли добавлены в SVN» — были, были добавлены. Можете считать, что по ошибке. Речь не об игнорировании, речь о всего лишь удалении из-под версионного контроля.
anatoly_rr предложил замечательную опцию --keep-local, но она работает только один раз. При обновлении других рабочих копий эта опция уже игнорируется (т. к. видимо SVN не предусматривает того, что файл можно удалить из репозитория, но оставить его в рабочих копиях). Неужели такого нет?
Так почему бы не сделать так. Переместить файл, svn покажет что его нет, делаем svn rm он удаляет его из репо, коммит, затем ставим файл на место, SVN показывает что файл новый с вопросиком (в консоли), далее ставим на файл игнор, коммит, и SVN его не трогает больше, он остается локально
Потому что этот файл удалится в остальных рабочих копиях при апдейте, если я правильно понял автора. Т.е. если какой-то файл типа settings.conf, который, скажем, у всех разработчиков разный, был случайно добавлен в репозиторий, то чтобы его оттуда удалить, танцы с перемещениями придётся исполнять всем разработчикам для своих рабочих копий.
Именно — танцы. Я вовсе не говорю, что решения нет. Я о том, что мы можем решить эту задачу сейчас именно посредством только таких танцев, а не какими-то более штатными средствами.
Это понятно :) Но меня интересует, есть ли более «правильные» методы решения этой задачи. На данный момент предложенный вами вариант действительно работающий (и я его использовал и до этого и сейчас использую), но это, извините, решение через одно место.
Решение простое: переименовать файл filename в filename.tmpl, а разработчикам сообщить, чтобы в рабочей копии создали копию файла с нужными изменениями.