这是关于Git的一般性问题,但我正在将它应用于SS,所以我想在这里问一下。我是一名学习Git的设计师。
我正在寻找开发环境和实时服务器的最佳方式。我现在的设置是在本地使用composer和GitHub for Mac来处理我Mac上的项目。然后我使用Beam部署到实时服务器。
我遇到的问题是我无法将SS模块提交到我的回购项目中。使用GitHub for Mac,它说'未能将模块名称添加到索引'。我还不清楚为什么会这样。因为它们是带git的子模块?
所以我做的是使用Beam将主题,自定义代码等内容部署到实时服务器,然后从实时服务器登录并运行composer来安装和更新模块。如果我可以直接从我的开发服务器上推送所有内容,而不必在实时服务器上登录和运行composer命令,那将是理想的选择。这对于没有在糟糕的共享主机上安装了作曲家的客户端站点也有帮助。
是否有一种解决方法或更好的方法来部署到我不知道的实时服务器?
答案 0 :(得分:2)
我使用composer管理模块,并将composer.json
和composer.lock
添加到您的git repo,将所有模块目录添加到.gitignore
。使用composer,您可以在以后轻松更新框架和模块。
您可以使用capistrano或git hooks之类的内容自动执行某些部署。
Capistrano在您身边工作,它在实时服务器上登录,拉动并为您完成一些工作。在野外有一些关于SilverStripe的capistrano接受。它有一些优点(例如每个版本的dir,易于回滚,每个版本的DB备份等等),但对于我来说,对于我想快速部署真正的修补程序的非常简单的网站感觉有点矫枉过正。 / p>
使用git hooks,您仍然必须登录实时服务器,转到您的webroot并运行git pull
。然后git会从回购中提取你最新的变化并为你做一些工作。我正在运行此git post-merge hook for SilverStripe(只需将脚本复制到实时服务器上的.git/hooks/post-merge
):
#!/bin/bash
echo "running git post receive hook..."
DIR=$(git rev-parse --show-toplevel)
if [ -e "$DIR/composer.json" ]; then
if [ -d "$DIR/vendor" ]; then
composer.phar install
else
composer.phar update
fi
fi
echo "running dev/build"
sudo -u www-data php $DIR/framework/cli-script.php dev/build flush=1
它会自动为我运行composer install
或composer update
和dev/build
。
还有一个提示:不要将您的数据库凭据或开发/测试/实时模式放在您的git仓库中。请改用_ss_environment.php。每台机器一台。
答案 1 :(得分:0)
除了Git,你不需要任何其他东西。他们拥有这些软件和工具,可以让事情变得更轻松,但却变得过于混乱,混乱和太多事情。
布局: 在开发服务器上安装git并启动项目
在开发服务器上,编辑,添加,删除和提交文件到repo
来自git repo 的prod installgit pull
上的
当你开发git commit
到dev的回购
如果要发布,请转到实时服务器并发出内容提取
这就是我用cvs和svn完成它的方式。与git的想法相同。它就像一个魅力。
确保您执行 ssh over http
,更好。
这只是我个人经验的看法;不要一字不漏。我确定其他人也采用了不同的方式。