是否可以将消息附加到git提交中,该提交将在提取时显示?

时间:2017-09-06 17:37:01

标签: git github

我在一个大型代码库中工作,大约有100名开发人员经常推送/合并到同一个分支机构,偶尔会有人推高需要额外步骤的更改。在一个理想的世界里,沟通是一个很好的解决方案,但在实践中我们都知道,它不会在100%的时间内发挥作用。

我正在寻找一个git或github功能,它允许我们标记提交或合并为需要额外的步骤,或者以某种方式包括在提交提交时将显示的消息。

提交消息非常好,但是每次开发后都需要手动git log每个开发人员,看看他们是否需要做某事。

例如,如果我可以添加“pull {required npm install之类的消息”到我修改package.json的提交,并且在提取时显示消息,那就太棒了。

编辑(5/21/18)

请参阅我接受的答案。 post-merge钩子解决了我正在寻找的功能,并且不依赖于开发人员在其提交中“标记”或“留言”。

2 个答案:

答案 0 :(得分:4)

简短的回答是“不”。长的答案从“是”开始,但继续“有点,只有它会严重结束......”

你可以尝试用钩子装备一些东西,但是这些钩子必须由每个开发者配置;目前还不清楚这是如何运作的。请记住,某些开发人员可能永远不会明确地提取或获取需要特殊处理的提交;所以你必须做一些事情,比如识别所有“新获取的”提交并显示与其中任何一个/全部相对应的消息。

同样,如果真的仅仅是要求开发人员运行git log是不切实际的问题,那么您可以使用执行fetch的别名来标准化每个人(或pull)然后显示log。但同样,真正的问题是,是否应该期望开发人员读取他们刚刚提取的每个新提交的日志消息。 (他们不应该。)

还有其他方法可以将信息附加到提交(例如带注释的标记或注释),以便它们能够从现有提交日志数据的海洋中脱颖而出。但是现在你在创建“特殊”提交时需要额外的步骤,你仍然需要弄清楚如何让所有开发人员在每fetch之后阅读这些消息。

更好的解决方案是以脚本形式提供“额外步骤”作为提交的一部分。标准的方法是通过构建工具。由于我不知道你的构建工具,我不能提供细节;但是你描述的步骤类型(npm install)应该作为每个构建的一部分运行,因为这些命令已经“知道”只是为了根据变化做必要的事情。

答案 1 :(得分:0)

我最终使用了post-merge挂钩,正如对原始问题的评论中所建议的那样。

PACKAGE_JSON_CHANGED=$(git diff --name-only HEAD@{1} HEAD | grep --color=never -E "^package\.json$")
if [ "${PACKAGE_JSON_CHANGED}" != "" ]; then
    echo -e "package.json was modified, you might need to run 'npm install'!"
fi

这与#34;附加"无关。我的问题要求提交的任何东西,而是使用post-merge,因为所有拉动固有地合并。如果我愿意,我可以直接在钩子内调用npm install,但选择回应以允许开发人员自行决定运行它。