--- C:/Documents and Settings/e1263830/Desktop/git.rb Fri Oct 28 11:42:58 2011 +++ C:/Documents and Settings/e1263830/Desktop/patched_git.rb Fri Oct 28 12:26:31 2011 @@ -142,19 +142,17 @@ end scm_brs.each do |br1| br = br1.to_s + rev = nil from_scmid = nil from_scmid = h["branches"][br]["last_scmid"] if h["branches"][br] h["branches"][br] ||= {} scm.revisions('', from_scmid, br, {:reverse => true}) do |rev| - db_rev = find_changeset_by_name(rev.revision) - transaction do - if db_rev.nil? - save_revision(rev) - end - h["branches"][br]["last_scmid"] = rev.scmid - merge_extra_info(h) - self.save - end + find_changeset_by_name(rev.revision) || save_revision(rev) + end + unless rev.nil? + h["branches"][br]["last_scmid"] = rev.scmid + merge_extra_info(h) + self.save end end end @@ -168,15 +166,15 @@ :committed_on => rev.time, :comments => rev.message ) - if changeset.save - rev.paths.each do |file| - Change.create( + changeset.changes = + rev.paths.collect do |file| + Change.new( :changeset => changeset, :action => file[:action], :path => file[:path]) end end - changeset + changeset.save! end private :save_revision