2

我想在我的一个项目上添加一个远程 git 协作者,但我不想让他访问我在 database.yml 中的密码。我知道如何 .gitignore database.yml 并相应地清除 repo,但问题是我正在将这个特定项目部署到 DotCloud,据我所知,这需要 database.yml 成为 git repo 的一部分。我现在能想到的最好的解决方案是使用 rsync 推送到 DotCloud,但我宁愿直接从 git repo 推送。任何人都知道我可以做到这一点的方法吗?

4

2 回答 2

4

根据您想要做什么,您有几个不同的选择。

您可以将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然后,您可以像使用or一样引用变量environment.json。更多信息可以在这里找到:http: //docs.dotcloud.com/guides/environment/#adding-environment-variables

于 2012-05-16T00:15:49.717 回答
0

注意 1:假设更简单的方法是在 git 中创建别名,它会自动执行 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 个 repos:

  • [Y]你的:(database.yml 不重要?)
  • [C]ollaborator:(没有database.yml)
  • [D]otCloud(带有原始databse.yml)

所以还有一些额外的问题:

  1. 您如何与您的合作者共享存储库?(拉或推,由谁?)
  2. 或者您是否有一些裸存储库来交换数据(由 [Y] 和 [C] 共享)?
  3. 这是正确的,你不需要在你的回购中有 database.yml 吗?

注意 2:你可以使用 git hooks 做几乎所有你想做的事情。例如,您甚至可以在更新等之前使用一些临时分支进行管理。

注意 3:如果您的仓库中不需要 database.yml,那么您可以在 [y] 和 [D] 之前创建中间裸仓库,并使用“update”挂钩将更改转发到 [D]

于 2012-05-15T23:57:07.870 回答