使用git hooks创建文件存档

时间:2014-06-20 12:16:25

标签: python windows git

我想创建一个包含repo中某些文件的zip文件,然后添加并提交它以及repo中已有的文件。

我已将precommit更改为:

#!C:/Python34/python.exe

import tarfile, os
os.chdir("C:\project\directory")

with tarfile.open("archive.tar.gz", "w:gz") as f:
    for name in ["file", "names"]:
        f.add(name)

创建文件,但我不知道如何将它们添加到提交中。

我尝试了subprocess.Popen("git add ."),但它没有暂存文件。

1 个答案:

答案 0 :(得分:1)

请注意,该钩子称为pre-commit,而不是precommit

如果我使用以下代码创建名为.git/hooks/pre-commit的钩子:

#!/usr/bin/python

import os
import subprocess
import tarfile

print 'Adding files to archive.'
with tarfile.open("archive.tar.gz", "w:gz") as f:
    for name in ["file1", "file2"]:
        f.add(name)

print 'Adding archive to commit.'
subprocess.call(['git', 'add', 'archive.tar.gz'])

并将一些文件添加到存储库中:

$ echo hello world > file1
$ echo this is a test > file2
$ git add file1 file2

然后提交更改:

$ git commit -m "added some files"

我明白了:

Adding files to archive.
Adding archive to commit.
[master (root-commit) 38e33dd] added some files
 3 files changed, 2 insertions(+)
 create mode 100644 archive.tar.gz
 create mode 100644 file1
 create mode 100644 file2

看着提交,我看到了:

$ git log -1 --name-only
commit 38e33dd5ba14d1bfe427b50cce37489259fd00c4
Author: Lars Kellogg-Stedman <lars@example.com>
Date:   Fri Jun 20 09:02:31 2014 -0400

    added some files

archive.tar.gz
file1
file2