#git #github
Вопрос:
Как у вас есть два репозитория github, один частный и один общедоступный, и у меня есть секретный файл в частном. Я хотел бы разрешить людям вносить свой вклад в общедоступный, но не видеть файл .py в личной папке, а вместо этого видеть файл .py с другим содержимым, как я могу это сделать, не синхронизируя их вручную? В репозитории Github docs есть бот, но я хочу знать, есть ли более простой способ.
В моей секретной папке есть файл .py, я мог бы просто заменить его другим файлом .py, но я хочу, чтобы это произошло автоматически.
Комментарии:
1. Git не имеет понятия о публичных или частных репозиториях.
2. Я имел в виду github @Acorn
3. Что вы хотите сохранить в личном каталоге?
4. Файл .py с секретными переменными
5. Я отредактировал вопрос, чтобы прояснить это.
Ответ №1:
Можно иметь две копии одного и того же репозитория, как это, но на практике это очень трудно сделать, потому что истории должны быть независимыми, а это означает, что такие вещи, как слияния и разрешение конфликтов, быстро станут трудными.
Поскольку ваша проблема связана с файлом с секретами, лучше всего создать файл шаблона, содержащий все, что можно использовать повторно и общедоступно (то есть все, кроме секретов), а затем использовать скрипт для создания фактического файла Python, который вы хотите использовать, из шаблона и секретов. Как файл с секретами, так и сгенерированный файл следует игнорировать. Вы можете запустить этот сценарий как часть обычного процесса развертывания или начальной загрузки проекта, если хотите.
Причина, по которой это хорошая идея, заключается в том, что хранить секреты в вашем хранилище неразумно. Часто по разным причинам происходит утечка исходного кода. Это может произойти многими способами, включая случайное обслуживание вашего .git
каталога по протоколу HTTP. Если ваш репозиторий не содержит ничего личного (кроме вашего исходного кода), то риск компрометации намного ниже.
Если вы развертываете производственную службу, то лучше хранить секреты в каком-либо специализированном секретном хранилище, таком как хранилище Vault или хранилище вашей системы CI (например, секретное хранилище действий GitHub), и передавать их через среду.
Ответ №2:
Поддерживайте модуль частного использования .py
в подмодуле, путь к которому ваш общедоступный проект вставляет перед своим собственным в путь поиска модуля. Люди, клонирующие только общедоступный репозиторий, будут иметь пустой закрытый каталог (поскольку они не могут клонировать частный репозиторий, он остается пустым, как размонтированная точка монтирования), и поиск по модулю python найдет общедоступную версию.