在 Azure DevOps 中拉取请求后修改文件的挂钩或任务

Mar*_*tin 5 git tfs githooks pull-request azure-devops

在 Azure DevOps Server 中完成从功能分支到主分支的拉取请求后,我想修改受保护的主分支中的一些文件。

\n\n

需要重命名一个文件,需要创建另一个文件,第三个文件中有一个要替换的字符串。

\n\n

这可以通过服务器端 git hooks 或 Azure Pipeline 或任务实现吗(抱歉,我是这个主题的新手)。

\n\n

更新

\n\n

钩子或管道应执行以下操作:

\n\n
    \n
  1. 检查文件current.sql是否有内容(如果有,则进入下一步)
  2. \n
  3. 更新 C# 类中的整数变量 (DbVersion)(向其添加 1)
  4. \n
  5. 将 current.sql 文件重命名为 db_update_[new DbVersion].sql
  6. \n
  7. 创建一个新的空 current.sql 文件
  8. \n
\n

Myg*_*een 0

您的场景描述有点模糊,但我会尝试根据我理解您想要做的事情写一些答案:

一般来说,修改构建管道中的分支并不是一个好习惯。如前所述,您应该在将拉取请求合并到分支之前执行此操作。

对于您所描述的内容,最好知道 Git 会自动处理版本控制。每次提交都会创建更改文件的新版本,您可以在 Azure DevOps 的提交历史记录中找到该版本。在我看来,您基本上只是不想丢失在 .sql 文件中所做的编辑。

但是,如果您需要文件的新版本成为管道创建的构建工件的一部分,那么编写一个简短的 shell 脚本可能是有意义的,您可以通过 shell脚本任务运行该脚本。对于字符串替换,请使用“替换令牌”任务

另一个解决方案可能是预推送 githook,它会执行创建新文件的 shell 脚本?您可以在此处阅读有关 githooks 的更多信息。

我希望您能从中找到一些有用的东西,否则最好知道您想用您创建的版本做什么。您稍后会使用这些版本吗?也许重新考虑支持多种环境的不同分支模型可能会更好。