プロジェクトの1つにリモートのgitコラボレーターを追加したいのですが、彼にdatabase.ymlのパスワードにアクセスさせたくありません。database.ymlを.gitignoreし、それに応じてリポジトリをパージする方法を知っていますが、問題は、この特定のプロジェクトをDotCloudにデプロイしていることです。これには、私の知る限り、database.ymlがgitリポジトリの一部である必要があります。私が今考えることができる最善の解決策は、rsyncを使用してDotCloudにプッシュすることですが、gitリポジトリから直接プッシュしたいと思います。私がこれを行う方法を知っている人はいますか?
2 に答える
やりたいことに応じて、いくつかの異なるオプションがあります。
database.yml
ファイルをに配置し、.gitignore file
dotcloud pushを使用する場合は、gitの代わりにrsyncを使用してコードをプッシュします。
$ dotcloud push --all ramen
この--all
オプションを使用すると、アップローダーは「rsync」メソッドを使用するように強制されるため、すべてのファイルがプッシュされます。詳細については、このページを参照してください。http://docs.dotcloud.com/guides/git-hg/#pushing-uncomitted-changes
ファイルを無視する必要がある場合は、ファイルを作成し、.dotcloudignore
そこにプッシュして無視するファイルを追加できます。
2番目の、より良いアプローチは、パスワードを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で作成することだとします。
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は重要ではありませんか?)
- [C] ollaborator:(database.ymlなし)
- [D] otCloud(元のdatabse.ymlを使用)
したがって、追加の質問があります。
- リポジトリを共同編集者とどのように共有しますか?(引っ張るか押して、誰が?)
- または、データを交換するためのベアリポジトリ([Y]と[C]で共有)がありますか?
- リポジトリにdatabase.ymlを含める必要がないというのは正しいですか?
注2:gitフックを使用して、必要なほとんどすべてのことを実行できます。たとえば、更新などの前にいくつかの一時的なブランチで管理することもできます。
注3:リポジトリにdatabase.ymlが必要ない場合は、[y]と[D]の前に、変更を[D]に転送するための「update」フックを使用して中間のベアリポジトリを作成できます。