试图找到 Git 分支上的回购并将其传递到 requirements.txt

Trying to find the Git Branch a repo is on and pass it into a requirements.txt

我目前正在拆分我们的大型 BDD 项目并将测试代码移动到各种应用程序中,以便 BDD 测试和应用程序代码都位于同一位置。

作为其中的一部分,我为共享代码创建了一个库,并使用

将 requirements.txt 文件指向该库

-e git+git@gitlab.xx.xxx:xxxxxxxx/xxxxxxBDD.git@"branchID(e.g develop)#egg=BehaveModules

目前我依赖于手动输入分支 ID,因此如果根据正在开发的代码分支对公共库进行更改,我需要记得更新分支 ID。

有没有办法解决这个问题,然后将其传递到我的 requirements.txt

例如

Application_branch = get current git branch
if Application_branch present in BDD_Library Repo:
    branch = Application_branch
else: 
    branch = Develop

return branch

-e git+git@gitlab.xx.xxx:xxxxxxxx/xxxxxxBDD.git@branch#egg=BehaveModules

您可以创建 install.py 脚本并通过脚本调用 pip,而不是在 requirements.txt 中指定变量。

import subprocess
import sys

_all_ = [
    "git+https://github.com/googleapis/python-ndb.git@{}#egg=google_cloud_ndb",
    "requests"
]

latest_branch = 'master'


def install(packages):
    for package in packages:
        if 'git+' in package:
            subprocess.call([sys.executable, "-m", "pip", "install", package.format(latest_branch)])
        else:
            subprocess.call([sys.executable, "-m", "pip", "install", package])


if __name__ == '__main__':
    install(_all_)

如果需要,您也可以使用 pip 而不是 subprocess

import pip
def install(packages):
    for package in packages:
        pip.main(['install', package])