GIT-RESTORE-MTIME(1)

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] [--force] [--merge] [--first-parent]
    [--skip-missing] [--no-directories] [--test] [--commit-time]
    [--oldest-commit] [--work-tree WORKDIR] [--git-dir GITDIR]
    [pathspec [pathspec...]]

DESCRIPTION
Restore original modification time of files based on the date of the most recent commit that modified them. Useful when generating release tarballs.

OPTIONS

  Positional arguments:

pathspec
    only modify paths (dirs or files) matching PATHSPEC, relative to current directory. Default is to modify all non-ignored, tracked files.

  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. Overwrites --quiet.

--force,-f
    force execution on trees with uncommitted changes.

--merge,-m
    include merge commits. Leads to more recent mtimes and more files per commit, thus with the same mtime (which may or may not be what you want). Including merge commits may lead to less commits being evaluated (all files are found sooner), which improves performance, sometimes substantially. But since merge commits are usually huge, processing them may also take longer, sometimes substantially. By default merge logs are only used for files missing from regular commit logs.

--first-parent
    pass --first-parent to git whatchanged to hide the second parent from the merge commit logs. Only has any effect if --merge is also specified or --skip-missing is not specified and there were files not found in regular commit logs.

--skip-missing,-s
    do not try to find missing files. If some files were not found in regular commit logs, by default it retries using merge commit logs for these files (if --merge was not used already). This option disables this behavior, which may slightly improve performance, but files found only in merge commits will not be updated.

--no-directories,-D
    do not update directory mtime for files created, renamed or deleted in it. Note: just modifying a file will not update its directory mtime.

--oldest-commit,-o
    pass --reverse to git whatchanged, so that the commit history for the current branch will be processed in reverse order (i.e. from the oldest commit to the most recent). This will result in a file's mtime being set to the time of the oldest commit to reference that file, instead of most recent. This option will not work correctly on branches where multiple files have been renamed with the same name.

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

--commit-time,-c
    use commit time instead of author time

--work-tree WORKDIR
    specify where the work tree is. Default for most repositories is current directory.

--git-dir GITDIR
    specify where the git repository is. Default for most repositories <work-tree>/.git

SEE ALSO
https://github.com/MestreLion/git-tools

AUTHOR
Rodrigo Silva (MestreLion) linux@rodrigosilva.com