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

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

有帮助吗?

解决方案

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

编辑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 变量没有服务器帐户的正确值,或者也可能是钩子脚本的权限。检查这个 链接了解更多详情.

还有其他挂钩脚本的示例 在协作网.

更多详细信息,请参阅 使用 Subversion 进行版本控制 在线书籍,还有 这里 (检查接下来的部分)。

其他提示

(但应与基于Eclipse的IDE等集锦工作)对于Eclipse:

SVN RepositorySVN Perpective视图,只是去  所需的存储库的Location Properties和更改凭据在Authentication框。

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

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

颠覆1.4.x中已经得到中svn:登录允许在默认pre-revprop-change文件。这可以使用Eclipse与颠覆性SVN插件时引起问题。

要解决神奇错误,指出

  

更改比SVN其他版本属性:日志被禁止

SVN命令后。为了解决这个特定问题添加

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

从上面RedGlyph溶液。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top