源代码控制很棒。其中一个不错的功能是,我知道我可以回到以前的版本,以防万一有些混乱。
但是,我仍然不愿意删除不再需要的大批代码,但我可能希望将来使用部分代码。它在当前的代码库中确实没有任何业务。但是,我不想删除它,因为我没有简单的方法来浏览我的修订历史并找到它。我经常剪切+粘贴它并将其放在文件中,其名称为“unused”和“tmp”,并且它们会在那里停留一段时间。
如果我有一个很好的方法来浏览存储库历史记录/搜索过去的代码,那么这个问题就解决了。是否有任何GUI可以让我这样做,或者我可以使用任何易于使用的过程?有没有办法用TortoiseSVN做到这一点?现在我唯一知道要采取的方法是检查不同的修订号,看看我想要的文件是否存在,而且只是太过分了。
答案 0 :(得分:4)
我喜欢做的是添加标签:说“Codebase_before_removing_such_and_such_function”。然后你可以进入TortoiseSVN的资源库浏览器,浏览器到该标签,并深入查找旧文件。单击该文件并选择“打开”以查看该文件中的代码。
您也可以通过将存储库浏览器更改为指向特定修订而不是指向HEAD(再次,然后浏览到您想要的特定文件并打开它)来执行相同的操作,但是更容易标记,因为您可以给标签写有意义的名字。
答案 1 :(得分:0)
你可以通过查看Tortoise SVN中的变化来做到这一点......但是......
我个人更喜欢Mercurial。
当您在一个小组中工作时,您可以随意在本地提交,然后当您想要尝试提交组解决方案时,您可以合并所有内容。这样,无论合并期间发生了什么,都不会丢失任何数据,因为每个人都在其硬盘驱动器上备份了存储库,并且组合存储库上提供了合并前版本。它还意味着您可以在每次进行更改时提交,无论它是否有效,因为在您将其推送到组repo之前,没有其他人看到它。我想在我的提交中添加相当冗长的注释,因为这意味着我绝对不必搜索正确的版本。
它与Tortoise(我在工作中使用)有点不同,但就我而言肯定更好。
答案 2 :(得分:0)
您可以使用svn命令行,使用-v(详细,显示更改的路径)和--xml选项,并将结果通过管道传输到XMLStarlet。这将允许您按已删除的操作进行筛选,并显示删除文件的修订版(然后您可以通过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
显然,使用 svn log ,您可以将其约束到一系列修订版(-r M:N)或日期范围(-r {date1}:{date2})或最后一个N个修订版(-l C)。
唯一的缺点是假阳性,因为SVN移动实际上是复制+删除。
一旦您知道删除它的修订版,就可以使用 svn cat 或 svn export 来查看该文件:
svn cat /path/to/repo/foo/deprecated.h@102
由于在r103中删除了deprecated.h,我告诉svn获取deprecated.h的路径,因为它存在于r102中(删除之前)。