     EmitterMixin::on.apply(this, arguments)
 
   ###
-  Section: Instance Methods
-  ###
-
-  # Subscribes to buffer events.
-  subscribeToBuffer: (buffer) ->
-    getBufferPathStatus = =>
-      if path = buffer.getPath()
-        @getPathStatus(path)
-
-    @subscribe buffer.onDidSave(getBufferPathStatus)
-    @subscribe buffer.onDidReload(getBufferPathStatus)
-    @subscribe buffer.onDidChangePath(getBufferPathStatus)
-    @subscribe buffer.onDidDestroy => @unsubscribe(buffer)
-
-  # Subscribes to editor view event.
-  checkoutHeadForEditor: (editor) ->
-    filePath = editor.getPath()
-    return unless filePath
-
-    fileName = basename(filePath)
-
-    checkoutHead = =>
-      editor.buffer.reload() if editor.buffer.isModified()
-      @checkoutHead(filePath)
-
-    if atom.config.get('editor.confirmCheckoutHeadRevision')
-      atom.confirm
-        message: 'Confirm Checkout HEAD Revision'
-        detailedMessage: "Are you sure you want to discard all changes to \"#{fileName}\" since the last Git commit?"
-        buttons:
-          OK: checkoutHead
-          Cancel: null
-    else
-      checkoutHead()
-
-  # Returns the corresponding {Repository}
-  getRepo: (path) ->
-    if @repo?
-      @repo.submoduleForPath(path) ? @repo
-    else
-      throw new Error("Repository has been destroyed")
-
-  # Reread the index to update any values that have changed since the
-  # last time the index was read.
-  refreshIndex: -> @getRepo().refreshIndex()
+  Section: Repo Data
+  ###
 
   # Public: Returns the {String} path of the repository.
   getPath: ->

  getDiffStats: (path) ->
    repo = @getRepo(path)
    repo.getDiffStats(repo.relativize(path))

  # Public: Is the given path a submodule in the repository?
  #
  # * `path` The {String} path to check.
  #
  # Returns a {Boolean}.
  isSubmodule: (path) ->
    return false unless path

    repo = @getRepo(path)
    if repo.isSubmodule(repo.relativize(path))
      true
    else
      # Check if the path is a working directory in a repo that isn't the root.
      repo isnt @getRepo() and repo.relativize(join(path, 'dir')) is 'dir'

  # Public: Get the status of a directory in the repository's working directory.
  #
  # * `path` The {String} path to check.
  #
  # Returns a {Number} representing the status. This value can be passed to
  # {::isStatusModified} or {::isStatusNew} to get more information.
  getDirectoryStatus: (directoryPath)  ->
    directoryPath = "#{@relativize(directoryPath)}/"
    directoryStatus = 0
    for path, status of @statuses
      directoryStatus |= status if path.indexOf(directoryPath) is 0
    directoryStatus

  # Public: Retrieves the line diffs comparing the `HEAD` version of the given
  # path and the given text.


    pathStatus

  # Extended: Get the cached status for the given path.
  #
  # * `path` A {String} path in the repository, relative or absolute.
  #
  # Returns a status {Number} or null if the path is not in the cache.
  getCachedPathStatus: (path) ->
    @statuses[@relativize(path)]

  # Extended: Returns true if the given status indicates modification.
  isStatusModified: (status) -> @getRepo().isStatusModified(status)

  # Extended: Returns true if the given status indicates a new path.
  isStatusNew: (status) -> @getRepo().isStatusNew(status)

  ###
  Section: Retrieving Diffs
  ###

  # Public: Retrieves the number of lines added and removed to a path.
  #
