我最近和SVN玩了一会儿。我面临的问题如下:
r100
r101
a.txt
。第3个人向第1个人投诉。a.txt
,创建修订版r102
。r101
中的项目A部分中起作用,并意识到项目的A部分由于缺失而无法在r101
中编译文件。这是有些人会认为是轻微的滋扰以及有些人会认为是一场重大灾难。但无论这有多糟糕,我目前正在编写一些代码来抓取(相当大的)SVN来获取一些统计信息。为此,让项目在尽可能多的修订下成功编译将是有用的,即使它们是有缺陷的"由于缺少文件,例如本例中的修订版r102
。对我来说,这是一个特殊的问题,因为项目的某些(几乎被遗弃)部分在很长一段时间内都缺少某些文件,而开发发生在项目的其他部分。原则上,通过使用以下方法可以解决问题(至少在我的情况下):
svn up
开始逐步修订。svn up
删除,则不要执行删除。这样,我看到的版本实际上并不是代码的修订版本,因为它们在SVN中,但是后来修订版本中存在一些虚假文件。对于我想要使用的统计类型,这不是问题,因为只有主文件明确包含的文件才会被计算。有了这个,我将能够显着提高我的测量。
对我来说,这会带来
如何指示SVN在svn up
上跳过传入的文件删除?
答案 0 :(得分:1)
最直接的方法似乎是进行干运行以找到要删除的文件,然后更新除这些文件之外的所有文件。
虽然svn up
不支持干运行标志,但您可以使用svn merge
执行干运行更新。处理修订号 - 这将合并r667。
svn merge --dry-run -r HEAD:666 .
您可以使用awk过滤掉要删除的文件:
awk '/^D/ {next} {print $2}'
最后,您可以使用xargs仅更新不会删除的文件:
xargs svn up -r667
将所有这些放在一起,合并修订版667:
svn merge --dry-run -r HEAD:666 . | awk '/^D/ {next} {print $2}' | xargs svn up -r667
在缺点方面,这是非常缓慢的,因为它基本上试图合并每个修订版两次。