     @unsubscribe()
 
   # Returns the corresponding {Repository}
-  getRepo: ->
+  getRepo: (path) ->
     unless @repo?
       throw new Error("Repository has been destroyed")
-    @repo
+
+    @repo.submoduleForPath(path) ? @repo
 
   # Reread the index to update any values that have changed since the
   # last time the index was read.


  # Public: Returns the number of commits behind the current branch is from the
  # its upstream remote branch.
  getAheadBehindCount: (reference) -> @getRepo().getAheadBehindCount(reference)

  # Public: Returns true if the given branch exists.
  hasBranch: (branch) -> @getReferenceTarget("refs/heads/#{branch}")?

  # {::isStatusModified} or {::isStatusNew} to get more information.
  getPathStatus: (path) ->
    currentPathStatus = @statuses[path] ? 0
    repo = @getRepo(path)
    pathStatus = repo.getStatus(repo.relativize(path)) ? 0
    if pathStatus > 0
      @statuses[path] = pathStatus
    else
