我刚刚加入了一个组织,当前的存储库修订版号就是10000。 我知道在2000版本左右,存储库中有一个文件夹。什么是确定最后修订版何时包含文件夹的最佳方法?
我重新添加了文件夹,现在让我说我在修订版10001。
如果我这样做:
svn log -q -v folder1\folder2\missingFolder\
我只是在版本10001中添加了'missingFolder'。如果我从版本10000运行该命令,它只是说'missingFolder'不存在。
答案 0 :(得分:1)
对我来说,它看起来是正确的。
但我会改为:
svn log -q -v -r10000:2000
和grep
D folder1\folder2\missingFolder
或 iff 你确定folder1\folder2
永远存在,你可以缩小搜索范围并做一下
svn log -q -v -r10000:2000 folder1\folder2
寻找
D missingFolder
我认为你的初始方法并不是很有效,因为当Subversion挖掘修订日志并发现添加了一个文件夹时(正确地)假设没有必要深入挖掘,因为之前的文件夹不存在提交,所以搜索停止。
请注意,我还使用-r
命令行选项限制了要扫描的修订范围。
答案 1 :(得分:1)
尽管两个丢失的文件夹具有相同的名称并且位于相同的存储库目录中,但Subversion认为它们是两个完全独立的项目。如果您执行svn log missingFolder
,您将获得有关您刚添加的信息的信息,该信息与之前删除的信息不同。
让我们一次拿一个:
$ svn log -v
那就是它,然后你搜索文件夹的名称和D
表示它被删除的时间。
列表可能相当长,但它并不需要花费很长时间才能运行。我将通过less
:
$ svn log -v -q | less
然后,我可以/D *missingFolder
找到我看到删除的行。几行将是删除它的修订号。
$ svn log -v $REPO/folder/folder
...
...
[on and on}
r1234 | ....
D folder/folder/missingFolder
deleted missingFolder
------
...
...
我们可以在修订版1234中看到此文件夹已被删除。这意味着它存在于修订版1233中。记住这一点非常重要。
您可以在父文件夹上执行svn log
,这会使输出更短。
如果您想要删除此文件夹或文件的历史记录,请在删除之前将该项目复制到Subversion存储库中。请记住,在修订版1234中删除了此文件夹。这意味着它存在于修订版1233中:
$ svn cp -r1233 $REPO/folder/folder/missingFolder@1233 .
现在,这是当前版本中先前在修订版1233中删除的文件夹。现在,执行日志将显示missingFolder
的完整历史记录。不幸的是,它会在文件或文件夹添加回存储库时显示,但它不会说明文件或文件夹何时被删除。对于该信息,您必须获取父文件夹的svn log
。