python [python] [gitpython] gitでファイルの更新日付をコミット日时に调整

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python [python] [gitpython] gitでファイルの更新日付をコミット日时に调整相关的知识,希望对你有一定的参考价值。

# coding: utf-8
"""
ファイルの更新日付をコミット日時に調整します。

注意)本スクリプトは、予め pull を実施後に実行されることを想定しています。
なので、リモート周りのコマンドは使っていません。コミット履歴もローカルコミット履歴をみます。
(つまり、ls-filesを使って、ls-remoteは利用しません。)

動作には、python-dateutilとgitpythonが必要です。

  $ pip intall python-dateutil gitpython
"""

import datetime
import logging
import os
import pathlib

import dateutil.parser
import git

logging.basicConfig(
    level=logging.INFO,
    format=' %(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('log.txt', mode='w', encoding='utf-8')
    ])

try:
    base_dir = pathlib.Path('/path/to/your/repo')
    os.chdir(base_dir)
    
    logging.info(f'ベースディレクトリ: {base_dir.absolute()}')

    g = git.cmd.Git()
    for f in g.ls_files().splitlines():
        commit_time = g.log('-n1', f'{f}', pretty='format:%ci')
        commit_time_dt = dateutil.parser.parse(commit_time)
        commit_timestamp = commit_time_dt.timestamp()

        cur_dt = datetime.datetime.fromtimestamp(os.stat(f).st_mtime)
        
        logging.info(f'\tファイル  : {f}')
        logging.info(f'\tコミット日時: {commit_time}')
        logging.info(f'\t  日付更新: {str(cur_dt)} --> {str(commit_time_dt)}')
        
        os.utime(f, (commit_timestamp, commit_timestamp))

except Exception as e:
    logging.error(f'エラー発生:{e}')

以上是关于python [python] [gitpython] gitでファイルの更新日付をコミット日时に调整的主要内容,如果未能解决你的问题,请参考以下文章

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python

Python 介绍

Python学习之认识python

python初识