如何通过 GIT 使用 SuiteCRM
How to work with SuiteCRM via GIT
我的公司做出了一个糟糕的决定。他们决定使用 SuiteCRM,有人为他们安装了它,现在我应该支持和开发它。我们应该对其进行大量自定义,当然需要创建许多关系、自定义字段 e.t.c。但是...我们如何通过 git 来做到这一点?在 Admin/Studio 中进行任何更改后,系统会在文件中创建大约 30-40 个更改,并且无法管理它们。每次修复和重建后都会有数百个变化。太可怕了。
是否有 "the right way" 与 CRM 和 git 一起使用?我试图通过代码而不是 GUI 查找有关关系和字段变化的文档,并找到了许多不同的说明和方法...有一种正确的方法吗?
谢谢。
这:.gitignore 也适用于 SuiteCRM。
为了git对suiteCRM做版本控制,可以使用不同的分支来管理安装文件和代码。例如 master
分支来管理安装文件和 dev
分支来管理您的代码。对于不需要版本控制的文件,只需将它们添加到 .gitignore
.
有SuiteCRM on github供您参考。
- 正如其他人指出的那样,您想使用
.gitignore
文件来忽略某些文件和文件夹,例如/*.log
/custom/working
、/cache
和 /upload
。 .ext.php-/custom/modules/ 中的文件也已生成,可能仍未被 git 跟踪。
- 如果您使用 Studio 添加或更改字段,您还必须编写 dump/load 数据库内容 table
fields_meta_data
的挂钩(提示:使用 mysqldump我建议使用 --skip-extended-insert --skip-dump-date
来避免 git-unmaintainable 转储格式)。或者,您可以将它们转换为 vardefs
- 如果您还想忽略
// created: <timestamp>
行,则必须查看 git-attributes/filters 并且可能会感到头疼。如果您为此找到了可行的解决方案 - 请随时分享:)
还不错。多年来,我一直在为 Sugar 使用不同级别的 Git 和 SVN 管理。
这是一个模板 .gitignore 我通常从以下开始:
# Ignore Everything
/*
# Except .htaccess and Config files
!.htaccess
!config.php
!config_override.php
!.gitignore
# Except custom
!/custom/
# but do ignore some of custom and Extensions stuff
/custom/backup
/custom/blowfish
/custom/history
/custom/index.html
/custom/workflow
/custom/modulebuilder
custom/modules/Connectors
/custom/modules/*/Ext
/custom/application/Ext
# and do track custom modules
!/modules/
/modules/*
!/modules/org_MyModule/
确保手动跟踪最后一部分。创建模块时,将其添加到该列表中。
如果您最终修改了核心文件,无论是为了错误修复还是增强(您应该尽量避免),您可以明确地将它们添加到您的 .gitignore
我最终遇到的最大问题是 config.php
和 config_override.php
。根据您的环境设置,这些并不是那么糟糕,但是 site_url
参数需要根据系统的 URL 进行更改,有点像 PITA。不要认为你可以只跟踪一个或另一个,因为 Sugar 的配置更新过程可以定期重写它们,并且有点不可预知 table。
至于每次更改导致数十个文件更改的说法,是和不是。这取决于一点点,但我肯定已经看到了。您可以做的一件事是尽量减少这种情况,那就是确保您已禁用不使用的语言。我曾参与过一些项目,这些项目实际上跟踪了数以万计组织中没有人使用的语言文件。只有英语。我们将 Sugar 配置为不生成这些文件,而我创建的删除这些文件的差异非常大,以至于我们的 GUI 差异工具无法显示它。
制作中的数据库或工作室变更如何?
容易最大的困难。您可能知道,Sugar 将字段信息存储在 vardef
文件 和 数据库 table fields_meta_data
中。
根据您对 development/deployment 的设置,您可以通过以下几种方法之一解决这个问题。我会概述一些我看到的,
- 每晚备份
- 数据库架构
- fields_meta_data
- 产品目录,产品类别 tables
- 用户 table(但擦除 user_hash 数据)
- 电子邮件地址 table,但仅限用户
此方法可以很好地开发与生产的匹配,但会清除一些敏感数据并且不包括不必要的数据。缺点是需要使用自定义脚本来 (1) 处理备份和 (2) 处理您的开发。环境的备份下载
- 一个频繁的 CRON 驱动脚本,它使用
mysqldump
将密钥 table(例如 config
、fields_meta_data
、users
)备份到单个文件,然后检测 "actual changes"(例如 diff 配置为忽略空白时间戳),如果找到它们,将把这些文件提交给 master。
您可以将它与一个类似的脚本配对,该脚本会在生产环境中监视 git status
的输出;我还看到 Inotify 用于此。当发现这些更改时(同样是在生产环境中),它们会自动提交给 master。
完善后,此方法更加自动化,如果您的业务经理之一在 Studio 中进行更改,甚至会收到通知。当您提交本地开发更改时,您会注意到您的 master 与 origin/master 不同,您可以在那里处理潜在的冲突。
我们在产品内部使用 PhpStorm,这使您能够创建更改列表。我通常使用 3 个更改列表 "TODO"、"Default" 和 "Ignore"。这是您可以轻松过滤掉不需要的东西的另一种方式。我们还充分利用了 .gitignore.
如果您正在 Linux/Mac 上开发。作为更改,您可能希望配置 git 以忽略文件权限。您可以在命令行中执行此操作:
git config core.fileMode false
上有关于 SuiteCRM 的文档
Jim Mackin 的 SuiteCRM for Developers 是一本很好的参考书,可以让你暂时停止。
如果您 运行 遇到任何问题,请随时使用我们的论坛页面。
我们非常乐意提供帮助。 :)
官方suiteCRM .git忽略文件你可以copy/paste(来源https://github.com/salesagility/SuiteCRM/blob/master/.gitignore)
所以对于全新的回购你会:
1) 转到文件夹并执行 'git init'
2) 创建 .git忽略包含以下内容的文件
3) 使用 git 添加所有文件。 (最后执行此操作,否则 git忽略将无法正常工作)
## First part from https://github.com/github/gitignore/blob/master/SugarCRM.gitignore
# Ignore custom .htaccess stuff.
/.htaccess
# Ignore large parts of the annoying cache directory without breaking things.
cache/*
upload/*
!upload/index.html
# Ignore some files and directories from the custom directory.
custom/
custom/history/*
custom/blowfish/*
custom/modulebuilder/*
custom/working/*
custom/modules/*/Ext/
custom/modules/unified_search_modules_display.php
# Ignore AOD indexes
modules/AOD_Index/Index/*
install/status.json
# Configuration files should be ignored.
/config.php
/config_override.php
/config_si.php
# Connector configuration should also be ignored.
custom/modules/Connectors/connectors/sources/ext/*/*/config.php
# Logs files can safely be ignored.
*.log
## IDE specific items
# Eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
.elc
auto-save-list
tramp
# IntelliJ Idea
*.iml
*.ipr
*.iws
.idea/
.phpstorm.meta.php
# NetBeans
nbproject/
# Vim
.*.sw[a-z]
*.un~
Session.vim
tags
# Windows
Thumbs.db
Desktop.ini
.DS_Store
.DS_Store?
# Microsoft Visual Studio
*.sln
*.suo
*.phpproj
# Disytel
lang_cmp.php
.kdev4/
SuiteCRM.kdev4
#Ignore composer vendor folder
vendor/
public/
#Ignore bower_components
bower_components/
node_modules/
#Ignore Sass Generated files in SuiteP
themes/SuiteP/css/*.map
themes/SuiteP/css/*/*.map
themes/SuiteP/css/*/color-palette.css
themes/SuiteP/css/*/variables.css
tests/_output/*
#Ignore browserstack
BrowserStackLocal
browserstack.err
cache/
custom/**/
.sass-cache/
.php_cs.cache
# Ignore testing environment
build/tmp/
我的公司做出了一个糟糕的决定。他们决定使用 SuiteCRM,有人为他们安装了它,现在我应该支持和开发它。我们应该对其进行大量自定义,当然需要创建许多关系、自定义字段 e.t.c。但是...我们如何通过 git 来做到这一点?在 Admin/Studio 中进行任何更改后,系统会在文件中创建大约 30-40 个更改,并且无法管理它们。每次修复和重建后都会有数百个变化。太可怕了。
是否有 "the right way" 与 CRM 和 git 一起使用?我试图通过代码而不是 GUI 查找有关关系和字段变化的文档,并找到了许多不同的说明和方法...有一种正确的方法吗?
谢谢。
这:.gitignore 也适用于 SuiteCRM。
为了git对suiteCRM做版本控制,可以使用不同的分支来管理安装文件和代码。例如 master
分支来管理安装文件和 dev
分支来管理您的代码。对于不需要版本控制的文件,只需将它们添加到 .gitignore
.
有SuiteCRM on github供您参考。
- 正如其他人指出的那样,您想使用
.gitignore
文件来忽略某些文件和文件夹,例如/*.log
/custom/working
、/cache
和/upload
。 .ext.php-/custom/modules/ 中的文件也已生成,可能仍未被 git 跟踪。 - 如果您使用 Studio 添加或更改字段,您还必须编写 dump/load 数据库内容 table
fields_meta_data
的挂钩(提示:使用 mysqldump我建议使用--skip-extended-insert --skip-dump-date
来避免 git-unmaintainable 转储格式)。或者,您可以将它们转换为 vardefs - 如果您还想忽略
// created: <timestamp>
行,则必须查看 git-attributes/filters 并且可能会感到头疼。如果您为此找到了可行的解决方案 - 请随时分享:)
还不错。多年来,我一直在为 Sugar 使用不同级别的 Git 和 SVN 管理。
这是一个模板 .gitignore 我通常从以下开始:
# Ignore Everything
/*
# Except .htaccess and Config files
!.htaccess
!config.php
!config_override.php
!.gitignore
# Except custom
!/custom/
# but do ignore some of custom and Extensions stuff
/custom/backup
/custom/blowfish
/custom/history
/custom/index.html
/custom/workflow
/custom/modulebuilder
custom/modules/Connectors
/custom/modules/*/Ext
/custom/application/Ext
# and do track custom modules
!/modules/
/modules/*
!/modules/org_MyModule/
确保手动跟踪最后一部分。创建模块时,将其添加到该列表中。
如果您最终修改了核心文件,无论是为了错误修复还是增强(您应该尽量避免),您可以明确地将它们添加到您的 .gitignore
我最终遇到的最大问题是 config.php
和 config_override.php
。根据您的环境设置,这些并不是那么糟糕,但是 site_url
参数需要根据系统的 URL 进行更改,有点像 PITA。不要认为你可以只跟踪一个或另一个,因为 Sugar 的配置更新过程可以定期重写它们,并且有点不可预知 table。
至于每次更改导致数十个文件更改的说法,是和不是。这取决于一点点,但我肯定已经看到了。您可以做的一件事是尽量减少这种情况,那就是确保您已禁用不使用的语言。我曾参与过一些项目,这些项目实际上跟踪了数以万计组织中没有人使用的语言文件。只有英语。我们将 Sugar 配置为不生成这些文件,而我创建的删除这些文件的差异非常大,以至于我们的 GUI 差异工具无法显示它。
制作中的数据库或工作室变更如何?
容易最大的困难。您可能知道,Sugar 将字段信息存储在 vardef
文件 和 数据库 table fields_meta_data
中。
根据您对 development/deployment 的设置,您可以通过以下几种方法之一解决这个问题。我会概述一些我看到的,
- 每晚备份
- 数据库架构
- fields_meta_data
- 产品目录,产品类别 tables
- 用户 table(但擦除 user_hash 数据)
- 电子邮件地址 table,但仅限用户
此方法可以很好地开发与生产的匹配,但会清除一些敏感数据并且不包括不必要的数据。缺点是需要使用自定义脚本来 (1) 处理备份和 (2) 处理您的开发。环境的备份下载
- 一个频繁的 CRON 驱动脚本,它使用
mysqldump
将密钥 table(例如config
、fields_meta_data
、users
)备份到单个文件,然后检测 "actual changes"(例如 diff 配置为忽略空白时间戳),如果找到它们,将把这些文件提交给 master。
您可以将它与一个类似的脚本配对,该脚本会在生产环境中监视 git status
的输出;我还看到 Inotify 用于此。当发现这些更改时(同样是在生产环境中),它们会自动提交给 master。
完善后,此方法更加自动化,如果您的业务经理之一在 Studio 中进行更改,甚至会收到通知。当您提交本地开发更改时,您会注意到您的 master 与 origin/master 不同,您可以在那里处理潜在的冲突。
我们在产品内部使用 PhpStorm,这使您能够创建更改列表。我通常使用 3 个更改列表 "TODO"、"Default" 和 "Ignore"。这是您可以轻松过滤掉不需要的东西的另一种方式。我们还充分利用了 .gitignore.
如果您正在 Linux/Mac 上开发。作为更改,您可能希望配置 git 以忽略文件权限。您可以在命令行中执行此操作:
git config core.fileMode false
上有关于 SuiteCRM 的文档
Jim Mackin 的 SuiteCRM for Developers 是一本很好的参考书,可以让你暂时停止。
如果您 运行 遇到任何问题,请随时使用我们的论坛页面。
我们非常乐意提供帮助。 :)
官方suiteCRM .git忽略文件你可以copy/paste(来源https://github.com/salesagility/SuiteCRM/blob/master/.gitignore)
所以对于全新的回购你会:
1) 转到文件夹并执行 'git init'
2) 创建 .git忽略包含以下内容的文件
3) 使用 git 添加所有文件。 (最后执行此操作,否则 git忽略将无法正常工作)
## First part from https://github.com/github/gitignore/blob/master/SugarCRM.gitignore
# Ignore custom .htaccess stuff.
/.htaccess
# Ignore large parts of the annoying cache directory without breaking things.
cache/*
upload/*
!upload/index.html
# Ignore some files and directories from the custom directory.
custom/
custom/history/*
custom/blowfish/*
custom/modulebuilder/*
custom/working/*
custom/modules/*/Ext/
custom/modules/unified_search_modules_display.php
# Ignore AOD indexes
modules/AOD_Index/Index/*
install/status.json
# Configuration files should be ignored.
/config.php
/config_override.php
/config_si.php
# Connector configuration should also be ignored.
custom/modules/Connectors/connectors/sources/ext/*/*/config.php
# Logs files can safely be ignored.
*.log
## IDE specific items
# Eclipse
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# Emacs
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
.elc
auto-save-list
tramp
# IntelliJ Idea
*.iml
*.ipr
*.iws
.idea/
.phpstorm.meta.php
# NetBeans
nbproject/
# Vim
.*.sw[a-z]
*.un~
Session.vim
tags
# Windows
Thumbs.db
Desktop.ini
.DS_Store
.DS_Store?
# Microsoft Visual Studio
*.sln
*.suo
*.phpproj
# Disytel
lang_cmp.php
.kdev4/
SuiteCRM.kdev4
#Ignore composer vendor folder
vendor/
public/
#Ignore bower_components
bower_components/
node_modules/
#Ignore Sass Generated files in SuiteP
themes/SuiteP/css/*.map
themes/SuiteP/css/*/*.map
themes/SuiteP/css/*/color-palette.css
themes/SuiteP/css/*/variables.css
tests/_output/*
#Ignore browserstack
BrowserStackLocal
browserstack.err
cache/
custom/**/
.sass-cache/
.php_cs.cache
# Ignore testing environment
build/tmp/