Развертывание 1 пакета Python под 2 разными именами - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь иметь 2 одновременных версии одного пакета на сервере. Производственный и испытательный. Я хочу, чтобы эти 2 находились в одном и том же git-репозитории в 2 разных ветках (тестирование слилось бы с производственным), однако я бы хотел, чтобы они были в одном и том же каталоге, поэтому нет необходимости изменять какие-либо операции импорта или пути.

Можно ли динамически изменять имя пакета в setup.py, в зависимости от ветки git? Или можно развернуть их под разными именами, используя pip?

РЕДАКТИРОВАТЬ: я, возможно, нашел правильное решение для моей проблемы здесь: Git: игнорировать некоторые файлы во время слияния (ограничить некоторые файлыодна ветка) Gitattributes можно настроить, чтобы игнорировать слияние моего setup.py, я закрою этот вопрос после того, как я его протестирую.

Ответы [ 2 ]

0 голосов
/ 27 октября 2019

Это можно сделать с помощью сценария установки, который выглядит следующим образом:

#!/usr/bin/env python3

import pathlib
import setuptools

def _get_git_ref():
    ref = None
    git_head_path = pathlib.Path(__file__).parent.joinpath('.git', 'HEAD')
    with git_head_path.open('r') as git_head:
        ref = git_head.readline().split()[-1]
    return ref

def _get_project_name():
    name_map = {
        'refs/heads/master': 'ThingProd',
        'refs/heads/develop': 'ThingTest',
    }
    git_ref = _get_git_ref()
    name = name_map.get(git_ref, 'ThingUnknown')
    return name

setuptools.setup(
    # see 'setup.cfg'
    name=_get_project_name(),
)

Он считывает текущий git ref непосредственно из файла .git/HEAD и ищет соответствующее имяв таблице.

Вдохновленный от: https://stackoverflow.com/a/56245722/11138259.

0 голосов
/ 27 октября 2019

Использование файла .gitattributes с содержимым «setup.py merge = ours», а также настройка git config --global merge.ours.driver true. Делает слияние "опустить" файл setup.py (вместо этого он сохраняет наш файл). Это работает, только если основная и дочерняя ветви изменили файл с тех пор, как они впервые расстались. (похоже)

...