#jira #git #jet #command-line #interface #commit #git-checkout

bin+lib jetkcli

一个有强烈意见的 jira/git 命令行界面

3 个版本

0.1.2-alpha12020年2月23日
0.1.1-alpha12020年2月23日
0.1.0-alpha12020年2月23日

#3 in #jet

MIT 协议

55KB
1.5K SLoC

Jetkcli

嵌入式终端功夫命令行界面

⚠️ Jetkcli 仍在开发中 ⚠️

在您理解为什么以及如何使用它之前,请勿急于安装和使用 jet。花时间阅读这一部分,这可能为您节省宝贵的时间。

我应该使用 Jet 吗?

Jet 设计在非常特定的环境下工作

  • 您使用 git 并想强制执行分支和提交的命名约定。
  • 您使用 Jira,并希望自动化一些重复/无聊的任务。

如果您的项目不符合此描述,您可能不想使用 Jet(并且无论如何也无法使用)。

Jet 能为我做什么?

  1. 当开发项目时,开发者经常尝试强制执行有关提交消息、分支模式、Jira 工作流等方面的良好实践。不幸的是,人们来来去去,人类会犯错误,事情变得一团糟。

  2. 当与 Jira 一起工作时,我们执行了许多与 git 操作概念上相匹配的重复任务。让我们假设以下场景

主要开发者 Alice 要求 Bob 在 jet 项目中实现一个新命令。她告诉 Bob 取相应的任务。Bob 开始在 JET-1 上工作,并将其分配给自己,将任务状态转换为 "工作中"。他检查出一个新的本地 git 分支,其名称为 feat/JET-1。完成代码编辑后,Bob 创建了一个以下消息的提交: feat(command): add jet 1 feature [JET-1]。Bob 编码完成,将他的工作推送到远程仓库并提交一个 PR。他指派 Alice 进行审查。他将 Jira 上的任务状态更改为 "审查",并将其分配给 Alice。

Jet的目标是减少这种重复,并在可能的情况下通过统一相关的jira和git工作流程来自动化一些任务。

以下是实现这一目标的计划功能

  • 强制执行分支模型和提交信息约定,参考您的issue(见常规提交)✔️
  • 方便的提交生成命令,匹配您的约定模型(您只需要输入提交信息)✔️
  • 自动分支命名✔️
  • 在开始处理issue时自动转换issue状态和分配
  • 在您的项目托管在的git平台提交PR。
  • 自动在您的git平台(bitbucket、github、gitlab)上提交PR并为其分配审查者。
  • 提交PR时自动转换issue状态和分配。
  • 从命令行读取issue描述和评论✔️
  • 生成markdown更改日志

安装

要安装Jetkcli,您需要在系统上安装rust

然后您可以运行cargo install jetkcli

全局设置

在开始使用jet之前,您需要创建以下配置文件

平台 位置
Linux $XDG_CONFIG_HOME$HOME/.config /home/alice/.config/jet/config.toml
macOS $HOME/Library/Preferences /Users/Alice/Library/Preferences/jet/config.toml
Windows {FOLDERID_RoamingAppData} C:\Users\Alice\AppData\Roaming\jet\config.toml

您可以从doc/example.config.toml复制示例。

# "my_corporate_jira" is an arbitrary value, put whatever you want here
[servers.my_corporate_jira]

url = "corporate.jira.com"
username = "[email protected]"
password = "hunter2"

[servers.local]

url = "https://127.0.0.1:8080"
username = "bob.smith"
password = "hunter2"

私有项目设置

TODO

共享项目设置

此文件在${project_dir}/.jetp/config.shared.toml中生成。上面的示例显示了默认生成的文件。

[jira]
# project short name in jira, generated from `jet init` -p arg
project_name = "MYP"
# infered for global settings with one server or from `jet init` -s arg
server_name = "local"
server_url = "https://127.0.0.1:8080"

# Default values, change this if you have custom issue types
[jira.workflow]
wip = "In Progress"
done = "Done"
todo = "To Do"

[git]
# Default conventional commit prefix
commit_types = ["fix", "feat", "chore", "style", "doc"]
# Default branch prefix
branch_types = ["fix", "feat", "chore", "style", "doc"]
# Default branch separator (ex: feat/JET-1)
branch_separator = "/"

命令

Init

init命令执行以下操作

  • 检查当前目录是否为git仓库。
  • 检查您的Jira项目是否存在于远程Jira服务器中。
  • 创建.jet目录和默认本地配置。
jet init -p PRO -s my_jira_server

如果您在$XDG_CONFIG_HOME/jet/config.toml中只配置了一个Jira服务器,则可以省略--server标志。

Checkout

类似于git checkoutjet checkout允许您使用-b标志更改工作分支并创建新的分支。在检出新分支时,jet需要分支前缀后跟issue键

这会执行以下操作

  • 将issue分配给在$XDG_CONFIG_HOME/jet/config.toml中定义的用户。
  • 将issue转换为在.jet/config.shared.toml中设置的wip状态。
  • 创建并检出具有以下名称的新本地分支:{prefix}{separator}{issue_key}(见共享设置
jet checkout -b feat JET-1  # create and checkout a branch named "feat/JET-1"

在检出现有分支时

  • 如果当前用户未分配给issue,则发出警告
  • 执行git checkout
jet checkout feat JET-1

如果针对此问题只有一个分支,您可以使用简短版本

jet checkout JET-1

提交

Jet生成与您配置的提交前缀匹配的子命令(参见项目设置共享

jet feat "this is a cool feature"

假设您正在处理问题JET-1,这将产生以下提交feat: 这是一个很酷的功能 [JET-1]

此外,您还可以为您的提交提供一个范围

jet fix "toml parse error" config

这将产生以下提交fix(config): toml 解析错误 [JET-1]

提交

TODO

依赖项

~28MB
~638K SLoC