javascript 添加分支名称标记以提交消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 添加分支名称标记以提交消息相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env node

const fs = require('fs');

const JIRA_TAG = 'TAG';

/* If message title:
 * * Doesn't start with square brackets []
 * * Doesn't start with Merge branch
 * * Doesn't start with Merge pull request
 * * Doesn't start with #
 * and
 * branch name starts with ${JIRA_TAG}-XXX (e.g. TAG-123-branch-description)
 * then prepend the issue tag to the commit message
 *
 * My awesome commit -> [TAG-123] My awesome commit
 */

const startsWithBraces = (str) => str.match(/^\[[^\]]/);
const startsWithMergeBranch = (str) => 0 === str.indexOf('Merge branch');
const startsWithMergePR = (str) => 0 === str.indexOf('Merge pull request');
const startsWithHash = (str) => 0 === str.indexOf('#');
const isInvalidMessage = (str) =>
    !startsWithBraces(str) &&
    !startsWithMergeBranch(str) &&
    !startsWithMergePR(str) &&
    !startsWithHash(str);
const tagMatcher = new RegExp(`^${JIRA_TAG}-\\d+`, 'i');
const getIssueTagFromBranchName = (str) => {
    const matched = str.match(tagMatcher);
    return matched && matched[0];
};

const messageFile = process.env.GIT_PARAMS;
const message = fs.readFileSync(messageFile, { encoding: 'utf-8' });
const messageTitle = message.split('\n')[0];
const branchName = require('child_process')
    .execSync('git rev-parse --abbrev-ref HEAD', { encoding: 'utf-8' })
    .split('\n')[0];
const issueTag = getIssueTagFromBranchName(branchName);

if (issueTag && isInvalidMessage(messageTitle)) {
    // Apply the issue tag to message title
    const messageLines = message.split('\n');
    messageLines[0] = `[${issueTag.toUpperCase()}] ${messageTitle}`;
    fs.writeFileSync(
        messageFile,
        messageLines.join('\n'), { encoding: 'utf-8' });
    console.log(`New message title: ${messageLines[0]}`);
}

以上是关于javascript 添加分支名称标记以提交消息的主要内容,如果未能解决你的问题,请参考以下文章

ruby 根据分支名称创建一个提交消息,其中包含Pivotal故事的链接,并将其全部放在剪贴板上。

带有分支名称的提交的 Git 别名

javascript 最后一个提交的作者用它的消息创建一个标记(异步getter的例子)

使用 cvs2svn 时,如何重命名符号以使分支和标记解析为相同的名称?

列出 git 标签名称、日期和消息

如何使用 git log --graph 显示标签名称和分支名称