X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=sidebyside;f=set-commit-date.py;h=a88c5dea43849ddba38a0272f6ce74a24ac9a995;hb=a0f5c1217294a1a72b71bc94fd80760b0393e775;hp=71594ae3899e896a2d50901d7bf873178b7fdf0c;hpb=3929127d65ddc5d676862e9a514c26b655221900;p=git-scripts.git diff --git a/set-commit-date.py b/set-commit-date.py index 71594ae..a88c5de 100755 --- a/set-commit-date.py +++ b/set-commit-date.py @@ -8,14 +8,20 @@ import os import subprocess +git_root = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'], + universal_newlines=True).rstrip('\n') +os.chdir(git_root) + separator = '----- GIT LOG SEPARATOR -----' git_log = subprocess.Popen(['git', 'log', '-m', '--first-parent', - '--name-only', '--no-color', + '--name-status', '--no-color', '--format=%s%%n%%ct' % separator], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) -filenames = set() +changed_files = set() +deleted_files = set() + # stages: 1 - start of commit, 2 - timestamp, 3 - empty line, 4 - files stage = 1 for line in git_log.stdout: @@ -32,9 +38,16 @@ for line in git_log.stdout: stage = 4 assert line == '', line elif stage == 4: - filename = line - if filename not in filenames: - filenames.add(filename) + if line.startswith('A') or line.startswith('M') \ + or line.startswith('D'): + filename = line.split(None, 2)[1] + elif line.startswith('R'): + filename = line.split(None, 3)[2] # renamed to + if line.startswith('D') and filename not in changed_files: + # The file was not readded + deleted_files.add(filename) + if filename not in deleted_files and filename not in changed_files: + changed_files.add(filename) if os.path.exists(filename): os.utime(filename, (time, time)) else: