2

プロジェクトの1つにリモートのgitコラボレーターを追加したいのですが、彼にdatabase.ymlのパスワードにアクセスさせたくありません。database.ymlを.gitignoreし、それに応じてリポジトリをパージする方法を知っていますが、問題は、この特定のプロジェクトをDotCloudにデプロイしていることです。これには、私の知る限り、database.ymlがgitリポジトリの一部である必要があります。私が今考えることができる最善の解決策は、rsyncを使用してDotCloudにプッシュすることですが、gitリポジトリから直接プッシュしたいと思います。私がこれを行う方法を知っている人はいますか?

4

2 に答える 2

4

やりたいことに応じて、いくつかの異なるオプションがあります。

database.ymlファイルをに配置し、.gitignore filedotcloud 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をご覧ください。

于 2012-05-16T00:15:49.717 に答える
0

注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を使用)

したがって、追加の質問があります。

  1. リポジトリを共同編集者とどのように共有しますか?(引っ張るか押して、誰が?)
  2. または、データを交換するためのベアリポジトリ([Y]と[C]で共有)がありますか?
  3. リポジトリにdatabase.ymlを含める必要がないというのは正しいですか?

注2:gitフックを使用して、必要なほとんどすべてのことを実行できます。たとえば、更新などの前にいくつかの一時的なブランチで管理することもできます。

注3:リポジトリにdatabase.ymlが必要ない場合は、[y]と[D]の前に、変更を[D]に転送するための「update」フックを使用して中間のベアリポジトリを作成できます。

于 2012-05-15T23:57:07.870 に答える