0

我想将默认的 SVN 用户名更改为新名称。我尝试了此链接中建议的解决方案(如何更改访问本地 SVN 存储库的默认作者?),但它不起作用。

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

4

3 回答 3

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 变量没有适合服务器帐户的值,或者也可能是挂钩脚本的权限。检查此链接以获取更多详细信息

CollabNet上还有其他挂钩脚本示例。

更多详细信息请参见使用 Subversion 的版本控制在线书籍,以及此处(查看下一节)。

于 2009-11-03T10:32:55.107 回答
3

对于 Eclipse(但应该与基于 Eclipse 的 IDE(如 Aptana)一起使用):

SVN Repository视图中SVN Perpective,只需转到 Location Properties所需存储库的 并更改Authentication框中的凭据。

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

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

于 2009-11-03T10:49:07.017 回答
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 解决方案。

于 2009-12-12T23:56:01.733 回答