检索文件的版本

时间:2014-07-17 20:56:55

标签: python git gitpython

假设我在本地文件系统中有一个git存储库的路径:path_to_my_repository,以及存储库path_to_file中文件的路径。

对于给定的日期列表,如何从特定分支从Python 获取相应的文件版本(即将文件加载到内存中)。

1 个答案:

答案 0 :(得分:2)

这个shell命令应该做你想要的:

git show "<branch>@{<timestamp>}:<path/to/file>"

例如:

git show "master@{yesterday}:some/file/in/repo"
git show "master@{2014-01-01 00:00:00}:another/file"

这会打印到STDOUT

要从任意目录运行此命令,可以使用-C选项指向存储库根目录:

git -C path_to_my_repository show "master@{2014-05-05 12:00:00}:path_to_file"

您可以使用the subprocess module like this, or something close to it

从Python运行此命令
from subprocess import Popen, PIPE

p = Popen(['git', '-C', path_to_my_repository, 'show',
        'master@{' + date_string + '}:' + path_to_file],
    stdin=PIPE, stdout=PIPE, stderr=PIPE)

# Content will be in `output`
output, err = p.communicate()

或使用任何其他方法来调用shell命令。您还应该能够使用use libgit2或许多其他工具。