2017-05-25 34 views
3

假设我们处于Python环境中,并且可以在Windows,OSX或Linux上运行。如何以编程方式发现git使用的编辑器,跨平台?

我们如何确定git使用的编辑器?

如果这只是环境变量,我们可以这样做:

os.getenv('GIT_EDITOR') 

但它也可能是在config。

可以解析git配置文件,但我们不想重新实现整个搜索(repo,user,system?)。

问题:

我们如何以编程方式发现编辑器的git使用?

回答

5

运行git var GIT_EDITOR。输出的结果是使用编辑器的名称,适合传递到外壳:

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 

(是否和如何你想字节字符串化是给你的课程)。