使用GIT管理Joomla网站

13

我们是一家网页设计公司,正在着手建立一个修订管理系统,并考虑如何使用它以及周围的所有流程等问题。我们正在考虑使用 Git 修订管理系统。

我们主要在 Joomla! 内容管理系统 (CMS) 上开发我们的网站。我想知道其他公司在处理 CMS 时如何管理他们的代码库。我们主要处理模板建设,偶尔会修改已安装的组件或插件。

我的主要问题是:

  • 是将所有文件(包括 Joomla 文件)存储在代码库中最好的方式,还是只存储自己制作或更改的文件?
  • 您是否会在其他地方保留数据库的副本(Joomla 用于操作和内容存储的数据库),以便记录数据库更改?

1
可能更容易使用SVN,因为这是Joomla使用的版本控制系统。我相信有一种方法可以将外部存储库选项添加到您自己的目录中,因此基本上Joomla存储库将是外部的,并且会在Joomla更新其源代码时拉取更新,然后您只需要担心自己的代码。但是显然(总是)比那更复杂,所以我相信之后会有人能够给您更好的提示。祝你好运! - David Antaramian
5个回答

10

我知道这个问题已经有了一个被接受的答案,但也许有人会回来并发现它有用。

  • 我认为跟踪整个 Joomla 并试图排除核心文件几乎是不可能的,正如 @vicgilbcn 所说,它可能变成一场噩梦。
  • 另一方面,如果您正在开发一个 J! 的组件,它“不幸地”分散在 'components/com_mycomp'、'administrator/components/com_mycomp' 和可能的 'media/com_mycomp' 中,你应该有 3 个单独的 git 存储库来跟踪它 - 因此这也是行不通的。

所以我想出来的解决方法似乎相当好用,就是这样:

假设我有一个普通的 J! 部署,其中包含我的 com_mycomp 组件。
  • 我在 Joomla 代码库之外创建一个名为 "COMMON" 的文件夹。
  • 在 "COMMON" 中我创建了一个 "joomla" 文件夹。
  • 在 "COMMON/joomla" 中我创建了一个 "myComp" 文件夹,它将保存整个组件的代码库。
  • 在 "COMMON/joomla/myComp" 中,我使用 Joomla 的文件夹结构,并 移动 (而不是复制) 'components/com_mycomp'、'administrator/components/com_mycomp' 和 'media/com_mycomp' 到其中。
  • 然后我回到我从中删除文件夹的位置,并创建 符号链接 到新位置。

这样,我现在可以在 COMMON/joomla/myComp 中创建一个 git 存储库。

显然,这个环境应该是一个本地开发环境,在这里您可以调整 apache/php 配置,没有安全问题,使其工作。(我不记得我是否实际上需要做任何特殊的配置修改才能让这个工作 - 如果它不起作用,请检查日志...)

事实上,这个解决方案确实解决了另一个问题。以这种方式工作,您实际上可以将您的组件代码库文件夹的符号链接链接到两个不同的 Joomla 部署(例如 J!2.5.x 和 J3.x.x),并能够立即针对不同版本测试您的组件兼容性。


很好的回答!你在“COMMON/joomla/myComp”中使用了Joomla文件夹结构,这是指完整的Joomla结构还是只有这三个文件夹:component、administrator和media?谢谢。 - Shafayat Alam

5
这篇由Joe LeBlanc撰写的文章是我在Joomla!版本控制方面发现的少数几个资料之一:http://joomlaablog.blogspot.it/2010/11/how-to-track-your-joomla-project-with.html 有两种常用策略可以在Joomla中使用Git:跟踪整个Joomla安装或跟踪特定扩展。使用Git跟踪Joomla本身的主要障碍是Joomla代码库的庞大。虽然Git速度较快,但如果您只添加一个模板或模块,则跟踪整个Joomla安装可能仍然过于复杂。

另一方面,将所有内容都放入Git可以确定何时向Joomla站点应用了补丁。当您试图将问题追溯到特定补丁时,这可能会有所帮助。此外,如果您正在创建多个旨在共同工作的扩展,那么可能别无选择,只能将整个站点放入版本控制。

如果您正在开发单个扩展并且知道它是项目中唯一的扩展,那么跟踪单个目录可能更有优势。单个仅前端组件、后端组件、模块或模板都可以作为与Joomla安装分开跟踪的候选项。由于插件.php文件是放置在共享文件夹中的,因此以这种方式跟踪插件很困难。以这种方式跟踪完整组件也存在问题,因为后端的更改可能会影响前端的行为。


4

对于你的第一个问题,通常大多数团队会将与项目相关的所有文件(不包括日志和临时文件)都进行检入。如果您确实想要存储数据库,请存储数据库的转储(而不是二进制文件)。您应该确保包括数据和模式。


2
如果您选择第一种选项(跟踪整个Joomla),则必须.gitignore所有核心内容,并且每次添加外部扩展时都要进行相应的操作。否则,当有人安装并提交扩展时,就会变成一场噩梦。然后,在拉取之后,您必须发现它,有时它不起作用。此外,Joomla版本更改难以管理。
我主张为不同的扩展使用不同的存储库,但我仍在寻找一种方法来将一个存储库用于整个组件(管理+前端+安装)。有任何想法(例如子模块或子树合并)吗?

1

我们和你们处于类似的情况 - 设计机构拥有Joomla网站。

我们使用Subversion,每个网站作为一个代码库。当我们开始一个项目时,我们下载最新版本的Joomla并将其放入SVN中。然后我们从SVN检出网站到本地机器上进行工作,并在需要时进行提交。


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