SVN:通过比较文件或文件内容来确定修订的方法

时间:2016-08-30 08:49:07

标签: svn version-control tortoisesvn cornerstone

我有一个场景,我有一个文件,我需要知道这个文件的来源是什么版本。

我可能对特定文件有数百个修订版,并且有一个与这些修订版中的一个或多个匹配的文件。 有没有办法在Tortoise,Cornerstone或通过命令行来做到这一点?

如果问题不是最清楚,请道歉。说实话,我不确定如何表达我正在寻找的东西。

我在这里发现了一个关于git的类似问题;

GIT: determine revision based on a file

2 个答案:

答案 0 :(得分:1)

假设输入文件已经受版本控制,这里有一个快速而又脏的批处理文件,可以完成这项工作。

@echo off

set file=%1
set temp_file="temp.file"

if [%file%] == [] (
  echo Usage: "%0 <file>"
  exit /b
)

for /F "tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
  svn cat -r %%R %file% > %temp_file%
  fc %temp_file% %file% > nul
  if errorlevel 0 if not errorlevel 1 echo Matches revision r%%R
  del /Q %temp_file%
)

这将获取给定文件名的日志,并为每个修订版执行以下操作:

  • 将该修订版的文件版本转储到磁盘上的临时文件
  • 将转储的修订与输入文件
  • 进行比较
  • 如果他们相同,fcerrorlevel设置为0,那么请检查并输出Matches revision r###
  • 删除临时文件

答案 1 :(得分:0)

如果您必须在VCS之外使用任何内容并确定相应的部门,并且不将此数据添加到文件(文本文件)或存储库(二进制文件)中 - 它<\ n <强烈>你的失败(Git-boys 必须遭受痛苦和痛苦,因为他们没有关键字直接/但是有污迹|清洁过滤器/和修订属性/?/,但是在SVN你有这些可能性)。重新考虑您的工作流程并开始使用Power!

在您当前的状态(没有关键字,没有元数据),您可以(对于每个文件)

  • 为无版本文件计算任何可用的哈希
  • 为repo中所有相关修订版本的此文件计算相同的哈希值
  • 比较哈希并找到匹配项