如何最好地使用git来管理TYPO3安装?

10

您好,我一直想做这件事,但是我想使用 git 来维护一些 typo3 开发网站。我查找了一些信息,最有价值的(chromium 翻译网站)对这个主题的解释不是很清楚,但让我想到了一些东西。我想知道如何设置一个 git 管理的 repo,如果在设置 repo 时需要忽略一些/其他文件夹,我应该注意什么,最佳实践等等。我已经决定每个版本都会单独进行数据库转储,以便与里程碑相对应,因为现在我还不确定如何处理 CMS 版本控制方面的问题。


1
链接已失效,可能过时了,但这里还剩下什么:http://web.archive.org/web/20130706031806/http://www.chmuul.net/2010/02/saubere-git-repositories-fur-typo3-projekte - Florian Fida
2个回答

19

这是一个典型的.gitignore

/fileadmin/user_upload/
/fileadmin/_temp_/

/uploads/

/typo3conf/temp_CACHED*
/typo3conf/temp_fieldInfo.php
/typo3conf/localconf_local.php

/typo3/
/t3lib/
/typo3temp/

请记住,当使用git来管理TYPO3时,不应该使用Extension Manager在远程安装任何扩展!

相反地,应该先在本地导入扩展,然后在本地安装,并将扩展的文件和修改过的localconf.php提交并推送到远程服务器。

localconf.php的末尾包含localconf_local.php(被忽略)。

@include('localconf_local.php');

它允许覆盖数据库凭据或自定义的ImageMagick路径,而无需更改原始的localconf.php。团队中的每个开发人员当然会将自己的值写入localconf_local.php

.gitignore中忽略的典型TYPO3文件夹应该在每个实例中手动创建,例如:

typo3temp

fileadmin/user_upload

当然,您还需要下载TYPO3源代码(typo3t3lib文件夹)- 没有必要将它们放在版本控制下。

其他内容,如uploads应该从远程手动下载,因此最好编写脚本打包它,并让每个开发人员可以通过某个链接下载它。您不能将其添加到git repo中,因为这些文件仅在创建内容元素时才会创建,因此如果不将它们忽略,您很快就会面临大量合并冲突的风险。


1
谢谢你们的提示。几天后我成功实现了,就会接受一个答案。 - Dark Star1
1
您应该注意,例如"/.git/config"不会通过HTTP公开暴露(我习惯将Typo3的内容放置在/public/子文件夹中)。编辑:哈哈,chmuul.net是我的博客 :) 如果您有其他问题,请随时提出。 - Paul Voss
附加说明:我会看看能否更详细地重写教程,翻译成英文并附上我的Capistrano收据。 - Paul Voss
1
@include('localconf_local.php'); 这部分自 v6.0 起已不再有效/可能 - 但现在有更好的(官方)方法,请参见此答案:https://dev59.com/jGMl5IYBdhLWcg3wgnIE - Florian Fida

10

我想在biesiors的非常好的答案上添加一些方面:从我的经验来看,最好的策略是将fileadmin/typo3conf/放在版本控制下,最初不要放其他内容。如果您使用扩展程序,则只能使用TER存储库中的最新版本。扩展程序配置(typoscript设置,locallang值)将放置在fileadmin/中的外部文件夹中。示例文件夹结构:

fileadmin/
- css/
- images/
- javascript/
- scripts/
- templates/
- - html/
- - templavoila/
- - typoscript/
- - xml/
不要将任何typoscript信息存储在数据库中,因为它无法从那里进行版本控制。需要时请放置.gitignore文件。我们还忽略typo3conf/ext/和typo3conf/l10n/。为什么?如果编写自己的扩展名(或修改现有扩展名),则会将typo3conf/ext/my_extensionname/添加到另一个存储库中。这样,扩展本身可以得到很好的维护,特别是在多个项目中使用时。未更改的扩展程序根本不需要进行版本控制。遵循@include('localconf_local.php')建议-这是很好的做法。 这种设置对编码纪律要求更高,但你将得到回报!我们在两人团队中已经成功执行了12个以上的项目。

我们目前正在将整个ext/目录存储在git仓库中。请问你使用了什么技术来在自动部署过程中从仓库中获取所有扩展并将其放置在正确的位置?Git子模块看起来非常不灵活,需要大量管理工作。使用git子树技术,如果您想要将扩展提取到单独的仓库中,您总是可以这样做。我认为将所有扩展存储在不同的仓库中并不值得。请告诉我您这样做的原因。 - Ivo
1
可能会有误解:我们只包括我们自己开发的扩展,在大多数项目中只有一两个。所有其他扩展都被 typo3conf/ext/ 中的 .gitignore 忽略。 - Mateng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接