git 如何在python中从远程存储库列表中找到默认分支?[duplicate]

olmpazwi  于 2023-02-14  发布在  Git
关注(0)|答案(1)|浏览(116)
    • 此问题在此处已有答案**:

How do I execute a program or call a system command?(65个答案)
How to get output from subprocess.Popen(). proc.stdout.readline() blocks, no data prints out(4个答案)
Running shell command and capturing the output(21个答案)
4天前关闭。
我需要从命令行传递一个repos列表并检测它们的默认分支,到目前为止,我只找到了这个返回默认HEAD git remote show origin | grep 'HEAD' | cut -d':' -f2 | sed -e 's/^ *//g' -e 's/ *$//g'的命令
然而,我不确定我应该如何在我的代码中执行它。
下面是执行命令python3 www.example.com testrepo。app.py testrepo.
下面是代码

@app.route('/test')
def get_default_branch():
    repos = sys.argv[1:]
    origin =repos[0]
    return subprocess.Popen([f"'git', 'remote', 'show', '{origin}''" + "| grep 'HEAD' | cut -d':' -f2 | sed -e 's/^ *//g' -e 's/ *$//g''" ])
iq3niunx

iq3niunx1#

如果要捕获输出,使用API可能更容易

@app.route('/test')
def get_default_branch():
    repos = sys.argv[1:]
    origin =repos[0]
    return subprocess.check_output(
        f"git remote show {origin} | grep 'HEAD' | cut -d':' -f2 | sed -e 's/^ *//g' -e 's/ *$//g'",
        shell=True
    )

https://docs.python.org/3/library/subprocess.html#subprocess.check_output
对于h shell=True,还建议使用字符串而不是列表

相关问题