How print last commit info for every file in a git repository

前端 未结 3 1449
深忆病人
深忆病人 2020-12-28 18:05

I have a script that copies some files from a git repository of mine on a remote server. For every file that is copied, if it is under version control, I want to generate a

相关标签:
3条回答
  • 2020-12-28 18:42

    This is faster and can be sorted by age:

    find <dir> -exec git log -n 1 --pretty="%ai {}" "{}" \; | sort -r
    
    0 讨论(0)
  • 2020-12-28 18:52

    I'm dubious about how useful this will be, since you can always get the information from a local repository, or through gitweb, but here you are:

    git ls-files | while read file; do git log -n 1 --pretty="Filename: $file, commit: %h, date: %ad" -- $file; done
    

    The %h gives you an abbreviated hash; if you want the full one, use %H. You can also fiddle with the format of the date using --date=local|iso|rfc|short (see the git-log manpage).

    0 讨论(0)
  • 2020-12-28 19:03

    I had a chat about this on #git with a few guys, and one of them (thanks Mikachu) found this Perl script which had the right algorithm but some serious implementation flaws.

    So I fixed up the issues with that script, tidied it up a lot, and here is the result (download from here). Note that it currently requires Term::ANSIColor to run. here you can see a screenshot of it in action:


    (source: adamspiers.org)

    Hope that helps!

    0 讨论(0)
提交回复
热议问题