2008-08-29 34 views
45

Khi tôi cố gắng thực hiện bất kỳ lệnh svn nào và cung cấp các tùy chọn --username và/hoặc --password, nó sẽ nhắc tôi nhập mật khẩu và luôn cố gắng sử dụng người dùng hiện tại thay vì người dùng được chỉ định bởi --username. Không --no-auth-cache cũng không --non-interactive có bất kỳ ảnh hưởng nào về điều này. Đây là một vấn đề bởi vì tôi đang cố gắng gọi lệnh svn từ một kịch bản, và tôi không thể có nó hiển thị dấu nhắc.Subversion bỏ qua tùy chọn "--password" và "--username"

Ví dụ, đăng nhập như user1:

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

Các tùy chọn khác làm việc một cách chính xác:

# $ svn --version --quiet 
# 1.3.2 

Tại sao nó nhắc tôi?
Và tại sao nó yêu cầu mật khẩu của người dùng thay vì user2?
Tôi chắc chắn 99% tất cả các quyền của tôi được đặt chính xác. Có một số tùy chọn cấu hình cho svn mà tắt mật khẩu dòng lệnh?
Hoặc hoàn toàn khác?

Tôi đang chạy svn 1.3.2 (r19776) trên Fedora Core 5 (Bordeaux).


Đây là danh sách các biến môi trường của tôi (với thông tin nhạy cảm X'ed out). Không ai trong số họ dường như áp dụng cho 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

Tôi không biết * nix vỏ - nhưng bạn có thực sự sử dụng dấu nháy đơn ở đó không? Không phải họ là dấu ngoặc kép? –

+0

Có thể cấu hình tùy chỉnh nào bên trong $ HOME/.subversion của bạn không? – Joril

Trả lời

29

Lời nhắc bạn nhận được không giống như Subversion hỏi bạn mật khẩu, có vẻ như ssh đang yêu cầu mật khẩu. Vì vậy, tôi đoán là bạn đã kiểm tra svn + ssh: // checkout, không phải thanh toán svn: // hoặc http: // hoặc https: //.

IIRC tất cả các tùy chọn bạn đang cố gắng chỉ hoạt động đối với các lần kiểm tra svn/http/https. Bạn có thể chạy thông tin svn để xác nhận loại kho lưu trữ bạn đang sử dụng không?

Nếu bạn đang sử dụng ssh, bạn nên thiết lập xác thực dựa trên khóa để tập lệnh của bạn hoạt động mà không cần yêu cầu mật khẩu.

0

Tốt nhất tôi có thể cung cấp cho bạn là "hoạt động cho tôi" trên SVN 1.5. Bạn có thể thử thêm --no-auth-cache vào số svn update để xem liệu điều đó có cho phép bạn ghi đè dễ dàng hơn hay không.

Nếu bạn muốn chuyển vĩnh viễn từ user2 thành user1, đi vào ~/.subversion/auth/on * nix và xóa tệp bộ nhớ cache auth cho domain.com (rất có thể trong ~/.subversion/auth/svn. đơn giản/- chỉ cần đọc qua chúng và bạn sẽ tìm thấy một trong những bạn muốn thả). Mặc dù có thể cập nhật bộ nhớ cache auth hiện tại, bạn phải đảm bảo cập nhật mã thông báo độ dài. Đơn giản chỉ để được nhắc lại lần sau khi bạn cập nhật.

41

Bạn có thực sự có dấu nháy đơn trong lệnh không? Tôi không nghĩ chúng là cần thiết. Thêm vào đó, tôi nghĩ rằng bạn cũng cần --no-auth-cache--non-interactive

Đây là những gì tôi sử dụng (không có dấu nháy đơn)

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

Xem Client Credentials Caching documentation in the svnbook để biết thêm thông tin.

+3

điều này đã làm việc cho tôi .. cảm ơn rất nhiều – Anuragh27crony

+1

Điều này không làm việc cho svn + ssh. –

0

Vấn đề là bản sao làm việc đã được kiểm tra qua svn + ssh (cảm ơn, Thomas).Thay vì thiết lập các khóa ssh như đã được đề xuất, tôi chỉ cần kiểm tra một bản sao làm việc mới bằng cách sử dụng svn: //domain.com/path/to/repo chứ không phải là svn + ssh: //domain.com/path/to/repo. Bởi vì bản sao làm việc này nằm trên cùng một máy với bản thân kho lưu trữ, tôi không thực sự bỏ lỡ bất cứ thứ gì, và bây giờ tôi có thể sử dụng các tùy chọn --password và --username một cách vô cớ. Có vẻ hiển nhiên bây giờ tôi nghĩ về nó.

17

Tôi đã gặp vấn đề này và giải quyết bằng cách thiết lập tệp ~/.ssh/config để sử dụng đúng tên người dùng (nghĩa là tên người dùng bạn sử dụng để đăng nhập vào máy chủ chứ không phải máy cục bộ của bạn). Vì vậy, ví dụ:

 
Host server.hostname 
    User username 

tôi tìm thấy bài viết trên blog này có hữu ích: http://www.highlevelbits.com/2007/04/svn-over-ssh-prompts-for-wrong-username.html

+2

yep - liên kết được đăng là một cách siêu đơn giản xung quanh vấn đề này. cảm ơn! – jsh

0

Look để repo svn địa phương của bạn và nhìn vào svn thư mục. có file: mục nhìn vào họ và bạn sẽ thấy dòng bắt đầu bằng: svn + ssh: //

này được cấu hình đầu tiên bạn đánh dấu bởi svn checkout 'repo_source' hoặc svn co 'repo_source'

nếu bạn muốn thay đổi điều này, cách tốt nhất te là hoàn toàn làm mới kho lưu trữ này. cập nhật/cam kết những gì bạn cần để lưu công việc. sau đó xóa hoàn toàn thư mục và bước cuối cùng là tạo ra điều này bằng cách svn đồng/thanh toán 'URI-cho-chính-repo' [tùy chọn thư mục cục bộ cho cửa hàng]

bạn nên chọn phương thức kết nối để repo tệp: // svn + ssh: // http: // https: // hoặc khác được mô tả trong tài liệu.

sau đó bạn sử dụng cập nhật/cam kết svn như bình thường.

chủ đề này có vẻ không nằm trong chủ đề. tốt hơn bạn hãy vào trang superuser.

0

Tôi gặp sự cố tương tự, tôi muốn sử dụng tên người dùng khác cho kho lưu trữ svn + ssh. Cuối cùng, tôi đã sử dụng svn relocate (như mô tả trong in this answer Trong trường hợp của tôi, tôi đang sử dụng svn 1.6.11 và đã làm như sau:.

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

nơi svn+ssh://[email protected]/path/to/repo có thể được tìm thấy trong sản lượng URL: dòng svn info lệnh Lệnh này yêu cầu tôi nhập mật khẩu newuser.

Lưu ý rằng thay đổi này liên tục, tức là nếu bạn chỉ muốn tạm thời chuyển sang tên người dùng mới bằng phương pháp này, bạn sẽ phải phát hành lại lệnh tương tự sau svn update v.v.

Các vấn đề liên quan