Комментарии 22
Точно не уверен, что понял суть термина «clean build», но для того чтобы работать с проектом в файловом дереве которого есть мешающие неверсионированные файлы (до их коммита мы еще не дошли), я обычно делаю ветку, коммичу туда все эти файлы и переключаюсь на trunk.
Никаких чекаутов и посторонних инструмментов, которые тоже, в общем-то, нужно сопровождать.
Никаких чекаутов и посторонних инструмментов, которые тоже, в общем-то, нужно сопровождать.
+1
как быть с генерированными файлами, например? они-то остаются в рабочей копии
0
Я использую этот скрипт в двух случаях:
1) Перед commit (все нужные файлы уже помечены как добавленные), который затрагивает build scripts – когда я хочу убедится, что я не забыл каких-то зависимостях. Я достаточно широко использую в проектах скрипты и «сторонние инструменты», у меня много автоматически сгенерированных файлов, поэтому для меня это актуально.
2) На build server’е – clean checkout (т.е. checkout в пустой каталог) для большого проекта может занимать весьма продолжительно время, хочется как-то ускорить это процесс. В этом случае я использую команду svn update на уже подготовленной working copy, но перед этим удаляю все файлы, которые были созданы во время предыдущей сборки. Результат получается такой же, как при clean checkout, но на порядок быстрее.
1) Перед commit (все нужные файлы уже помечены как добавленные), который затрагивает build scripts – когда я хочу убедится, что я не забыл каких-то зависимостях. Я достаточно широко использую в проектах скрипты и «сторонние инструменты», у меня много автоматически сгенерированных файлов, поэтому для меня это актуально.
2) На build server’е – clean checkout (т.е. checkout в пустой каталог) для большого проекта может занимать весьма продолжительно время, хочется как-то ускорить это процесс. В этом случае я использую команду svn update на уже подготовленной working copy, но перед этим удаляю все файлы, которые были созданы во время предыдущей сборки. Результат получается такой же, как при clean checkout, но на порядок быстрее.
0
НЛО прилетело и опубликовало эту надпись здесь
а не проще испорьзовать параметр svn-ignore?
0
svn:ignore всего лишь позволяет вам «не видеть» файлы, которые вам не интересны, но сами-то файлы при этом никуда не денутся. Выше XuMiX уже описал один сценарий, при котором svn:ignore ничем не поможет ;-)
Другой сценарий – допустим, я добавляю в проект генерацию каких-то файлов (ну, например, тех же LINQ2SQL-классов), которые используются в дальнейшем. Т.к. эти файлы генерируются, в репозитарии им делать нечего, и я, разумеется, добавляю их в svn:ignore. Дальше я хочу убедится, что я корректно сделал сборочные скрипты, что при чистой сборке, сразу после checkout, эти файлы будут корректно сгенерированы. Самый простой вариант – вручную удалить эти файлы и собрать проект с нуля. Но зачем удалять их вручную, если я могу сделать это автоматически?
Другой сценарий – допустим, я добавляю в проект генерацию каких-то файлов (ну, например, тех же LINQ2SQL-классов), которые используются в дальнейшем. Т.к. эти файлы генерируются, в репозитарии им делать нечего, и я, разумеется, добавляю их в svn:ignore. Дальше я хочу убедится, что я корректно сделал сборочные скрипты, что при чистой сборке, сразу после checkout, эти файлы будут корректно сгенерированы. Самый простой вариант – вручную удалить эти файлы и собрать проект с нуля. Но зачем удалять их вручную, если я могу сделать это автоматически?
+1
svn export — вытаскивает чистную версию куда вам нужно ( без всяких папок .svn ) подозреваю что будет работать быстрее чем svn checkout
+1
Скрипт, конечно, полезный. Но лучше делать так, что бы все автогенерированные-временные-ненужные файлы были хорошо локализованы — тогда можно будет их чистить не трогая svn.
Так, например, делает maven (для Java) — он создаёт файлы только в папке project/target, поэтому никаких проблем с очисткой не возникает.
Так, например, делает maven (для Java) — он создаёт файлы только в папке project/target, поэтому никаких проблем с очисткой не возникает.
0
Если я правильно понял суть скрипта то для bash/sh ето выглядит немного изящней:
#svn st | grep "?" | awk {'print $2'} | xargs rm -f
#svn st | grep "?" | awk {'print $2'} | xargs rm -f
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«Чистка» Subversion Working Copy