如果您尚未设置开发者环境,请在继续本节之前完成。
Workflow
以下是Mattermost开发人员在mattermost-server和mattermost-webapp存储库中的一般工作流程:
- 看看存仓库结构,找到你可以搞清自己在哪里工作的地方。
- 在你fork的仓库,如果是Jira ticket,创建一个分支
PLT-####
,####是ticket的号码;或者GH-####
如果是没有Jira票的GitHub Issue。 - 进行所需的代码更改以完成您的ticket,确保在适当的地方编写或修改单元测试。
- 要测试您的更改,请从服务器存储库的根目录运行
make run
。 这将启动服务器和一个观察者进程,这将在客户端创建时对客户端进行任何更改。 要更改服务器,必须使用make restart-server
重新启动服务器。 您的服务器将运行在http:// localhost:8065
。 - 一旦一切正常工作,满足ticket要求,在server repository上运行
make stop
停止mattermost,然后运行make check-style
检查您的语法,并做make test
测试所有repositories,server和webapp。 - 提交您的更改,推送您的分支并创建pull request。
- 回应对您的pull request的反馈,并根据需要进行更改,方法是向您的分支提交并推送。 如果另一个拉取请求产生冲突,则可能需要重新进行更改。
- 就是这样! 感谢您帮助Mattermost做得更好。
有用的Makefile命令
除了上面提到的命令之外,还有一些其他的make
命令可能有用:
-
make run-server
将只运行服务器而不是客户端 -
make clean-docker
停止并删除您的Docker镜像,是擦除数据库的好方法 -
make run-fullmap
将运行服务器,并使用完整的源映射构建客户端,以便于调试 -
make clean
清理你的临时文件的本地环境 -
make nuke
把你当地的环境抹回到一个全新的开始
只运行特定的服务器单元测试
由于运行每个单元测试需要花费很多时间进行更改,因此可以使用以下命令运行服务器单元测试的子集:
go test -v -run='<test name or regex>' ./<package containing test>
例如,如果您想在api/post_test.go
中运行TestPostUpdate
,您将运行以下命令:
go test -v -run='TestPostUpdate' ./api
仓库结构
对于server,您将在server repository中工作。
- ./api/ holds all API and application related code
- ./model/ holds all data model definitions and the Go driver保存所有数据模型定义和Go驱动程序
- ./store/ holds all database querying code
- ./utils/ holds all utilities, such as the mail utility拥有所有实用程序,如邮件实用程序
- ./i18n/ holds all localization files for the server
对于client,你将在webapp repository中工作。
- ./components/ holds all the React UI components and views拥有所有的React UI组件和视图
- ./actions/ holds all Flux actions where the majority of the logic of the webapp takes place保存了大部分webapp逻辑发生的所有Flux动作
- ./stores/ holds the stores responsible for storing and providing the views with data拥有负责存储和提供数据视图的商店
- ./routes/ holds the definitions for all the React-Router routes保存所有React-Router路由的定义
- ./i18n/ holds the localization files for the client
- ./utils/ holds all widely-used utilities
- ./tests/ holds all the client unit tests
使用GitLab Omnibus进行测试
要使用GitLab Omnibus测试本地编译的Mattermost版本,请替换以下GitLab文件:
- 在
/opt/gitlab/embedded/bin/plattermost
中编译的二进制文件platform
-
/opt/gitlab/embedded/service/mattermost
中的资产(templates, i18n, fonts, webapp)
网友评论