Я хочу добавить удаленный git-коллаборатор в один из моих проектов, но я не хочу, чтобы он получал доступ к моим паролям в database.yml. Я знаю, как .gitignore database.yml и продуть репо соответственно, но проблема в том, что я развертываю этот конкретный проект в DotCloud, который, насколько мне известно, требует, чтобы database.yml был частью git repo. Лучшее решение, о котором я могу сейчас думать, это использовать rsync, чтобы нажать на DotCloud, но я бы скорее нажал прямо из git repo. Кто-нибудь знает, как я могу это сделать?Как я могу исключить database.yml из git-репо, хотя все еще могу нажать dotCloud?
ответ
У вас есть несколько различных вариантов в зависимости от того, что вы хотите сделать.
Вы можете поместить файл database.yml
в свой .gitignore file
, а затем, используя dotcloud push, используйте rsync вместо git, чтобы нажимать ваш код.
$ dotcloud push --all ramen
Использование опции --all
заставит загрузчиком использовать метод «Rsync», и, следовательно, толкать все ваши файлы. См. Эту страницу для получения дополнительной информации. http://docs.dotcloud.com/guides/git-hg/#pushing-uncomitted-changes
Если вам нужно проигнорировать файлы, вы можете создать файл .dotcloudignore
и добавить файлы, которые хотите игнорировать, нажав туда.
Второй, лучший подход - не помещать ваши пароли в ваш файл database.yml
вообще.Добавьте свои пароли в качестве переменных среды, а затем ваш файл database.yml
может быть безопасным и не содержать паролей.
$ dotcloud var set myapp MYVAR=MYVALUE
Вы можете ссылаться на переменные точно так же, как вы делаете с environment.yml
или environment.json
. Более подробную информацию можно найти здесь: http://docs.dotcloud.com/guides/environment/#adding-environment-variables
Примечание 1: Предположим, что простой способ заключается в создании псевдонима в мерзавца, который будет автоматически выполнять Rsync:
git config alias.<yourcommand>; !<your script>
Пример:
git config alias.sendtocloud "! echo 'rsync' && rsync && echo pull && git pull"
, а затем попробовать:
git sendtocloud <continue parameters as after git pull >
Если вы хотите иметь чистый раствор git и не менее 3 реакторов:
- [Y], наша: (? Database.yml, не имеет значения)
- [С] ollaborator: (без database.yml)
- [D] otCloud (с оригинальным databse.yml)
Так есть дополнительные вопросы:
- Как вы делитесь хранилищу с сотрудником? (тянуть или нажимать и кем?)
- ИЛИ у вас есть какой-то голый репозиторий для обмена данными (разделяемый [Y] и [C])?
- Правильно ли, что вам не нужно иметь database.yml в вашем репо?
ПРИМЕЧАНИЕ 2: вы можете использовать git-крючки, чтобы делать почти все, что хотите. Например, вы можете управлять несколькими временными ветвями до обновления и т. Д.
ПРИМЕЧАНИЕ 3. Если вам не нужна база данных.yml в вашем репозитории, вы можете создать посередине голого репо до [y] и [D] с «обновлением» для переадресации изменений на [D]
Я понятия не имею, что такое DotCloud, но мне трудно поверить, что на любой платформе вам придется вводить пароли в git-репо. –