如何在仍然能够推送到dotCloud时从git仓库中排除database.yml?

时间:2012-05-15 21:33:12

标签: git dotcloud

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

2 个答案:

答案 0 :(得分:4)

根据您的目的,您有几种不同的选择。

您可以将database.yml文件放在.gitignore file中,然后在使用dotcloud时使用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.ymlenvironment.json相同的方式引用变量。更多信息可以在这里找到:http://docs.dotcloud.com/guides/environment/#adding-environment-variables

答案 1 :(得分: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个回购:

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

所以还有其他问题:

  1. 您如何与协作者共享存储库? (拉或推,由谁?)
  2. 或者你有一些裸存储库来交换数据(由[Y]和[C]共享)?
  3. 这是正确的,您不需要在repo中使用database.yml吗?
  4. 注意2:您可以使用git hooks来完成您想要的几乎所有操作。例如,您甚至可以在更新之前管理一些临时分支等。

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