SVN存储库搜索[关闭]
Posted
技术标签:
【中文标题】SVN存储库搜索[关闭]【英文标题】:SVN Repository Search [closed] 【发布时间】:2010-09-20 05:34:59 【问题描述】:有没有什么好的软件可以让我在我的 SVN 存储库中搜索代码 sn-ps?我找到了“FishEye”,但成本是 1,200,远远超出了我的预算。
【问题讨论】:
你需要搜索repo的历史吗?还是只是头部? 有免费版本的 FishEye - www.atlassian.com/starter @DavidFreitas 现在没有免费选项 有 10 美元的 FishEye 版本:www.atlassian.com/software/starter/overview、@bahrep。一旦关闭,所有收益都会用于慈善事业。 有一个新的svn log --search
选项,对于寻找简单的存储库历史搜索的人来说可能很方便。
【参考方案1】:
2020 年 1 月更新
VisualSVN Server 4.2 支持在 Web 界面中查找文件和文件夹。在demo server’s repositories 之一上试用新功能!
查看version 4.2 Release Notes,并从main download page下载VisualSVN Server 4.2.0。
旧答案
以Subversion 1.8, you can use --search
option with svn log
command 开头。请注意,该命令不会在存储库中执行全文搜索,它仅考虑以下数据:
svn:author
未版本化的属性),
日期(svn:date
未版本化的属性),
日志消息文本(svn:log
未版本化的属性),
更改的路径列表(即受特定修订影响的路径)。
以下是有关这些新搜索选项的帮助页面:
If the --search option is used, log messages are displayed only if the
provided search pattern matches any of the author, date, log message
text (unless --quiet is used), or, if the --verbose option is also
provided, a changed path.
The search pattern may include "glob syntax" wildcards:
? matches any single character
* matches a sequence of arbitrary characters
[abc] matches any of the characters listed inside the brackets
If multiple --search options are provided, a log message is shown if
it matches any of the provided search patterns. If the --search-and
option is used, that option's argument is combined with the pattern
from the previous --search or --search-and option, and a log message
is shown only if it matches the combined search pattern.
If --limit is used in combination with --search, --limit restricts the
number of log messages searched, rather than restricting the output
to a particular number of matching log messages.
【讨论】:
此方法运行速度很快,但不应用于搜索文件是否存在。由于此搜索选项仅解析每个修订版中显式更改的路径列表,因此您可以在存在特定文件的位置创建文件夹副本(从主干创建的新分支),但不会通过此方法列出。 @Pieter-JanBusschaert 您的评论是关于使用 svn log --search 命令。请参阅有关基于 webui 的新搜索的更新答案。它没有这个限制。【参考方案2】:此示例将存储库的完整内容通过管道传输到文件,然后您可以在编辑器中快速搜索文件名:
svn list -R svn://svn > filelist.txt
如果存储库是相对静态的,并且您希望进行快速搜索而无需从 SVN 服务器重复加载所有内容,这将非常有用。
【讨论】:
我应该注意,在我的情况下,有必要使用http
作为协议(svn list -R http://repo/svn/etc
)。
否决,因为 OP 想要搜索文件,而不是文件名。 svn list 命令只转储存储库的文件名。【参考方案3】:
请注意,FishEye(以及许多其他 Atlassian 产品)有一个 10 美元的 Starter Edition,就 FishEye 而言,它为您提供 5 个存储库和最多 10 个提交者的访问权限。 在这种情况下,这笔钱将用于慈善事业。
www.atlassian.com/starter
【讨论】:
不再了吗?我在页面上没有看到免费选项。 @bahrep,我已经更新了答案,现在是 10 美元捐给慈善机构,如果您考虑一下,这实际上是“免费”的。【参考方案4】:有sourceforge.net/projects/svn-search。
还有一个直接来自 SVN 主页的 Windows 应用程序,名为 SvnQuery,地址为http://svnquery.tigris.org
【讨论】:
我自己刚刚下载了这个 - 版本 1.2.2.0 目前可用。 (即超出测试版) SVN 搜索的新 Source Forge URL:svn-search.sourceforge.net【参考方案5】:如果您只搜索文件名,请使用:
svn list -R file:///subversion/repository | grep filename
窗户:
svn list -R file:///subversion/repository | findstr filename
否则结帐并进行文件系统搜索:
egrep -r _code_ .
【讨论】:
这可能不是很明显,但是这些命令适用于任何访问 svn 服务器的方法,而不仅仅是文件:(例如 svn: 和 svn+ssh: 也可以) // ,您介意为每一个提供一个工作示例吗? OP 想要搜索文件,而不仅仅是文件名。文件系统搜索示例不是很有用。【参考方案6】:// 编辑:工具已经在另一个答案中提到,所以把所有功劳归于 Kuryaki。
刚刚找到SupoSE,这是一个基于java 的命令行工具,它扫描存储库以创建索引,然后能够回答某些类型的查询。我们仍在评估该工具,但它看起来很有希望。值得一提的是,它对所有修订进行了完整的索引,包括源代码文件和常用的办公格式。
【讨论】:
【参考方案7】:我开始使用这个工具
http://www.supose.org/wiki/supose
它工作得很好,只是缺少一个可视化的 UI,但速度很快并且有点维护
【讨论】:
现在(2012 年 8 月)该项目似乎停滞不前... 2012 年 12 月,他们发布了一些新的东西 (0.7.1) 好像消失了【参考方案8】:-
创建该存储库的
git-svn
镜像。
在 git 中搜索添加或删除的字符串:git log -S'my line of code'
或 gitk
中的相同
优点是您可以在本地进行许多搜索,而无需加载服务器和网络连接。
【讨论】:
【参考方案9】:非常缓慢(并且粗略地实现)但是如果您正在搜索单个文件或小型存储库的历史记录,svn log 和 svn cat 的组合可以工作:
svn log filetosearch |
grep '^r' |
cut -f1 -d' ' |
xargs -i bash -c "echo ''; svn cat filetosearch -''"
将输出文件更改的每个修订号和文件。您总是可以将每个修订分类到不同的文件中,然后 grep 进行更改。
附言。向任何向我展示如何正确执行此操作的人投票!
【讨论】:
只需使用git-svn
。 Git 在提交历史中内置了代码搜索功能。但是你需要下载整个提交历史才能使用git-svn
。【参考方案10】:
如果您真的很绝望,请转储 repo(查看“svnadmin dump”),然后用 grep 遍历它。它不漂亮,但您可以查看搜索结果以找到指示文件和修订的元数据,然后检查它以获得更好的外观。
当然,这不是一个好的解决方案,但它是免费的 :) SVN 不提供搜索过去签入(甚至过去的日志文件,AFAIK)的功能。
【讨论】:
svnadmin 必须在服务器上执行。您可以在客户端使用 svnrdump。见***.com/a/8867031/911550【参考方案11】:我们使用http://opensolaris.org/os/project/opengrok/
【讨论】:
OpenGrok 现已移至opengrok.github.io/OpenGrok。【参考方案12】:我确实喜欢 TRAC - 这个插件可能对您的任务有帮助:http://trac-hacks.org/wiki/RepoSearchPlugin
【讨论】:
这看起来很有希望......但安装起来不太容易,无法确认它是否适用于 Trac+VisualSVN 服务器。【参考方案13】:theres krugle 和 koders 但两者都很贵。两者都有 Eclipse 的 ide 插件。
【讨论】:
Krugle Basic 怎么样?【参考方案14】:许多 SVN 存储库是“简单的”HTTP 站点,因此您可以考虑查看一些现成的“网络爬虫”搜索应用程序,您可以将其指向 SVN 根目录,它会为您提供基本功能。更新它可能会有点技巧,也许黑客中的一些 SVN 检查可以让索引在你去的时候丢弃或重新索引更改。
只是大声思考。
【讨论】:
这可能不是一个好主意,因为所涉及的开销会很大。此外,SVN 服务器通常不是常规网页,而是通过 webdav 公开的 svn 存储库。以上是关于SVN存储库搜索[关闭]的主要内容,如果未能解决你的问题,请参考以下文章