带遥控器的GitPython

时间:2016-03-16 16:40:39

标签: python git

我试图用python中的git解决一个简单的任务。其实我只想要这样的东西

git clome remote-repo
git pull
edit file
git commit file
git push
rm -rf remote-repo

所以只需更改文件并提交即可立即推送。但是我的问题让我的头脑周围的文件http://gitpython.readthedocs.org/en/stable/tutorial.html 这是我到目前为止所得到的

import git
import shutil
import os

repo_url = 'git@git.internal.server:users/me/mytest'
repo_dir = '/tmp/test/repo'
work_file_name = 'testFile'
work_file = os.path.join(repo_dir, work_file_name)
if os.path.isdir(repo_dir):
   shutil.rmtree(repo_dir)
repo = git.Repo.clone_from(repo_url, repo_dir)

git = repo.git
git.pull()
new_file_path = os.path.join(repo.working_tree_dir, work_file_name)
f = open(new_file_path, 'w')
f.write("just some test")
f.close()
repo.index.commit("test commit")

git.push()
shutil.rmtree(repo_dir)

它实际上创建了一个提交并将其推送到服务器,但它不包含任何更改,因此我尝试写入的文件为空。知道我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

您必须在提交之前暂存文件/更改:

repo.index.add([new_file_path])

作为旁注:以下行会覆盖您的导入,如果您扩展了脚本,可能会导致错误:

git = repo.git