我想创建一个包含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 .")
,但它没有暂存文件。
答案 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