Python Git Bash CMD脚本

3
代码非常简单,它只是打开窗口命令提示符并执行calling()函数。其中包含了一些基本的git命令,这些命令帮助我将代码推送到git仓库中。我已经配置了ssh和远程仓库。
链接:https://github.com/vivekpatani/git-script-gitter 我可以更改日期,但当我将其推送到git时,它显示的是我推送时的当前日期,而不是我提交时的日期。
在提交历史列表中,显示的是9天前和11天前提交的记录,但我希望它实际上显示提交的日期。
def calling():

    #Simply opening command prompt in Windows
    subprocess.call("git --version")
    subprocess.call("git status")
    subprocess.call("git add .")
    subprocess.call("git commit -am \"Changing Things\" --date=\"Sat, 26 Mar 2016 18:46:44 -0800\"")
    subprocess.call("git push origin master")

    #To stop from cmd closing automatically
    temp = input("Enter to close:")

def main():
     calling()

if __name__ == "__main__":
    main()

在查看了一些资料后,我发现需要同时更改作者日期和提交日期?有人可以帮我吗。

编辑1: 我使用的是Windows操作系统。

当我通过Git Bash运行它时,它可以正常工作,只需要将其转换为Python即可。

git --version
git status
git add .
GIT_AUTHOR_DATE='Fri Mar 25 19:32:10 2016 -0800' GIT_COMMITTER_DATE='Fri Mar 25 19:32:10 2016 -0800' git commit -am "Hello Laney"
git push origin master

编辑2:解决方案

def calling(git_date):
    subprocess.call("git --version")
    subprocess.call("git status")
    subprocess.call("git add .")

    #The next statement is important as updates/adds new GitCommiterDate in environment making it the current commit date.
    os.environ["GIT_COMMITTER_DATE"] = 'Fri Mar 25 19:32:10 2016 -0800'

    #The date in commit command only changes author date.
    subprocess.call("git commit -am \"Changing Things\" --date=\"Fri Mar 25 19:32:10 2016 -0800\"")
    subprocess.call("git push origin master")
1个回答

2

--date 只修改作者日期。

如果你想让日期与作者日期相同,你需要设置 GIT_COMMITTER_DATE 环境变量。可以使用 Popen()env 选项将其与当前环境合并 来实现。

subprocess.call("git commit -am \"Changing Things\" --date=\"Sat, 26 Mar 2016 18:46:44 -0800\"", env=dict(os.environ, "GIT_COMMITTER_DATE":"Sat, 26 Mar 2016 18:46:44 -0800"))

谢谢,但是当我打印os.environ时,我找不到GIT_COMMITTER_DATE。而且这行代码存在语法问题。请问你能指导我吗? - Viv
1
@VivekPatani 的目标是将该变量添加到环境变量中,而不是查找它。 - VonC
@VivekPatani 还有一个双引号缺失。 - VonC
我刚刚对你说的内容进行了一些更改。你提到的答案是正确的,但由于它仍然存在问题,我将命令分成了两个部分。 os.environ["GIT_COMMITTER_DATE"] = "Fri, 25 Mar 2016 18:46:44 -0800" 然后 subprocess.call("git commit -am "Changing Things" --date="Fri, 25 Mar 2016 18:46:44 -0800"") - Viv
1
@VivekPatani 很棒!不要犹豫,编辑这个答案吧。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接