如何更改用于访问SVN存储库的默认作者?

时间:2009-11-03 10:15:57

标签: eclipse svn aptana subversive

我想将默认的SVN用户名更改为新名称。我尝试了此链接(How do I change the default author for accessing a local SVN repository?)中建议的解决方案,但它无效。

我可以通过命令行访问SVN存储库,使用Subversive客户端访问Aptana。

3 个答案:

答案 0 :(得分:3)

编辑:这个答案是关于如何更改日志中的作者,而不是如何设置默认作者。我会在这里留下解决方案,因为它仍然可以帮助撤消过去的一些提交,如果作者不是正确的。

编辑2 :.bat文件的钩子脚本示例和信息。


你没有提供太多细节,所以我们不得不猜测,我的第一个想法是关于调用验证更改的钩子脚本。在这种情况下,您的客户端不是问题,这是服务器配置问题。

确保服务器可执行pre-revprop-change挂钩脚本(位于服务器上的<repository>/hooks目录中)并允许更改作者。

这是C:

中的一个例子
#include <stdio.h>

int main(int argc, char *argv[])
{
int i;
 char *repos = argv[1];
 char *rev = argv[2];
 char *user = argv[3];
 char *propname = argv[4];
 char *action = argv[5];

 if (!strcmp(action, "M") && !strcmp(propname, "svn:log")) return 0;
 if (!strcmp(action, "M") && !strcmp(propname, "svn:author")) return 0;
 fprintf(stderr, "Changing revision properties other than svn:log or svn:author is prohibited");
 return 1;
} 

如果你的SVN服务器在Linux上,你也可以简单地将每个存储库自动创建的pre-revprop-change.tmpl文件重命名为pre-revprop-change,并为服务器授予它可执行权限。它应该是这样的,以允许作者和日志更改:

#!/bin/sh

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log or svn:author is prohibited" >&2
exit 1

对于Windows:

@echo off
REM pre-revprop-change.bat hook script
if "%4" == "svn:log" exit /b 0
if "%4" == "svn:author" exit /b 0
echo "Changing revision properties %4% is prohibited" >&2
exit /b 1

如果它不起作用,可能是由于COMSPEC或PATH变量没有服务器帐户的正确值,或者它也可能是钩子脚本的权限。请检查此link for more details

还有其他钩子脚本at CollabNet的例子。

Version Control with Subversion在线图书以及here中的更多详细信息(请查看下一部分)。

答案 1 :(得分:3)

对于Eclipse(但应该像Aptana一样使用基于Eclipse的IDE):

SVN Repository的{​​{1}}次观看中,只需转到  所需存储库的SVN Perpective并更改Location Properties框中的凭据。

它应该从现在开始改变您的作者。

如果你想重写历史,你必须使用像RedGlyph的解决方案。

答案 2 :(得分:0)

Subversion 1.4.x在默认pre-revprop-change文件中只允许使用svn:log。当使用带有Subversive svn插件的Eclipse时,这可能会导致问题。

解决说明

的神奇错误
  

禁止更改svn:log以外的修订版属性

在svn命令之后。要解决这个特殊问题,请添加

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi

来自上面的RedGlyph解决方案。