在 svn 中提取修订号

Extracting Revision numbers in svn

提问人:Ramin B 提问时间:1/10/2023 最后编辑:bahrepRamin B 更新时间:1/10/2023 访问量:86

问:

我正在尝试在 jenkins 上创建一个管道,该管道从 svn 存储库中获取代码,构建它(使用 MSBuild),测试它,从构建工件创建一个包(使用 Maven),然后将此包提交到另一个属于另一家公司的 svn 存储库。

此提交必须具有特定的提交消息格式,其中包括:

1-简短的文字

2- 我们存储库的 URL

3-我们用于构建解决方案的一些特定DLL的修订 举个例子:

#Automatic Package Update 
------
src_svn_url = "the source code URL"
src_svn_rev = 33568 , dll1 = 4654 , dll2 = 7657 , ..... 
------

我做了一些研究,发现它可以通过预提交钩子来完成。我们是否能够让这个预提交钩子在我的 repo 中提取不同 dll 的修订号,并在每次提交时自动将它们写入提交消息中?我们的目标是知道使用哪个修订版 dlls ,我们生成了提到的包。

maven svn msbuild jenkins-pipeline commit-message

评论

1赞 khmarbaise 1/10/2023
write them automatically in the commit message every time we are committing?SVN 中的每个提交都记录有其修订号,那么为什么执行相同的 SVN 已经这样做了呢?其次,为什么不在SVN中使用标签来识别特定的开发状态。您似乎使用的修订版是上次特定文件的修订版已更改,这是不同的东西。这些 dll 仅在您的 svn 存储库中还是您正在构建的项目的那些部分?另外,我建议不要通过 svn 钩子脚本。
0赞 Ramin B 1/10/2023
dll 是我们在项目中使用的外部 dll。然后,当构建完成后,我们将构建工件提交到另一家公司的 svn 存储库(这家公司为我们提供了外部 dll)。因此,正如他们要求我们的那样,在提交构建工件时,我们必须指定用于构建代码和获取构建工件的外部 dll 的确切修订版。
1赞 khmarbaise 1/11/2023
如果这些dll来自其他项目的外部,则意味着这些dll是交付,这意味着可以通过svn标签标记这些交付。(释放!并以文本形式定义依赖关系,您可以使用 svn externals 来正确地尊重它们。

答:

0赞 bahrep 1/10/2023 #1

这不是任何提交钩子脚本的任务。

您可以在管道中运行 svnversion 命令来获取修订号,并使用它来为新提交创建提交日志消息到另一个存储库。

例如,您可以在专用文件 log-message.txt 中创建包含所有必要信息的日志消息,然后使用 svn commit -F log-message.txt 命令将文件的内容用作日志消息。

评论

0赞 Ramin B 1/10/2023
谢谢。我的目的是让管道自动完成整个过程。所以,当构建完成时,它必须获取一些特定dll的修订版,创建一个包含我问题示例中的模板的文本文件,并填写dll的修订号,然后进行提交。我的问题是根据模板自动创建该文本文件,然后填写修订号。
0赞 bahrep 1/10/2023
@RaminB,您需要编写脚本来创建提交日志消息。从管道运行此脚本。然后将生成的文本或文件传递到命令中,以便将其用作日志消息。svn commit
0赞 Ramin B 1/10/2023
我可以为此创建一个 python 代码,但如果可能的话,我更喜欢为脚本使用批处理文件。你认为这可能吗?
0赞 bahrep 1/10/2023
@RaminB 是的,我认为这是可能的。不过,恐怕我不能给你举任何例子。但是,我认为您应该能够在 Internet 和 Stack Overflow 上找到一些示例。
0赞 Ramin B 1/10/2023
我忘了说的一件事是,在过程结束时发送到另一个 svn 存储库的包被标记为未版本控制。所以基本上提交它的 svn 命令是 svn import(不是 svn commit)。svn import 不会将 -F file_name作为日志消息(svn commit 会)。关于在这种情况下如何进行的任何想法?