2016-03-28 2 views
2

Код довольно прост, он просто открывает командную строку Windows и выполняет функцию call(). У этого есть основные команды git, которые помогают мне нажать на git repo. Я настроил ssh и удаленное репо.Python Git Bash CMD Script

Ссылка: https://github.com/vivekpatani/git-script-gitter

Я могу изменить дату, но когда я нажимаю его мерзавец, он отображает текущую дату, на которую я толкнул, а не тот, который я совершил.

The Commit List where it shows committed 9 days ago and 11 days ago together

список для фиксации, где он показывает привержен 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() 

Осмотревшись, я прочитал, что мне нужно сменить ДЕНЬ АВТОР и ДАТА СОГЛАШЕНИЯ? Может кто-нибудь, пожалуйста, помогите мне.

EDIT 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 

EDIT 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") 

ответ

2

--date только изменяет дату автора.

Необходимо указать переменную окружения GIT_COMMITTER_DATE, чтобы иметь такую ​​же дату, как дата автора (using the env option of Popen() и merging it with the current environment).

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")) 
+0

Спасибо, но когда я печатаю os.environ, я не могу найти GIT_COMMITTER_DATE. Также строка содержит синтаксическую проблему. Пожалуйста, вы могли бы мне помочь? –

+1

@VivekPatani Цель состоит в том, чтобы * добавить * эту переменную к переменным среды, а не находить ее. – VonC

+0

@VivekPatani Кроме того, отсутствовала двойная кавычка. – VonC