svn恢复正确的svn责备

时间:2011-06-28 14:41:46

标签: svn

是否有一种方法可以使用svn revert返回到特定文件的先前状态,同时保留正确的作者信息(以便作者显示的是进行原始更改的人,而不是执行恢复的人在svn blame?

1 个答案:

答案 0 :(得分:1)

Subversion维护服务器中项目的历史记录。这段历史意味着不可改变,过去发生的事情将保留在服务器中。因此,“恢复”存储库并不能真正解除过去,它正在用旧版本的文件替换“当前”副本。恢复后,您必须提交更改以继续。

这意味着如果您“提交”旧文件,则svn blame信息将是提交者的信息。如果您希望信息不同,则必须:

  1. 创建一个可以作为正确的人提交的环境。
  2. 修改过去的提交以根据需要设置信息。
  3. 请注意,创建文件的旧版本的实际人员并未在当前上下文中创建它们,因此如果您决定将文件“还原”到状态,则他们将不会破坏构建他们几天/几周/几个月前写的。实际上,将是破坏构建的人,因此也是正确的责任人。

    那就是说,如果你发现将责任归咎于其他地方的好处超过了额外的混乱,那么做#1就有几个选择。最简单的方法是在可通过SSH访问的SVN服务器上设置一堆用户帐户。由于您控制了帐户,因此您可以ssh到任何特定用户。由于您将在不知道用户的svn密码的情况下进行结帐和更新,因此您需要使用文件URL,这会绕过HTTP / HTTPS / SVN + SSH密码检查。由于您具有足够的权限来执行所有这些操作,因此您可以将这些用户添加到访问实际SVN存储库的组中。

    要做#2,你必须熟悉SVN存储日志属性的内部架构;但是老实说,我不确定它是否完全可以实现。我怀疑它会从对

    的深入检查开始
    svn propedit -r N --revprop svn:author authorName URL