2008-08-29 46 views
45

當我嘗試執行任何svn命令並提供--username和/或--password選項時,它總是會提示我輸入密碼,並始終嘗試使用我的密碼當前用戶,而不是由--username指定的用戶。 --no-auth-cache--non-interactive都不會對此產生任何影響。這是一個問題,因爲我試圖從腳本調用svn命令,並且我不能讓它顯示提示符。Subversion忽略「--password」和「--username」選項

例如,登錄的用戶1:

# $ svn update --username 'user2' --password 'password' 
# [email protected]'s password: 

其他選項正常工作:

# $ svn --version --quiet 
# 1.3.2 

爲什麼它提示我?
爲什麼它要求user1的密碼,而不是user2的?
我99%確定我的所有權限都設置正確。是否有一些關閉命令行密碼的配置選項?
還是完全是其他的東西?

我在Fedora Core 5(波爾多)上運行svn 1.3.2(r19776)。


下面是我的環境變量(包含敏感信息X'ed out)的列表。它們似乎都不適用於SVN:

# HOSTNAME=XXXXXX 
# TERM=xterm 
# SHELL=/bin/sh 
# HISTSIZE=1000 
# KDE_NO_IPV6=1 
# SSH_CLIENT=XXX.XXX.XXX.XXX XXXXX XX 
# QTDIR=/usr/lib/qt-3.3 
# QTINC=/usr/lib/qt-3.3/include 
# SSH_TTY=/dev/pts/2 
# USER=XXXXXX 
# LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: 
# KDEDIR=/usr 
# MAIL=/var/spool/mail/XXXXXX 
# PATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin 
# INPUTRC=/etc/inputrc 
# PWD=/home/users/XXXXXX/my_repository 
# KDE_IS_PRELINKED=1 
# LANG=en_US.UTF-8 
# SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass 
# SHLVL=1 
# HOME=/home/users/XXXXXX 
# LOGNAME=XXXXXX 
# QTLIB=/usr/lib/qt-3.3/lib 
# CVS_RSH=ssh 
# SSH_CONNECTION=69.202.73.122 60998 216.7.19.47 22 
# LESSOPEN=|/usr/bin/lesspipe.sh %s 
# G_BROKEN_FILENAMES=1 
# _=/bin/env 
# OLDPWD=/home/users/XXXXXX 
+0

我不知道* nix中貝殼 - 但你真的在那裏使用單引號?他們不應該是雙引號嗎? – 2008-08-29 18:38:56

+0

您的$ HOME/.subversion中的任何自定義配置可能? – Joril 2008-08-29 19:33:05

回答

29

你得到的提示看起來不像Subversion要求輸入密碼,它看起來像ssh要求輸入密碼。所以我的猜測是你已經檢出了svn + ssh://結帳,而不是svn://或http://或https://結帳。

IIRC您嘗試的所有選項僅適用於svn/http/https檢出。你可以運行svn info來確認你正在使用什麼樣的倉庫?

如果您使用的是ssh,您應該設置基於密鑰的身份驗證,以便您的腳本在不提示輸入密碼的情況下工作。

0

我可以給你的最好的東西是SVN 1.5上的「適用於我」。您可以嘗試將--no-auth-cache添加到svn update以查看是否允許您更輕鬆地進行覆蓋。

如果要永久從user2切換到user1,請進入〜/ .subversion/auth/on * nix並刪除domain.com的auth緩存文件(很可能在〜/ .subversion/auth/svn中。簡單/ - 只需通讀他們,你會發現你想要放棄的那個)。儘管可以更新當前的認證緩存,但您還必須確保更新長度令牌。更簡單一點就是在您下次更新時再次提示。

41

你真的在你的命令中有單引號嗎?我不認爲他們是必要的。另外,我想你也需要--no-auth-cache--non-interactive

這裏是我使用(沒有單引號)

 
--non-interactive --no-auth-cache --username XXXX --password YYYY 

更多信息,請參見Client Credentials Caching documentation in the svnbook

+3

這一個爲我工作..感謝很多 – Anuragh27crony 2014-12-08 19:42:43

0

問題是工作副本通過svn + ssh檢出(謝謝Thomas)。相反,如建議建立SSH密鑰的,我只是檢查出使用SVN一個新的工作副本://domain.com/path/to/repo而不是SVN + SSH://domain.com/path/to/repo。因爲這個工作副本與存儲庫本身位於同一臺機器上,所以我不會錯過任何東西,現在我可以無償地使用--password和--username選項。現在看起來很明顯,我想到了它。

0

查找到本地的svn回購,看看目錄的.svn。 有文件:條目看看他們,你會看到行開頭: SVN + SSH://

這是你第一次配置的svn籤「repo_source」或svn maked合作「repo_source」

如果你想改變這個,最好的方法是完全刷新這個存儲庫。 更新/提交你應該保存的工作。然後取出完全地目錄 和最後一個步驟是通過 SVN CO /結帳「URI換主回購」 [店面任選本地目錄]

應該選擇連接方法回購文件創建此:// SVN + ssh:// http:// https://或文檔中描述的其他 。

之後,你使用svn更新/提交如常。

這個話題貌似出來的話題。最好轉到超級用戶頁面。

0

我有一個類似的問題,我想用不同的用戶名了SVN + SSH庫。最後,我用svn relocate(如在in this answer描述以我的情況下,我使用的svn 1.6.11和做了以下:

svn switch --relocate \ 
    svn+ssh://[email protected]/path/to/repo \ 
    svn+ssh://[email protected]/path/to/repo 

其中svn+ssh://[email protected]/path/to/repo可以svn info命令的URL:線輸出中找到。這個命令要求我輸入密碼newuser

請注意,這個改變是持久的,也就是說,如果你只想用這個方法臨時切換到新的用戶名,你必須在svn update等之後再次發出類似的命令。