【发布时间】:2016-02-06 23:18:11
【问题描述】:
我正在编写一个 shell 脚本,它可以存储 SVN 工作副本的实际状态并在以后恢复它,就像它原来一样。目前,我对文件和目录修订的特定、罕见组合存在问题,这似乎无法检测到。
假设有一个包含两个修订版的存储库。 有两种情况:
假设
foo是仅存在于修订版2 中的文件(或目录)。开始时整个工作副本位于修订版2。然后foo(并且仅foo)是更新到第 1 版。假设
bar是仅存在于修订版1 中的文件(或目录)。开始时整个工作副本位于修订版1。然后bar(并且仅bar)是更新至第 2 版。
这两种情况非常相似,但似乎它们有不同的解决方案。在这两种情况下,文件(或目录)都会消失。但是,svn status 命令的输出不包含任何相关信息。
如何通过 shell 脚本创建此类文件和目录的列表?
有一个简单但不好的解决方案。可以使用命令svn list 获取当前版本中应该存在的文件列表,并将其与实际存在的文件列表进行比较。
这种解决方案是不可接受的,因为它需要大量时间并且会产生大量的服务器流量。
我发布了我能想到的最佳答案。不过,它仅适用于第一种情况并且有误报。
【问题讨论】:
-
你的意思是
cp -a? -
@EtanReisner 这个解决方案不适合我的项目。他们中的大多数有数百兆字节。复制太多了。大多数情况下,只有几个小文件被更改。这就是为什么我要编写脚本来仅复制更改的文件。