<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find(self):
 """ Find all the files we want to find commit times for, and any extra files under symlinks. Then find the commit times for those files and return a dictionary of {relative_path: commit_time_as_epoch} """

        mtimes = {}

        git = Repo(self.root_folder)
        all_files = git.all_files()
        use_files = set(self.find_files_for_use(all_files))

        # the git index won't find the files under a symlink :(
        # And we include files under a symlink as seperate copies of the files
        # So we still want to generate modified times for those files
        extras = set(self.extra_symlinked_files(use_files))

        # Combine use_files and extras
        use_files.update(extras)

        # Tell the user something
        if not self.silent:
            log.info("Finding modified times for %s/%s git controlled files in %s", len(use_files), len(all_files), self.root_folder)

        # Finally get the dates from git!
        return self.commit_times_for(git, use_files)