使用Git管理网站


8

我开始使用Git来管理Joomla网站构建,并且正在寻找一些最佳实践指南。就目前而言:

  • 使用WHM设置新帐户。我编写了一个安装后挂钩,以从Github自动下载Joomla并将其放置在相关public_html目录中,以及创建数据库和数据库用户
  • 通过Web界面手动安装Joomla(尽管目前也在寻找一种自动化方法)
  • 在上方设置一个裸仓库public_html-这是用户推入和撤出的地方。我们称这个origin
  • 设置标准仓库 public_html
  • 添加特定于Joomla的 .gitignore
  • 将裸仓库指定为我们的遥控器(git remote add origin ../repo.git
  • 执行git add .,然后git commit -m"Initial J! Commit",然后git push origin master获取默认的在我们的裸回购安装
  • post-receive在裸仓库中添加一个挂钩,以自动将更改引入仓库中public_html(因为裸仓库是开发人员将本地更改推送到其中的地方)
  • 万一有人在服务器上进行更改,请在存储post-update库中添加一个挂钩public_html...尽管他们不应该这样做

我现在不太担心数据库。我现在的主要问题是处理Joomla文件的添加/更改。显然,当我安装模板和扩展名时,某些文件将被添加和删除。同样,Joomla更新将导致更改。

处理这些服务器上更改的最佳方法是什么?我的想法是写一个小插件,运行的onAfterRender或类似使用PHPGit执行git add .git commit git push origin master。然后,在我的本地副本中,我可以进行拉动,一切都完成了。或者,还有更好的方法?

Answers:


4

我不明白为什么您要建立裸露/公共结构;

我只使用public_html作为回购协议的根目录,具有非常完整的.gitignore(每次新的Joomla!更新后都需要更新,因为git status您会找到新文件并添加它们,以便它们不会被版本化)。

开发人员进入开发分支;最终,当发布被批准时,它会根据主版本进行重新测试,测试并推向生产。

我不使用钩子,但是有几个脚本可以转储我希望共享的相关数据库部分,但是如果需要,可以让用户运行导入脚本。这样,如果有人在开发新扩展,他们将保留其配置,直到准备共享为止。

如果使用less / sass,则可能要在提交后的钩子中运行编译,以确保压缩标志始终在服务器上。

-更新:.gitignore-

我无法在这里分享我的.gitignore,因为每个Joomla都会更改它。更新。首先,确保您的eclipse .project .settings等以及您要排除的其他文件与configuration.php和.htaccess一起位于主.gitignore中。我的主人.gitignore看起来像这样的网站,该网站的组件讨厌,可以将更改写入自己的文件夹,而不是缓存和tmp;加上它使用了sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

因此,我从复制它开始(从Web根目录开始):

cp /home/_core/.gitignore .

然后分解更新包(完整的更新包),然后运行

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

警告不要在实时站点上运行查找,而只能在更新包上运行!

请运行一些测试,并在最终完成该过程并为其编写bash脚本之前,以git status看到每次添加的内容:这是我正在使用的方法,但不能保证它会满足您的要求100%


感谢您的回答-您愿意公开您的信息.gitignore吗?目前,我是唯一的开发人员,而且对Git还是很陌生,所以我在网上遵循了一些Web开发人员工作流程指南,以了解自己的位置,从而形成了裸露的/公共的结构。
codinghands

不,我不会在这里粘贴;我刚刚添加了创建说明的指导
Riccardo Zorn 2014年

嗨,里卡多-谢谢,我已经很完整了.gitignore,只想看看有什么不同。
codinghands

您可以全局忽略文件夹,例如:要忽略所有地方的缓存文件夹,只需将其添加cache/到.gitignore
jackJoe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.