如何访问 git 提交变量 (python)?
How to get access to git commit variables (python)?
我是 git 的新手,开始了解它的工作原理。
我正在尝试创建一个个人 pre-commit 钩子来训练自己,我想访问变量,例如提交者的用户名、提交的文件数、他们的名字、标题等。
我该怎么做?
我读了这个帖子 https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables 并且我知道存在一些我感兴趣的变量,但正如我所说,我的问题是不知道如何访问它们。
哦,我正在 python 中编写我的钩子。
那篇文章中的变量都是你提供给git的配置变量,不是变量git提供给你。除非您自己设置它们,否则它们将是空的。
pre-commit
未提供任何参数。
提交者的名字显然是执行命令的用户:
import getpass
username = getpass.getuser()
要查看将提交的文件(以及对每个文件执行的操作),请使用 git diff --name-status
:
import subprocess
diffs = subprocess.check_output(['git', 'diff', '--name-status'],
stderr=subprocess.STDOUT)
diff_dict = dict(list(reversed(item.split('\t')))
for item in diffs.split('\n') if item != '')
我不知道你说的"titles"是什么意思。
我是 git 的新手,开始了解它的工作原理。
我正在尝试创建一个个人 pre-commit 钩子来训练自己,我想访问变量,例如提交者的用户名、提交的文件数、他们的名字、标题等。
我该怎么做?
我读了这个帖子 https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables 并且我知道存在一些我感兴趣的变量,但正如我所说,我的问题是不知道如何访问它们。
哦,我正在 python 中编写我的钩子。
那篇文章中的变量都是你提供给git的配置变量,不是变量git提供给你。除非您自己设置它们,否则它们将是空的。
pre-commit
未提供任何参数。
提交者的名字显然是执行命令的用户:
import getpass
username = getpass.getuser()
要查看将提交的文件(以及对每个文件执行的操作),请使用 git diff --name-status
:
import subprocess
diffs = subprocess.check_output(['git', 'diff', '--name-status'],
stderr=subprocess.STDOUT)
diff_dict = dict(list(reversed(item.split('\t')))
for item in diffs.split('\n') if item != '')
我不知道你说的"titles"是什么意思。