Gitea 1.18 功能前瞻:创建工单、合并请求时启用表单和校验

对于开发来说,我们在收到开发工单时希望有完整的需求描述、错误日志以及问题复现方法。为了帮助提问者讲清楚他们的需求,Gitea 在新版本中推出表单和校验功能。

在最新的 dev 分支中,Gitea 的议题模板功能得到增强,用户不仅可以使用传统的 Markdown 模板创建工单与合并请求,还可以使用 YAML 模板创建预格式化的问卷调查清单。同时,1.18-rc1 将于 9 月中旬发布!

模板介绍

Gitea 支持两种格式的模板,Markdown 和 YAML。

Markdown 模板

在 Gitea 中存在两种用途的 Markdown 模板:

  • ISSUE_TEMPLATE/bug-report.md 用于规范工单的 Markdown 文本描述
  • PULL_REQUEST_TEMPLATE.md 用于规范合并请求的 Markdown 文本描述

对于以上 Markdown 模板,我们推荐您将它们放置到项目目录 .gitea 进行收纳。

YAML 模板

用 YAML 语法编写的模板相比 Markdown 可以实现更丰富的功能,利用表单实现诸如:问卷调查、字符校验。在 Gitea 中的 YAML 同样支持两种用途:

  • ISSUE_TEMPLATE/bug-report.yaml 用于创建问卷调查形式的工单
  • PULL_REQUEST_TEMPLATE.yaml 用于创建表单形式的合并请求

对于以上 YAML 模板,我们同样推荐您将它们放置到项目目录 .gitea 进行收纳。

表单支持通过 URL 查询参数传值

当新建工单页面 URL 以 ?title=Issue+Title&body=Issue+Text 为查询参数,表单将使用其中的参数(key-value)填充表单内容。

Gitea 支持的模板文件路径

工单模板文件名:

  • ISSUE_TEMPLATE.md
  • ISSUE_TEMPLATE.yaml
  • ISSUE_TEMPLATE.yml
  • issue_template.md
  • issue_template.yaml
  • issue_template.yml
  • .gitea/ISSUE_TEMPLATE.md
  • .gitea/ISSUE_TEMPLATE.yaml
  • .gitea/ISSUE_TEMPLATE.yml
  • .gitea/issue_template.md
  • .gitea/issue_template.yaml
  • .gitea/issue_template.yml
  • .github/ISSUE_TEMPLATE.md
  • .github/ISSUE_TEMPLATE.yaml
  • .github/ISSUE_TEMPLATE.yml
  • .github/issue_template.md
  • .github/issue_template.yaml
  • .github/issue_template.yml

合并请求模板:

  • PULL_REQUEST_TEMPLATE.md
  • PULL_REQUEST_TEMPLATE.yaml
  • PULL_REQUEST_TEMPLATE.yml
  • pull_request_template.md
  • pull_request_template.yaml
  • pull_request_template.yml
  • .gitea/PULL_REQUEST_TEMPLATE.md
  • .gitea/PULL_REQUEST_TEMPLATE.yaml
  • .gitea/PULL_REQUEST_TEMPLATE.yml
  • .gitea/pull_request_template.md
  • .gitea/pull_request_template.yaml
  • .gitea/pull_request_template.yml
  • .github/PULL_REQUEST_TEMPLATE.md
  • .github/PULL_REQUEST_TEMPLATE.yaml
  • .github/PULL_REQUEST_TEMPLATE.yml
  • .github/pull_request_template.md
  • .github/pull_request_template.yaml
  • .github/pull_request_template.yml

工单模板目录

由于工单存在多种类型,Gitea 支持将工单模板统一收纳到 ISSUE_TEMPLATE 目录。以下是 Gitea 支持的工单模板目录:

  • ISSUE_TEMPLATE
  • issue_template
  • .gitea/ISSUE_TEMPLATE
  • .gitea/issue_template
  • .github/ISSUE_TEMPLATE
  • .github/issue_template
  • .gitlab/ISSUE_TEMPLATE
  • .gitlab/issue_template

目录支持混合存放 Markdown (.md) 或 YAML (.yaml/.yml) 格式的工单模板。另外,合并请求模板不支持目录存放。

模板语法

Markdown 模板语法

---name: "Template Name"
about: "This template is for testing!"
title: "[TEST] "
ref: "main"
labels:- bug
- "help needed"---This is the template!

上面的示例表示用户从列表中选择一个工单模板时,列表会展示模板名称 Template Name 和模板描述 This template is for testing!。 同时,标题会预先填充为 [TEST],而正文将预先填充 This is the template!。 最后,Issue 还会被分配两个标签,bughelp needed,并且将议题指向 main 分支。

YAML 模板语法

YAML 模板格式如下,相比 Markdown 模板提供了更多实用性的功能。

name: 表单名称
about: 表单描述
title: 默认标题
body: 主体内容type: 定义表单元素类型id: 定义表单标号attributes: 扩展的属性validations: 内容校验

下例 YAML 配置文件完整定义了一个用于提交 bug 的问卷调查。

name: Bug Report
about: File a bug report
title: "[Bug]: "
body:- type: markdownattributes:value: |Thanks for taking the time to fill out this bug report!- type: inputid: contactattributes:label: Contact Detailsdescription: How can we get in touch with you if we need more info?placeholder: ex. email@example.comvalidations:required: false- type: textareaid: what-happenedattributes:label: What happened?description: Also tell us, what did you expect to happen?placeholder: Tell us what you see!value: "A bug happened!"validations:required: true- type: dropdownid: versionattributes:label: Versiondescription: What version of our software are you running?options:- 1.0.2 (Default)- 1.0.3 (Edge)validations:required: true- type: dropdownid: browsersattributes:label: What browsers are you seeing the problem on?multiple: trueoptions:- Firefox- Chrome- Safari- Microsoft Edge- type: textareaid: logsattributes:label: Relevant log outputdescription: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.render: shell- type: checkboxesid: termsattributes:label: Code of Conductdescription: By submitting this issue, you agree to follow our [Code of Conduct](https://example.com)options:- label: I agree to follow this project's Code of Conductrequired: true

在 YAML 模板中包含 Markdown 格式文本描述

您可以在 YAML 模板中使用 markdown 元素为开发者提供额外的上下文支撑,这部分内容会作为创建工单的提示但不会作为工单内容提交。

attributes 子项提供了以下扩展能力:

描述 必选 类型 默认值 有效值
value 渲染的文本。支持 Markdown 格式 必选 字符串 - -

Textarea 多行文本输入框

您可以使用 textarea 元素在表单中添加多行文本输入框。 除了输入文本,开发者还可以在 textarea 区域附加文件。

attributes 子项提供了以下扩展能力:

描述 必选 类型 默认值 有效值
label 预期用户输入的简短描述,也以表单形式显示。 必选 字符串 - -
description 提供上下文或指导的文本区域的描述,以表单形式显示。 可选 字符串 空字符串 -
placeholder 半透明的占位符,在文本区域空白时呈现 可选 字符串 空字符串 -
value 在文本区域中预填充的文本。 可选 字符串 - -
render 如果提供了值,提交的文本将格式化为代码块。 提供此键时,文本区域将不会扩展到文件附件或 Markdown 编辑。 可选 字符串 - Gitea 支持的语言。

validations 子项提供以下文本校验参数:

描述 必选 类型 默认值 有效值
required 防止在元素完成之前提交表单。 可选 布尔型 false -

Input 单行输入框

您可以使用 input 元素添加单行文本字段到表单。

attributes 子项提供了以下扩展能力:

描述 必选 类型 默认值 有效值
label 预期用户输入的简短描述,也以表单形式显示。 必选 字符串 - -
description 提供上下文或指导的字段的描述,以表单形式显示。 可选 字符串 空字符串 -
placeholder 半透明的占位符,在字段空白时呈现。 可选 字符串 空字符串 -
value 字段中预填的文本。 可选 字符串 - -

validations 子项提供以下文本校验参数:

描述 必选 类型 默认值 有效值
required 防止在未填内容时提交表单。 可选 布尔型 false -
is_number 防止在未填数字时提交表单。 可选 布尔型 false -
regex 直到满足了与正则表达式匹配的值。 可选 字符串 - 正则表达式

Dropdown 下拉菜单

您可以使用 dropdown 元素在表单中添加下拉菜单。

attributes 子项提供了以下扩展能力:

描述 必选 类型 默认值 有效值
label 预期用户输入的简短描述,以表单形式显示。 必选 字符串 - -
description 提供上下文或指导的下拉列表的描述,以表单形式显示。 可选 字符串 空字符串 -
multiple 确定用户是否可以选择多个选项。 可选 布尔型 false -
options 用户可以选择的选项列表。 不能为空,所有选择必须是不同的。 必选 字符串数组 - -

validations 子项提供以下文本校验参数:

描述 必选 类型 默认值 有效值
required 防止在元素完成之前提交表单。 可选 布尔型 false -

Checkboxes 复选框

您可以使用 checkboxes 元素添加一组复选框到表单。

attributes 子项提供了以下扩展能力:

描述 必选 类型 默认值 有效值
label 预期用户输入的简短描述,以表单形式显示。 必选 字符串 - -
description 复选框集的描述,以表单形式显示。 支持 Markdown 格式。 可选 字符串 空字符串 -
options 用户可以选择的复选框列表。 有关语法,请参阅下文。 必选 数组 - -

对于 options,您可以设置以下参数:

描述 必选 类型 默认值 有效值
label 选项的标识符,显示在表单中。 支持 Markdown 用于粗体或斜体文本格式化和超文本链接。 必选 字符串 - -
required 防止在元素完成之前提交表单。 可选 布尔型 false -

关于 Gitea

上海吉谛科技有限公司对接 Gitea 相关的商务合作,现已推出开源且自主可控的 DevOps All-in-one 解决方案。

Gitea 项目由公司创始人 Lunny 在 2016 年创建并开源,经过 6 年多的发展,在 GitHub 上获得了超过 3 万 1 千颗星,累计下载量超过 3 亿次,约 40 万使用者,获得了上千家国内外中大型企业认可并在企业中进行了部署。

合并请求格式太乱?工单内容各写各的?表单模板来帮你相关推荐

  1. 学习日志day45(2021-09-09)(1、有道翻译API使用json格式数据 2、JSONP 3、Ajax提交form表单 4、Web Uploader)

    学习内容:学习JavaWeb(Day45) 1.有道翻译API使用json格式数据 2.JSONP 3.Ajax提交form表单 4.Web Uploader 1.有道翻译API使用json格式数据 ...

  2. php 表单提交文件大小,PHP如何通过表单直接提交大文件详解

    PHP如何通过表单直接提交大文件详解 前言 我想通过表单直接提交大文件,django 那边我就是这么干的.而对于 php 来说,我认为尽管可以设置最大上传的大小,但最大也无法超过内存大小,因为它无法把 ...

  3. ONLYOFFICE文档V7.2现已发布————插件市场、实时查看器、连写、全新表单字段、UI 更新等

    ONLYOFFICE文档V7.2现已发布 ----插件市场.实时查看器.连写.全新表单字段.UI 更新等 我们已在最新版本的在线编辑器中提供了多种实用性改进,比如:轻松的插件安装流程.实时查看器.支持 ...

  4. php表单验证_用PHP进行表单验证

    php表单验证 In this article you'll construct and validate a simple form using HTML and PHP. The form is ...

  5. python表单验证_Python——flask_wtf验证form表单

    前言: web表单是web应用程序的基本功能.它是HTML页面中负责数据采集的部件.表单有三个部分组成:表单标签.表单域.表单按钮.表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的 ...

  6. 用php实现一个简易的web表单生成器,网络编程PHP Web表单生成器案例分析

    本文实例讲述了PHP Web表单生成器.分享给大家供大家参考,具体如下: 1.实例: 2. 需求分析 在项目的实际开发中,经常需要设计各种各样表单.直接编写HTML表单虽然简单,但修改.维护相对麻烦. ...

  7. html表单中怎么写年份,HTML表单

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 这一部分说的比较乱, 我随便写写 (1) 元素 HTML 表单用于收集用户输入. 元素定义 HTML 表单 (2) 元素 ...

  8. 表单展示界示例_联系表单页面设计的12个最佳实践(包括示例)

    表单展示界示例 Do you want to improve your contact form page design? A good contact form page design encour ...

  9. 表单ajax提交插件,jQuery Form 表单提交插件-----ajaxSubmit() 的应用

    Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.ajaxSubmit() 介绍 立即通过AJA ...

最新文章

  1. 如何定位EXC_BAD_ACCESS错误 (info malloc-history)
  2. cisco设备常用命令
  3. RasberryPi快速启动(适合首次接触树莓派学习者)
  4. 纽约时报:人们正成为移动通讯的奴隶
  5. Kubernetes架构为什么是这样的?
  6. Tomcat应用中post方式传参数长度限制
  7. volatile与多线程
  8. 关于 hystrix 的异常 fallback method wasn‘t found
  9. 【excel技巧读书笔记007】此工作薄包含一个或多个无法更新的链接
  10. Unknown run configuration type AndroidRunConfigurationType的解决办法
  11. Microsoft Office 2016 简体中文 Vol 版镜像下载
  12. matlab的课程,matlab简介(中科大MATLAB课程).ppt
  13. 微信公众号网页jsapi授权
  14. AI根据代码内容自动起函数名,再也不怕命名不规范的同事了|开源
  15. 计算机中存储单位的认识与理解
  16. 数字 IC 技能拓展(18)如何快速上手 FPGA 开发板呢
  17. 基于Android的医院预约挂号系统,基于Android的医院预约挂号系统设计与实现
  18. 关于Java事务原理的探讨
  19. 【Java设计模式】简单学抽象工厂模式——你好,微信还是支付宝
  20. HCCG-CycleGAN网络结构、原理、以及相关代码--Generating Handwritten Chinese Characters using CycleGAN

热门文章

  1. Echarts X轴内容过长自动隐藏,鼠标移动上去显示全部
  2. 关于pyrit安装失败最新解决
  3. 安装一个新的int 9中断例程【在DOS下,按Tab建后改变当前屏幕的显示颜色,其它键照常处理】...
  4. Ambari2.7+HDP3.0安装(基于Centos7)
  5. 安卓手机主题软件_安卓手机赚钱软件
  6. 八、Web 的攻击技术
  7. 百度网站优化和360网站优化的排名算法异同之处
  8. python成都_Python抓取成都房价信息
  9. 随机梯度下降法与批处理梯度下降法
  10. linux使用百度网盘(bypy)