Provided by: git-restore-mtime_2022.12-1_all bug

NAME

       git-restore-mtime - Restore original modification time of files based on the date of the most recent
       commit that modified them

SYNOPSIS

       git-restore-mtime [-h] [--quiet|--verbose]
                         [-C DIRECTORY] [--work-tree WORKDIR] [--git-dir GITDIR]
                         [--force] [--merge] [--first-parent] [--skip-missing]
                         [--no-directories] [--test] [--commit-time] [--oldest-time]
                         [--skip-older-than SECONDS] [--unique-times] [--version]
                         [PATHSPEC [PATHSPEC...]]

DESCRIPTION

       Change  the  modification  time  (mtime)  of  files in the work tree based on the date of the most recent
       commit that modified the file, as an attempt to restore  the  original  modification  time.  Useful  when
       generating release tarballs.

       Ignore  untracked  files  and  uncommitted deletions, additions and renames, and by default modifications
       too.

OPTIONS

   Positional arguments:
       PATHSPEC
               Only modify paths matching PATHSPEC, relative to current directory.  By default, update  all  but
               untracked files and submodules.

   Optional arguments:
       -h, --help
               show help message and exit

       --quiet,-q
               Suppress informative messages and summary statistics.

       --verbose,-v
               Print  additional  information  for  each  processed  file.   Specify  twice  to further increase
               verbosity.

       -C DIRECTORY, --cwd DIRECTORY
               Run as if restore-mtime was started in directory DIRECTORY.  This affects how --work-tree, --git-
               dir and PATHSPEC arguments are handled.  See git(1) for more information.

       --git-dir GITDIR
               Path to the git repository, by default auto-discovered by searching the current directory and its
               parents for a .git/ subdirectory.

       --work-tree WORKDIR
               Path to the work tree root, by default the parent of GITDIR if it's automatically discovered,  or
               the current directory if GITDIR is set.

       --force, -f
               Force  updating files with uncommitted modifications.  Untracked files and uncommitted deletions,
               renames and additions are always ignored.

       --merge, -m
               Include merge commits.  Leads to more recent times and more files per commit, thus with the  same
               time,  which  may or may not be what you want.  Including merge commits may lead to fewer commits
               being  evaluated  as  files  are  found  sooner,  which  can   improve   performance,   sometimes
               substantially.   But as merge commits are usually huge, processing them may also take longer.  By
               default, merge commits are only used for files missing from regular commits.

       --first-parent
               Consider only the first parent, the "main branch", when evaluating merge commits.  Only effective
               when merge commits are processed, either when --merge is used or when finding missing files after
               the first regular log search.  See --skip-missing.

       --skip-missing, -s
               Do not try to find missing files.  If merge commits were not  evaluated  with  --merge  and  some
               files  were not found in regular commits, by default restore-mtime searches for these files again
               in the merge commits.  This option disables this retry, so files found only in merge commits will
               not have their timestamp updated.

       --no-directories, -D
               Do not update directory timestamps.  By default, use the  time  of  its  most  recently  created,
               renamed or deleted file.  Note that just modifying a file will NOT update its directory time.

       --test, -t
               Test run: do not actually update any file timestamp.

       --commit-time, -c
               Use commit time instead of author time.

       --oldest-time, -o
               Update times based on the oldest, instead of the most recent commit of a file.  This reverses the
               order  in  which  the  git  log is processed to emulate a file "creation" date. Note this will be
               inaccurate for files deleted and re-created at later dates.

       --skip-older-than SECONDS
               Ignore files that are currently older than SECONDS.  Useful in workflows that assume  such  files
               already have a correct timestamp, as it may improve performance by processing fewer files.

       --skip-older-than-commit, -N
               Ignore  files  older  than  the  timestamp  it would be updated to.  Such files may be considered
               "original", likely in the author's repository.

       --unique-times
               Set the microseconds to a unique value per commit.   Allows  telling  apart  changes  that  would
               otherwise have identical timestamps, as git's time accuracy is in seconds.

       --version, -V
               show program's version number and exit

KNOWN ISSUES

       Renames are poorly handled: it always changes the timestamps of files, even if no content was modified.
       Directory timestamps are also limited to being modified only when files are added (created) or deleted in
       them.
       In very large repositories, after running restore-mtime to modify the timestamp of several files, further
       git operations may emit the error:
         fatal: mmap failed: Cannot allocate memory.
       This is harmless, and can be fixed by running git-status(1).

SEE ALSO

       git(1), git-log(1), git-ls-files(1), git-status(1)
       https://github.com/MestreLion/git-tools

AUTHOR

       Rodrigo Silva (MestreLion) linux@rodrigosilva.com

                                                   2022-07-27                               GIT-RESTORE-MTIME(1)