提问人:Ramin B 提问时间:1/10/2023 最后编辑:bahrepRamin B 更新时间:1/10/2023 访问量:86
在 svn 中提取修订号
Extracting Revision numbers in svn
问:
我正在尝试在 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 ,我们生成了提到的包。
答:
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 会)。关于在这种情况下如何进行的任何想法?
评论
write them automatically in the commit message every time we are committing?
SVN 中的每个提交都记录有其修订号,那么为什么执行相同的 SVN 已经这样做了呢?其次,为什么不在SVN中使用标签来识别特定的开发状态。您似乎使用的修订版是上次特定文件的修订版已更改,这是不同的东西。这些 dll 仅在您的 svn 存储库中还是您正在构建的项目的那些部分?另外,我建议不要通过 svn 钩子脚本。