如何在AccuRev中获取补丁文件?

3

这个 man 页面看起来很简单:

accurev diff -- -p

然而,我没有“保留”任何东西,也绝对不想保留任何东西。我需要一个补丁文件来表达我编辑到代码中的更改。但是,不行,显然你要先保留它。难道我需要另一个工作空间,逐个比较文件的差异吗?请告诉我AccuRev没有那么脑残!:( 谢谢!

那就是今天我要做的事情了,但是我希望有一个更好的答案。


你的问题不是很清楚。你是想执行补丁操作还是差异操作? - jstanley
是的,使用“patch(1)”来进行diff和patch。在我“调整”了diff输出(patch文件)之后执行此操作。那么,如何基于我未保留的编辑获取diff(patch文件)呢?显然,“accurev diff”无法工作。 - Bruce K
如果您只是修改文件而不执行任何保留操作,则仅限于工作区中的差异操作。与您最近的更改进行比较。与您的基础版本进行比较和与备份版本进行比较。如果您在开发过程中执行保留操作,则可以对您对文件所做的迭代进行差异比较。回答问题...昨天和今天我做的工作有什么不同?仅保存文件,您将失去此功能。此外,通过执行保留操作,您可以轻松地打补丁这些迭代。 - jstanley
我是AccuRev的新手,使用SCM已经有40年了。我习惯使用命令行工具来完成许多事情。AccuRev似乎试图强迫我使用GUI,但我发现它非常笨拙。所以我想使用熟悉的工具。很抱歉你觉得这个问题很愚蠢或者无知。它是后者,否则我就不会问问题了。顺便说一下,GUI基于CLI工具,GUI确实可以让你看到工作区版本和备份版本之间的差异,所以一定有一个CLI工具可以做我想要的事情。只是对我来说比较难以理解。 - Bruce K
任何在GUI中执行的操作,您也可以通过CLI执行。如果您想查看工作区版本和后备流之间的差异,请运行命令'accurev diff -b <filename>'。 - jstanley
谢谢。换句话说,您必须预先知道要diff哪些文件,并迭代这些文件。如果您想要一个补丁文件的话。我知道有一种方法可以找出已编辑的内容以及这些编辑内容是什么。GUI以某种方式执行此操作。简单的方法是使用GUI并获取每个更改文件的单独列表。但是我想使用各种工具处理整个补丁文件,因此GUI无用。我想这不是使用AccuRev的预期方式,我应该按照AccuRev的方式使用它。叹气 - Bruce K
1个回答

7
list=$(accurev stat -m | awk '{print $1}')
for f in $list ; do
   accurev diff -b ${f#./} -- -p
done > patch-file

太难了。太不明显了。


你试过了吗: accurev diff -- -m ?accurev help diff 说: -m只选择在你的工作空间中被修改的元素。 不能与 -k 一起使用。 - Radu C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接