我想做以下事情:
~/my-awesome-app
mysite.com/my-awesome-app
~/my-awesome-app
所做的任何更改推送到mysite.com/my-awesome-app
有人可以解释我如何设置它吗?
答案 0 :(得分:3)
您可以将mysite.com/my-awesome-app
设为git存储库,并将receive.denyCurrentBranch
设置为ignore
以允许推送,但这样做有风险。
如果我想这样做,我会在我的服务器上创建一个裸存储库,我可以将我的代码推入,然后更改update
挂钩以将最新的树导出到mysite.com/my-awesome-app
(并可选择重启应用程序)。这样,存储库和部署的副本是两个不同的东西。
答案 1 :(得分:1)
远程服务器上的〜/ mysite.com 是否有git repo?如果是这样,就像James和Noufal所指出的那样,要小心,这种嵌套可能会有问题。
考虑以下解决方案,无论它是否嵌套都应该有效:
在远程服务器上,从shell:
mkdir ~/my-awesome-app/
ln -s ~/my-awesome-app/ ~/mysite.com/my-awesome-app
echo /my-awesome-app >> ~/mysite.com/.gitignore
当从本地 my-awesome-app 分支向远程服务器发布提交时,我会使用路径〜/ my-awesome-app 作为上传/相对目录而不是〜/ mysite.com / my-awesome-app。这应该可以让你从一些试图提升文件结构的厚脸皮IDE中寻找git repos。
最后,我会考虑在〜/ my-awesome-app 添加远程仓库,而不仅仅是通过sftp / ftp或ssh在没有repoo的情况下发送文件。这使您可以维护高度稳定的生产环境,同时仍然可以使用可伸缩gitflow方法将修补程序重新包含到本地开发副本中。
Vincent Driessen对{gitflow进行了很好的讨论here。
更新:符号链接的替代方法
您可以改为对您网站的配置进行更改,而不是符号链接(可能会被删除):
# creates the alias
<IfModule mod_alias.c>
Alias /my-awesome-app /path/to/my-awesome-app/
</IfModule>
# allows people to access the path
<Directory /path/to/my-awesome-app/>
Order allow,deny
Allow from all
</Directory>
然后当你推送时,你应该使用/ path / to / my-awesome-app /。我仍然会在〜/ mysite.com / .gitignore中留下 / my-awesome-app 行只是为了安全但没有符号链接,git应该永远不会在我的awesome-app repo中绊倒在〜/ mysite.com /.
上行动时