有没有版本控制软件能强制保存时设定版本号和填写更新内容?

有没有版本控制软件能强制保存时设定版本号和填写更新内容?

如题,版本号和更新内容总是容易忘记漏写,如果在保存时能强制(能预设和按需更改可能更好)填写,应该是个好时机去写。

这不就是 git?

如果用的是git,可以配合 typicode/husky: Git hooks made easy :dog: woof! (github.com) 进行pre-commit时的版本变更检查。

不过你这又要提交时强制设定版本号,又要按需更改,这不自相矛盾吗?


帮你问了下AI具体怎么实现:

Husky 是一个 Git 钩子(Git hook)工具,可以在 Git 事件发生时触发脚本。要在提交前检查版本文件是否有变动,你可以使用 Husky 的 pre-commit 钩子,并结合一些其他工具来实现这个目标。

以下是一种可能的方法,假设你使用 Node.js,并安装了 Husky 和 lint-staged。在你的项目中执行以下步骤:

  1. 安装 Husky 和 lint-staged:
npm install husky lint-staged --save-dev
  1. package.json 文件中添加以下配置:
{
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
      "check-version-script"
      // 添加其他你想要在提交前执行的脚本
    ]
  },
  "scripts": {
    "check-version-script": "node scripts/checkVersion.js"
  }
}

上述配置中,pre-commit 钩子会触发 lint-staged,而 lint-staged 则会运行指定的脚本,其中包括 check-version-script

  1. 创建 scripts/checkVersion.js 脚本文件:
// scripts/checkVersion.js
const { execSync } = require('child_process');

try {
  // 获取当前提交的版本文件状态
  const status = execSync('git diff --name-only').toString().trim();

  // 如果版本文件有变动,则正常退出,允许提交
  if (status.includes('path/to/version/file')) {
    process.exit(0);
  } else {
    console.error('Error: Version file has not changed. Please update the version file before committing.');
    process.exit(1);
  }
} catch (error) {
  console.error('Error checking version file:', error.message);
  process.exit(1);
}

请将上述脚本中的 path/to/version/file 替换为你的版本文件的实际路径。

  1. 确保版本文件在提交前被修改,以触发检查。如果版本文件未被修改,checkVersion.js 脚本会阻止提交。

这是一个基本的例子,你可能需要根据你的项目结构和需求进行调整。请注意,这里的检查是基于版本文件是否被修改来判断的,你可能需要根据实际情况进行调整。

是保存档案时同时能选push/reset和commit,不是分开几个动作

那你写个脚本不就完了

git提交的hash未尝不是一种版本号。
而commit本来就需要填内容,不能为空的吧