是否有一个好的SVN工具可以轻松查看过去的修订?

是否有一个好的SVN工具可以轻松查看过去的修订?,svn,tortoisesvn,usability,revision,version-control,Svn,Tortoisesvn,Usability,Revision,Version Control,源代码控制非常好。其中一个很好的特性是,我知道我可以回到以前的版本,以防出现问题 然而,我仍然不愿意删除大量不再需要的代码,但我可能希望在将来使用的部分代码。在当前的代码库中,它真的没有业务。然而,我不喜欢删除它,因为我没有一个简单的方法来浏览我的修订历史并找到它。我经常剪切并粘贴它,然后把它放在带有“unused”和“tmp”等描述性名称的文件中,它们会在那里呆上一段时间 如果我有一个很好的方法浏览存储库历史/搜索过去的代码,这个问题就会得到解决。是否有任何GUI允许我这样做,或者有任何易于使

源代码控制非常好。其中一个很好的特性是,我知道我可以回到以前的版本,以防出现问题

然而,我仍然不愿意删除大量不再需要的代码,但我可能希望在将来使用的部分代码。在当前的代码库中,它真的没有业务。然而,我不喜欢删除它,因为我没有一个简单的方法来浏览我的修订历史并找到它。我经常剪切并粘贴它,然后把它放在带有“unused”和“tmp”等描述性名称的文件中,它们会在那里呆上一段时间


如果我有一个很好的方法浏览存储库历史/搜索过去的代码,这个问题就会得到解决。是否有任何GUI允许我这样做,或者有任何易于使用的流程可以使用?有没有办法用乌龟来做这个?现在我知道的唯一方法是签出不同的修订号,看看我想要的文件是否在那里,这太过冗长了。

我喜欢做的是添加一个标记:在删除某个函数和某个函数之前说“Codebase”。然后,您可以进入OrtoiseSVN中的存储库浏览器,浏览到该标记,并深入其中查找旧文件。单击该文件并选择“打开”以查看该文件中的代码


您也可以通过将存储库浏览器更改为指向某个特定修订而不是指向HEAD(再次,然后浏览到所需的特定文件并打开它)来执行相同的操作,但是标记更容易,因为您可以为标记指定有意义的名称。

您可以通过查看Ortoise SVN中的更改来执行此操作…但是

我个人更喜欢

当您在一个组中工作时,您可以随时在本地提交,然后当您想要尝试提交到组解决方案时,您可以合并所有内容。这样,无论合并过程中发生什么情况,都不会丢失任何数据,因为每个人的硬盘上都有备份存储库,并且组存储库中都有预合并版本。这还意味着,您可以在每次进行更改时提交,无论更改是否有效,因为只有在您将更改推送到集团回购之前,其他人才会看到更改。我喜欢在提交中添加相当长的注释,因为这意味着我完全不必搜索正确的版本


它与我在工作中使用的Ortoise有点不同,但就我而言肯定更好。

您可以使用svn命令行,使用-v(详细,显示更改的路径)和--xml选项,并将结果导入到。这将允许您按“已删除”操作进行筛选,并向您显示删除文件的位置(然后您可以通过grep获取要查找的文件)

例如:

svn log -v --xml /path/to/repo | xml sel -T -t -m "//logentry/paths/path[@action='D']" -v "concat(../../@revision,': ',.)" -n
样本输出:

103: /foo/deprecated.h
99: /foo/bar/badfile.hpp
显然,使用svnlog,您可以将其约束到一个修订范围(-rm:N),或日期范围(-r{date1}:{date2}),或最后N个修订(-lc)

唯一的缺点是误报,因为SVN移动实际上是复制+删除

知道删除该文件的版本后,可以使用svn cat或svn export查看该文件:

svn cat /path/to/repo/foo/deprecated.h@102

由于r103中删除了deprecated.h,我告诉svn获取r102中存在的deprecated.h的路径(删除之前)。

您可以查看各个文件的历史记录,查看它们的更改版本和更改内容,或者这不是您要查找的内容?TortoiseSVN用于在存储库中搜索,不是吗?我最近开始时不时地使用Ortoisehg,因为Mercurial命令工具不太擅长展示全局@R0MANARMY:这听起来有点有用,但我也希望能够轻松地看到该文件当时在中存在的样子time@msw:嗯,是的,查看过去的修订实际上很容易。然而,这些数字帮助不大。JacobM的标签想法似乎可以解决这个问题,如果我能命名修改秀,你用陆龟做命名标签吗?我看到了“复制(分支/标记)”选项,但这似乎复制了整个回购协议。我只想用一个名称来标记一个特定的修订版,或者我只能用git来标记?您可以使用branch/tag选项。它看起来像是复制了整个回购协议,但实际上并没有;它只是标记修订并指向它。使用它--它可以做你想要的。哦,太棒了,正是我想要的。我使用过git,所以我知道分布式版本控制的一些好处。然而,你正在解决一个不同的问题。即使使用Hg或Git,查找一个旧文件并查看它也很烦人(尽管github在使用它时做得很好)嗯,这总是很烦人,但我倾向于使用Mercurial更容易,因为我在本地提交的频率更高,并且我的评论也更具体。这样,我只需要找到正确的修订并运行正确的类,而不是像检查4个不同的提交一样进行检查,这有点类似于JacobM提出的标记思想。对不起,如果我没有把那一条上的点连接起来>