Sha256: ced7eaafb5216d01b10285ddb827b10ca85d8cda89148a780cbd46ec78456fab

Contents?: true

Size: 1.7 KB

Versions: 36

Compression:

Stored size: 1.7 KB

Contents

module Redcar
  module Scm
    class CommitMirror
      include Redcar::Document::Mirror
      
      def initialize(repo, change=nil)
        @repo = repo
        @change = change
      end
      
      def title
        "Commit message"
      end
      
      def exists?
        true
      end
      
      # Commits don't change till they are commited, at which point
      # they are closed.
      def changed?
        false
      end
      
      def read
        if @change
          @repo.commit_message(@change)
        else
          @repo.commit_message
        end
      end
      
      def commit(contents)
        # filter the contents for comments and generally clean it up
        contents = contents.split("\n").map{|l| l[0,1] == "#" ? "" : l}.join("\n").rstrip
        
        # throw an error if our spring clean left nothing
        raise "Empty commit message. Commit aborted." if contents.empty?
        
        @repo.commit!(contents, @change)
        
        notify_listeners(:change)
      end
      
      class CommitChangesCommand < Command
        sensitize :open_commit_tab
        
        def execute
          tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
          begin
            doc = tab.edit_view.document
            doc.mirror.commit(doc.to_s)
          rescue
            Application::Dialog.message_box($!.message)
          end
        end
      end
      
      class CreateCommitCommand < Command
        sensitize :open_scm
        
        def execute
          project = Project::Manager.focussed_project
          info = Scm::Manager.project_repositories[project]
          
          Scm::Manager.open_commit_tab(info['repo'])
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 2 rubygems

Version Path
redcar-0.13 plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.5dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.4dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.3dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.2dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.1dev plugins/scm/lib/scm/commit_mirror.rb
redcar-0.12.1 plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.13.0dev plugins/scm/lib/scm/commit_mirror.rb
redcar-0.12 plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.27dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.26dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.25dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.24dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.23dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.22dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.21dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.20dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.19dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.18dev plugins/scm/lib/scm/commit_mirror.rb
redcar-dev-0.12.17dev plugins/scm/lib/scm/commit_mirror.rb