2017-02-21 111 views
0

我试图为OpenCart设置版本控制的代码库,以及单独版本控制的OC模板,主题和插件。OpenCart版本控制如何忽略模板/主题/插件


WordPress的模拟

我放置在我的.gitignore文件下面做与WordPress类似

/public_html/wordpress/wp-content/plugins/**/* 
!/public_html/wordpress/wp-content/plugins/index.php 

/public_html/wordpress/wp-content/themes/**/* 
!/public_html/wordpress/wp-content/themes/index.php 

它告诉WP条件不跟踪任何东西除index.php之外的插件/主题文件夹中。

然后我可以将我的插件放到插件文件夹中,并且git status不返回任何更改。当我更新我的WP代码库,我可以随便拉进去。


我想有Opencart的一个类似的工作流程,但它得到多一点有趣着如何摊开所有OC主题文件可以得到。

选项1. 我想了解一下使用设置我的OC的.gitignore的同样的方法来排除除了核心文件的一切。本质上是

#For every directory that a theme/template/plugin file might land 
/path/to/dir1/**/* 
!/path/to/dir1/corefile1 
!/path/to/dir1/coredir1/**/* 
... 
!/path/to/dir1/corefileX 
!/path/to/dir1/coredirY/**/* 
... 
/path/to/dirZ/**/* 
!/path/to/dirZ/corefile1 
!/path/to/dirZ/coredir1/**/* 
... 
!/path/to/dirZ/corefileM 
!/path/to/dirZ/coredirN/**/* 

在我看来,它可能会失去控制。新主题/模板/插件可以放置文件的位置数量是否有限?当我安装一个奇怪的插件将文件放置在正常位置之外时,该系统是否会崩溃?我不希望我的.gitignore变成必须明确包含每个核心OC文件的东西。

选项2. 以我明确忽略作为主题/文件/插件的一部分添加的每个文件的方式创建我的.gitignore文件。这种方法也非常繁琐。由于我必须将此添加到我的核心OC存储库的忽略文件中,因此每个OC项目都将具有所有其他项目的忽略规则。

选项3. 完全放弃这种方法。在这种情况下,无论何时我想更新OC内核(例如从v2.2版本升级到v2.3版本),我只需要存储/弹出我安装的所有额外功能。


选项1是什么我倾向于但是比起刚经历它,我希望有人与更多的OC插件的经验可以让我知道它是多么可行的。

我也有兴趣听到任何其他解决方案。



更新:

基于我开始服用看看有什么我可以用我的方案1战略做卢卡斯提供的信息。我几乎立即放弃了这一点。

作为开始,我为语言文件创建了以下规则。

# Ignore everything in the language folder 
/uploads/catalog/language/**/* 
# Except default language 
!/uploads/catalog/language/en-gb/**/* 

我立即跑进问题是,如果我安装一个模块,增加了它结束了一个EN-GB语言文件包含在该存储库。因此,这又使我再次陷入同样的​​情况,我必须决定是否明确忽略模块文件,还是明确包含每个核心en-gb文件。

如果我必须明确包含所有文件,OC核心升级完全有可能伴随着一个新文件,我永远不知道它存在,所以我从来没有在版本控制下得到它,并且它没有出货到我的新网站。这可以通过在我升级时在我的当前OC和新OC之间进行文件系统比较来处理,并将任何新文件添加到.gitignore。这不会经常发生,但它仍然非常难看IMO。


选项2的想法开始感觉有点干净。我不介意特别忽略我添加的任何模块的文件。真正的问题是当我调整特定网站的文件时。这似乎是经常发生的事情,并不是很多人完全按照下载的主题发生。

我真的不想拥有这样的线条。

# Ignore files belonging to mywebsite.com 
/upload/catalog/view/theme/mywebsite.com/**/* 

当只有一个OC实例使用这些文件时。

回答

1

的主题是很容易忽略 - 它们位于/目录/视图/主题/ *

OC默认为从默认的服务片/如果新的主题不具有等同的文件,因此不应该被感动。

默认语言是/ catalog/language/en-gb/*,任何其他语言都必须有意添加。

很多模块都在6个不同的地方添加的文件(!):

/admin/controller/module/ 
/admin/model/module/ 
/admin/view/theme/default/module/ 

/catalog/controller/module/ 
/catalog/model/module/ 
/catalog/view/theme/default/module/ 

一些模块可能会增加新的语言的文件。

一些模块在数据库中创建新表,而另一些模块可能只是将新列添加到现有表中。

说实话,这有点乱。

对于您正在使用的git projet版本,克隆当前OC安装的全新安装可能是值得的,将您现有的安装复制到它上面以查看它做了哪些更改,仅仅作为一个起点。

+0

这或多或少是我怀疑的。我知道许多模块也使用VQMods,有没有一个目录(或多个目录),这些文件通常会在哪里结束? – Jamie

+1

所有VQMOD最终都在/ vqmod/xml/ 它们不会更改任何核心文件,它们会生成新的已更改副本,并将其保存在/ vqmod/vqcache / –