【问题标题】:Renaming folders in svn,重命名svn中的文件夹,
【发布时间】:2012-05-01 23:24:51
【问题描述】:

在乌龟 svn 中, 在名为 abc 的文件夹中有 3 个 txt 文件。 当我将文件夹从 abc 重命名为 xyz 并查看显示日志时, 它仅显示从 abc 复制 xyz 并删除 abc 文件夹 xyz 中的文件虽然被复制但未显示在日志中。

在svn中重命名文件夹时如何查看文件

【问题讨论】:

  • 所以当您将 abc 重命名为 xyz 时,您要求在修订版的“已更改文件”视图中查看 abc 的完整内容集?或者是其他东西?你为什么想要这个 - 这样你就可以 grep 历史?
  • 是的,我想在 Tortoise svn 中查看 svn 中重命名文件夹 xyz 中的文件。
  • 那我觉得不可能:svn只记录revision中的文件夹rename。
  • 我以为只是复制和重命名..但我需要文件夹和文件夹内的文件
  • 是的,我想如果您想查看日志中的所有内容,那么您可以创建一个新文件夹,手动将所有文件复制到其中,然后删除旧文件夹。但最终结果——目录已被重命名——是完全相同的,在这种情况下,您可能无法通过重命名来追溯目录本身的历史。但是为什么你真的需要这个 - 你想做什么?如果您当时只想使用目录的内容来增强日志数据,您可以使用svn ls path@revision 来做到这一点。但我还是不明白你为什么需要这个。

标签: svn directory rename


【解决方案1】:

您没有看到这三个文件的更改,因为您没有更改这些文件。你只是重命名了他们所在的目录。

你想完成什么?假设 Subversion 确实报告了重命名文件夹中的所有文件都已更改。这对你有什么帮助?我可以想象几种情况,这不是一个好主意:

  • 想象一下我开始使用 Maven 的情况。在 Maven 中,我的源文件应该在文件夹 src/main/java 下。像大多数开发人员一样,我将我的 Java 源代码直接放在存储库的根目录下source。我现在必须将该目录中的文件移动到src/main/java,这可能代表数百个 Java 源文件。现在,我的日志不再只显示三个文件被更改,而是列出数百个。

  • 假设您在重命名目录时确实修改了一些文件。我如何知道由于修改了某些父目录与实际修改的文件而列出了文件的区别。人们已经抱怨日志显示了某些属性被修改的文件,而不是文件本身(当合并发生并且svn:mergeinfo 属性被更新时,这可能会导致问题)。现在,每个文件夹重命名都会向下级联整个存储库。有时会创建一个标签,但名称并没有完全正确(REL-1.2 与 rel-1.2.0),因此人们有时会重命名标签。现在,该标签中的所有文件都会在日志中显示为已更改?

用 Python 或 Perl 做你想做的事并不难。只需执行svn log,然后当您看到某个目录在特定版本中被重命名时,在该文件夹上执行svn ls --recurse,并获取其中的所有文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2017-08-08
    • 2016-09-08
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多