试图找到 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])
我目前正在拆分我们的大型 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])