没有版本碰撞时释放提醒或提交阻止程序

Posted

技术标签:

【中文标题】没有版本碰撞时释放提醒或提交阻止程序【英文标题】:release reminder or commit blocker when no version bump 【发布时间】:2021-02-10 00:38:06 【问题描述】:

也许有一些更好的解决方案。 问题是有时我会修复快速推送,当包版本相同时它不会发布是否有任何工具可以告诉我我必须发布包,因为有一些变化?

我正在寻找一种方法来使其正常工作。

版本(A)

检查 mono-repo 的 package.json 并读取文件最后一次提交 ID(通常我只在升级包版本时更新它) 在包的目录中查找在该提交 id 之后是否有任何文件提交。 如果是,则显示警告,提示进行了一些更改,并且在推送之前需要调整包版本

版本(B)

在推送之前,一些 pre-push 挂钩将检查哪些单存储库文件已更改 如果它的 package.json 版本没有被碰撞,将显示警告。

【问题讨论】:

不知道现有的工具是否已经这样做了,版本 A 看起来很理智,写起来也不难。你只是在寻找那种建议吗?或者您对这一点有更具体的问题吗? 【参考方案1】:

通过 husky 预提交和预推送解决:

"husky": 
    "hooks": 
        "pre-push": "yarn lint && yarn test && exec < /dev/tty && yarn bump"
    
,

yarn bump 是一个脚本:

shelljs 和提示

const bumpPackages = (directory) => 

    if (shell.cd(`packages/$directory`).code !== 0) 
        shell.echo('Error: Component does not exist');
        shell.exit(1);
    

    shell.exec('npm version patch --no-git-tag-version > /dev/null');
    shell.exec('git add package.json');
    shell.echo(`$directory -  version bumped succesfull`);
    shell.cd('../../..');
;

循环和碰撞:

directories.forEach((element) => 
  bumpPackages(element.value);
);

和示例目录:

module.exports = [
   title: 'ComponentA', value: 'ComponentA' ,
   title: 'ComponentB', value: 'ComponentB' ,
]

【讨论】:

以上是关于没有版本碰撞时释放提醒或提交阻止程序的主要内容,如果未能解决你的问题,请参考以下文章

提交表单上的阻止按钮

js拖拽原理和碰撞原理

如何在与另一个物理体碰撞时阻止物体失去位置

有没有办法阻止 SQL Express 2008 空闲?

使用 php/javascript 或 jquery 提交 form2 时阻止其他 form1 提交

有没有办法阻止 SVN 的任何变化?