【问题标题】:How to get a batch of file version using a SVN repository如何使用 SVN 存储库获取一批文件版本
【发布时间】:2011-07-29 17:33:40
【问题描述】:

我有一个构建过程,可以将文件从存储库中复制出来以制作二进制映像。我需要构建过程存储库中所有文件的文件修订。我知道我可以运行 svn info [filename] 并以这种方式获取文件版本,但我有超过 4k 个文件需要版本信息。

有没有办法获取这些版本号大量或者我需要编写一个 svn 挂钩来维护一个 XML 文件或具有最新版本号的东西?

编辑:我正在寻找的输出将是对于文件夹的修订版 4329,文件修订版列表是:file1.txt = 修订版 3; file2.txt = 修订版 9; ...我们需要此列表,因此当我们更新设备上的固件时,我们只复制他们绝对需要的更改。所以他们可以跳过两个或三个固件版本,但是因为设备知道它有 file1.txt 的第 3 版,我们不需要更新固件中的那个文件 vs file2.txt 设备上有第 7 版并且需要更新到第 9 版。

希望这有助于使它比以前更清楚。

【问题讨论】:

  • 我要的是版本号,而不是文件的版本。

标签: svn version-control build-script


【解决方案1】:

我不确定我是否理解这个问题 - 你想从 SVN 获取给定 revnum 的文件负载吗(记住每次提交都会增加一个全局 revnum,而不是增加每个文件的 revnum)然后你只需要指定修订。

因此,如果您签出修订版 x,您将获得当时所有文件的快照。无需确定每个文件最后一次更改的 revnum。

【讨论】:

  • 我需要每个文件的修订号。我们稍后会使用此信息,但我需要弄清楚如何在相对论简短(少于 30 分钟)的时间范围内获得超过 4k 文件的项目中每个文件的修订号。
  • 没有每个文件的修订号。 SVN 使用“快照”系统,其中每个版本号都是整个 repo 的全新视图。这是一件好事,因为 1 rev number 可以在特定时间点显示每个文件 - 无需分支或保留文件 revnumbers 列表。它不像 CVS。因此,获得修订版 4329 可为您提供每个文件的正确文件版本。
  • SVN 是否为文件分配了与签入不同的版本无关紧要。如果我打开一个项目,单击其中一个文件 (test1.c) 并使用 TortoiseSVN 来“显示日志”,那么我可以看到该文件的修订版是 54409。然后我打开一个不同的文件(test2.c),修订版是54113,存储库版本是55454,参与该修订版的每个文件都有相同的编号。只要我知道最后一次test1.c 是最后一次签入修订版54409,这是我对存储库中每个文件的编号。
  • 尝试了解会发生什么。当然,您查看的文件显示已更改为 revs 100 和 110。那么,如果您签出修订版 105,您会得到什么版本的文件?回答这个问题,一切都会变得清晰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多