X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=set-commit-date.py;h=a88c5dea43849ddba38a0272f6ce74a24ac9a995;hb=38b26e6bbb22cc7dd8fae8076279311596005bd5;hp=7f481f36960251b382b9d0b756fed9563e521619;hpb=13b95111ceb542d9617c4f1a7f44dfde691ed226;p=git-scripts.git diff --git a/set-commit-date.py b/set-commit-date.py index 7f481f3..a88c5de 100755 --- a/set-commit-date.py +++ b/set-commit-date.py @@ -15,11 +15,13 @@ 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: @@ -36,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: