我想將默認的SVN用戶名更改爲新名稱。我嘗試了此鏈接中建議的解決方案(How do I change the default author for accessing a local SVN repository?),但它不起作用。如何更改訪問SVN存儲庫的默認作者?
我可以通過命令行和Aptana使用Subversive客戶端訪問SVN存儲庫。
我想將默認的SVN用戶名更改爲新名稱。我嘗試了此鏈接中建議的解決方案(How do I change the default author for accessing a local SVN repository?),但它不起作用。如何更改訪問SVN存儲庫的默認作者?
我可以通過命令行和Aptana使用Subversive客戶端訪問SVN存儲庫。
編輯:這個答案是關於如何更改日誌中的作者,而不是如何設置默認作者。我將把解決方案留在這裏,因爲它可以幫助撤消過去的幾次提交,如果作者不是正確的。
編輯2:鉤子腳本示例和.bat文件的信息。
你不給太多細節,所以我們不得不猜測,我首先想到的是關於那個叫以確認更改的鉤子腳本。在這種情況下,您的客戶端不是問題,這是服務器配置問題。
確保服務器可以執行修訂前更改鉤子腳本(位於服務器的<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(查看下一節)的更多詳細信息。
@RedGlyph:我的存儲庫是在Windows XP上,我在本地主機上使用SVN。 – RKh 2009-11-03 12:54:25
然後最簡單的方法是編譯C代碼並檢查安全權限以確保服務器帳戶可以執行它。如果你使用Cygwin進行編譯,請確保使用'-mno-cygwin'不要依賴任何Cygwin .dll庫。您可以使用.bat腳本,但安裝起來並不容易(請參閱:http://stackoverflow.com/questions/1620490/post-commit-hook-run-as-what-user-in-svn)。 – RedGlyph 2009-11-03 13:01:12
@RedGlyph:沒有任何簡單的SVN命令可以從命令行執行。 – RKh 2009-11-04 03:30:26
對於Eclipse(但應與基於Eclipse的IDE喜歡的Aptana工作):
在SVN Repository
意見SVN Perpective
的,只是去 Location Properties
所需的存儲庫,並更改Authentication
箱的憑據。
它應該從現在開始改變你的作者。
如果你想重寫歷史,你必須使用像RedGlyph的解決方案。
哎呀,對。恐怕我誤解了這個問題,我刪除了我的OT解決方案;-) – RedGlyph 2009-11-03 11:06:01
@Steve:謝謝。實際上,我發現Aptana Subversive插件中有一個「覆蓋」選項來覆蓋默認名稱。它的工作原理,但我現在得到錯誤: SVN:'設置修訂作者'操作完成時出現錯誤:已禁用的存儲庫功能 svn:存儲庫尚未啓用接受修訂的propchanges; 要求管理員創建pre revprop-更改掛鉤 已禁用的存儲庫功能 svn:存儲庫尚未啓用以接受修訂版本更改; 要求管理員創建pre-revprop-change鉤子 – RKh 2009-11-03 11:22:12
@Rohit:這就是我所說的*重寫歷史記錄*。 'override'選項是在提交後(即重寫)嘗試更新作者**的內容。爲此,你必須使用鉤子。 – 2009-11-03 11:28:45
Subversion 1.4.x只有svn:log允許默認pre-revprop-change
文件。這在使用帶有Subversive svn插件的Eclipse時可能會導致問題。
爲了解決神奇的錯誤,指出
Changing revision properties other than svn:log is prohibited
後SVN命令。爲了解決這個特殊的問題,添加
if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:author" ]; then exit 0; fi
從上面的RedGlyph解決方案。
@Rohit:Undeleted我以前的帖子,它似乎是你的問題的一部分畢竟:-) – RedGlyph 2009-11-03 12:04:14