我如何以编程方式跨平台发现 git 编辑器的使用?
How do I programmatically discover the editor git uses, cross-platform?
假设我们处于 Python 环境中,我们可能处于 Windows、OSX 或 Linux.
我们如何确定git使用的编辑器?
如果只是环境变量,我们可以这样做:
os.getenv('GIT_EDITOR')
但它也可以在配置中。
可以解析 git 配置文件,但我们不想重新实现整个搜索(存储库、用户、系统?)。
问题:
我们如何以编程方式发现编辑器 git 使用?
运行git var GIT_EDITOR
。结果输出是要使用的编辑器的名称,适合传递给 shell:
import subprocess
def git_var(what):
"return GIT_EDITOR or GIT_PAGER, for instance"
proc = subprocess.Popen(['git', 'var', what], shell=False,
stdout=subprocess.PIPE)
output = proc.stdout.read()
status = proc.wait()
if status != 0:
... raise some error ...
output = output.rstrip(b'\n')
output = output.decode('utf8', errors='ignore') # or similar for py3k
return output
(是否以及如何对字节进行字符串化当然取决于您)。
假设我们处于 Python 环境中,我们可能处于 Windows、OSX 或 Linux.
我们如何确定git使用的编辑器?
如果只是环境变量,我们可以这样做:
os.getenv('GIT_EDITOR')
但它也可以在配置中。
可以解析 git 配置文件,但我们不想重新实现整个搜索(存储库、用户、系统?)。
问题:
我们如何以编程方式发现编辑器 git 使用?
运行git var GIT_EDITOR
。结果输出是要使用的编辑器的名称,适合传递给 shell:
import subprocess
def git_var(what):
"return GIT_EDITOR or GIT_PAGER, for instance"
proc = subprocess.Popen(['git', 'var', what], shell=False,
stdout=subprocess.PIPE)
output = proc.stdout.read()
status = proc.wait()
if status != 0:
... raise some error ...
output = output.rstrip(b'\n')
output = output.decode('utf8', errors='ignore') # or similar for py3k
return output
(是否以及如何对字节进行字符串化当然取决于您)。