docs: def commit_times_for(self, git, use_files):
          """
          Return commit times for the use_files specified.
  
          We will use a cache of commit times if self.with_cache is Truthy.
  
          Finally, we yield (relpath: epoch) pairs where path is relative
          to self.parent_dir and epoch is the commit time in UTC for that path.
          """
          # Use real_relpath if it exists (SymlinkdPath) and default to just the path
          # This is because we _want_ to compare the commits to the _real paths_
          # As git only cares about the symlink itself, rather than files under it
          # We also want to make sure that the symlink targets are included in use_files
          # If they've been excluded by the filters
          use_files_paths = set([getattr(p, "real_relpath", p.path) for p in use_files if p.relpath])
  
          # Find us the first commit to consider
          first_commit = str(git.first_commit)
  
          # Try and get our cached commit times
          # If we get a commit then it means we have a match for this parent/sorted_relpaths
          commit_times = {}
          cached_commit, cached_commit_times = None, {}
          if self.with_cache:
              sorted_relpaths = sorted([p.relpath for p in use_files])
              cached_commit, cached_commit_times = get_cached_commit_times(self.root_folder, self.parent_dir, sorted_relpaths)
  
              if cached_commit == first_commit:
                  commit_times = cached_commit_times
  
          # If we couldn't find cached commit times, we have to do some work
          if not commit_times:
              for commit_id, commit_time, different_paths in git.file_commit_times(use_files_paths, debug=self.debug):
                  for path in different_paths:
                      commit_times[path] = commit_time
  
              if self.with_cache:
                  set_cached_commit_times(self.root_folder, self.parent_dir, first_commit, commit_times, sorted_relpaths)
  
          # Finally, yield the (relpath, commit_time) for all the files we care about.
          for key in use_files:
              if key.relpath:
                  path = getattr(key, "real_relpath", key.path)
                  relpath = getattr(key, "real_relpath", key.relpath)
                  if path in commit_times:
                      yield key.relpath, commit_times[path]
                  else:
                      log.warning("Couldn't find commit time for {0}".format(relpath))