Исключите определенные файлы при продвижении в определенный репозиторий Мерзавца

Действительно ли возможно исключить определенные файлы (*.ai, *.psd) при продвижении в определенные репозитории с Мерзавцем?

Моя потребность прибывает из попытки использовать Мерзавца и для управления версиями и для развертывания на Heroku. Если я включаю свои графические активы в развертывание, размер краткого заголовка больше, чем желаемый. Однако я действительно должен включать все файлы проекта в свой основной репозиторий GitHub.

8
задан Kevin Sylvestre 8 July 2014 в 16:39
поделиться

3 ответа

Самый простой способ решить вашу актуальную проблему - создать файл .slugignore в корне репозитория, в котором перечислены файлы, которые не должны Не упаковывается в пулю.

12
ответ дан 5 December 2019 в 08:51
поделиться

Вы можете поддерживать вторую ветку для развертывания на Heroku, которая не содержит ни одного из этих файлов, но по-прежнему сливается с master. (Конечно, вам придется разработать систему разрешения конфликтов слияния, возникающих при изменении файлов .ai и .psd в master).

То, о чём вы спрашиваете, невозможно по той простой причине, что при push вы переносите точные коммиты из одного репозитория в другой, а два коммита, не имеющие одинакового дерева, по определению являются разными коммитами.

Совет: Последние версии git имеют опцию --porcelain для git status, которая даст легко разбираемую информацию типа "M file1" "DU file2" (изменённый и не изменённый/удалённый нами, соответственно). Вы можете написать обёртку git-merge для вашей ветки развёртывания, которая попытается выполнить слияние и автоматически очистит ожидаемые конфликты:

git checkout deploy
if ! git merge master; then
    git rm $(git status --porcelain | awk '/^DU/ {print $NF}')
fi

(Причина, по которой я напечатал $NF вместо $2, в том, что если файл будет переименован, это будет выглядеть как "DU original_name -> new_name", и копия, помещённая в рабочее дерево, будет new_name, а не original_name. )

Конечно, скрипт можно усложнить, если у вас такая ситуация - вы можете искать только определенные расширения (добавить их в ограничивающий awk-шаблон), или даже перехватывать весь вывод в perl-скрипт, чтобы можно было легко сделать более причудливую логику...

4
ответ дан 5 December 2019 в 08:51
поделиться

Нет прямого простого способа сделать это. Это, конечно, управляемо, но с большой болью (git не предназначен для этого).

Вероятно, было бы проще, если бы вы попросили Heroku предоставить способ исключения некоторых файлов из развертывания.

3
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: