proxyfabio 19 мая 2016 0 3
Возникла потребность один и тот же проект заливать на гитхаб и на боевой сервер. Вся сложность была в том, что в каждом из случаев файлик `.gitignore` разный. Вы скажете, что можно было бы держать изменения в разных ветках и иметь свой файл игноров в каждой ветке? Но по мне это доабвляет только неразберихи. Надо помнить с какой веткой ты сейчас работаешь + сама папка с гитом начинает много весить, т.к. в ней хранятся «лишние данные».

В итоге родился несложный алгоритм, решающий эту проблему.

1.init .git twice

$ git init --separate-git-dir=src.git
$ rm .git
$ git init --separate-git-dir=prd.git
$ rm .git
2.prepare aliases

$ touch deploy.sh
$ nano deploy.sh
3.paste that to deploy.sh

#!/bin/sh
alias prd='git --git-dir=prd.git'
alias src='git --git-dir=src.git'
4.run deploy.sh

$ source deploy.sh
5.specify local individual .gitignores

$ src config --add core.excludesfile src.gitignore
$ prd config --add core.excludesfile prd.gitignore
6.profit
3 комментария
Fi1osof1
Fi1osof 20 мая 2016г в 09:47 #
Спасибо!
Я с подобной задачей бился (несколько репозиториев пакетов в корне сайта), но так и не победил. Делал на симлинках, но они тут не спасают. А вот это все очень похоже на рабочий вариант.
proxyfabio1
proxyfabio 20 мая 2016г в 14:26 #
Единственное, что тут надо отметить, не получится выполнить `git clone` репозитория, у которого отсутствует алиас на нужную директорию в `.git` (в первом пункте примера мы сносим этот алиас). Можно предложить 2 варианта решения: либо указывать для репозитория, который нужен сейчас, алиас в `.git`, либо залить такой репозиторий на какое-нибудь гитохранилище и уже оттуда клонировать. Думается, что второй вариант предпочтительнее. Меньше мороки.
Fi1osof1
Fi1osof 20 мая 2016г в 14:36 #
либо залить такой репозиторий на какое-нибудь гитохранилище и уже оттуда клонировать
Можно и локально еще один проект локально сделать и добавить дополнительный remote
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.