def save project
dirty = false
dirty = project.each_modelobject { |o| break true if o.changed? }
if dirty
Ditz::debug "project is dirty, saving #{@project_fn}"
project.save! @project_fn
end
changed_issues = project.issues.select { |i| i.changed? }
changed_issues.each do |i|
fn = filename_for_issue i
Ditz::debug "issue #{i.name} is dirty, saving #{fn}"
i.save! fn
end
project.deleted_issues.each do |i|
fn = filename_for_issue i
Ditz::debug "issue #{i.name} has been deleted, deleting #{fn}"
FileUtils.rm fn
end
end