У меня есть приложение Rails с записями в блоге, которые я хочу обновить из отдельного репозитория Blog.git.
Я предполагаю, что мой рабочий процесс выглядит примерно так:
- Записьновая запись в блоге
- Push для удаленного репозитория Git
- Call cap deploy: обновление, которое вызовет задачу Rake для обновления базы данных с любыми измененными или новыми записями
Здесь загвоздка заключается в поиске файлов, которые были изменены.Я хотел бы использовать Git для этого, и я знаю, что мог бы сделать несколько сценариев awk или Perl для git diff
.
Но есть ли лучший способ?Я кратко посмотрел на Грит, но не могу найти хорошее решение.
Обновление : Оказывается, Грит - лучшее решение этой проблемы, по крайней мере, насколько я могу судить,Вот что я использовал для решения проблемы:
desc 'Posts all entries to database'
task :post_all do
Dir.chdir REPO do
Grit::Repo.new('.').tree.contents.each do |file|
# post_entry cleans up my blog entries and posts them via Post.create()
post_entry(file.data, :text) unless file.basename =~ /\.gitignore/
end
end
end
desc 'Posts all new or changed entries to database'
task :post_new do
Dir.chdir REPO do
Grit::Repo.new('.').head.commit.diffs.each do |diff|
post_entry diff.b_blob.data, :text
end
end
end
desc 'Deletes entries from database'
task :remove_all do
Post.destroy_all
end
desc 'Synchronizes the remote blog repo and the database'
task :sync => [ :remove_all, :post_all ]