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))
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.