我想在我的一个项目上添加一个远程git协作者,但我不想让他在database.yml中访问我的密码。我知道如何.gitignore database.yml并相应地清除repo,但问题是我正在将这个特定的项目部署到DotCloud,据我所知,它需要database.yml成为git repo的一部分。我现在能想到的最好的解决方案是使用rsync推送到DotCloud,但我宁愿直接从git repo推送。有人知道我可以做到这一点吗?
答案 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.yml
或environment.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个回购:
所以还有其他问题:
注意2:您可以使用git hooks来完成您想要的几乎所有操作。例如,您甚至可以在更新之前管理一些临时分支等。
注意3:如果你的repo中不需要database.yml,你可以在[y]和[D]之前创建中间裸仓库,并使用“update”挂钩将更改转发到[D]