Создан ли скрипт ночного коммита SVN для захвата всех возможных сценариев?
У меня есть ночной скрипт svn commit, который должен учитывать все возможные сценарии и фиксировать новые вещи в нашем svn-хранилище. В основном я выполняю следующие шаги:
- SVN статус [путь], чтобы добавить любые новые файлы
- svn status [путь] для удаления любых удаленных вручную файлов
- создание базы данных разработки MySQL
- SVN фиксирует все вышеперечисленные изменения с сообщением по умолчанию.
Вот скрипт, который мы используем:
#!/bin/bash
echo "Adding new files to the nightly commit"
svn status [path] | grep ? | sed 's/[?MD]//g' | xargs -I {} svn add {}
echo "Removing files manually deleted"
svn status [path] | grep ! | sed 's/[!]//g' | xargs -I {} svn del {}
echo "Dumping our development database"
mysqldump --add-drop-database --add-locks --create-options --disable-keys --extended-insert --result-file=/repopath/database.sql databasename
svn commit /repopath/ -m "Nightly Automatic commit of changes"
Я просто хочу убедиться, что? а также! заботятся, и что у меня нет никаких других сценариев, о которых я не думаю. Любая помощь или улучшение этого сценария будет очень полезным. Не стесняйтесь использовать этот скрипт по своему усмотрению для любых ваших задач SysAdmin.
2 ответа
- "xargs svn add" должно быть достаточно, почему вы используете -I {}?
- Я бы не стал этого делать вообще. Вы, вероятно, получите много временных файлов в SVN. Вы можете поместить CD-образ туда однажды.
- Я бы не стал этого делать. Ваш комментарий будет совершенно бессмысленным. Что я изменил и т.д? Почему бы просто не совершить, когда вы на самом деле что-то изменили?
- Mysql иногда злой Вы должны убедиться, что дамп базы данных на самом деле в порядке. Вы читаете вывод stderr из скрипта утром?
- Со временем ваш репо станет действительно большим (в зависимости от размера БД и изменений), без хорошего способа уменьшить его.
- Вам захочется сбежать от обоих! а также?. Или цитировать их. С одинарными кавычками '!' буду работать, "!" может вызвать проблемы.
В итоге: я думаю, что вы все охвачены (кроме пункта 6), но я бы не стал этого делать на вашем месте.
Вы также можете пойти svn add
на все файлы в вашем каталоге. Файлы, которые уже были добавлены и уже находятся под контролем версий, сгенерируют сообщение об ошибке, но добавят все новые.