2009-01-01 7 views
217

Tôi muốn biết cách nhận Subversion để thay đổi tên mà các thay đổi của tôi xuất hiện bên dưới.Trong Subversion, tôi có thể là người dùng không phải tên đăng nhập của mình không?

Tôi chỉ mới bắt đầu sử dụng Subversion. Tôi hiện đang sử dụng nó để kiểm soát phiên bản mã trên một máy tính xách tay XP, nơi tôi luôn luôn đăng nhập dưới tên của vợ tôi. Tôi muốn DB phụ đề hiển thị các thay đổi dưới tên của tôi.

Sau đó tôi sẽ nhân rộng DB để có thể truy cập được toàn bộ ngôi nhà. Vợ tôi sử dụng máy tính văn phòng nơi cô ấy luôn đăng nhập dưới tên của tôi. Tôi có thể sẽ thiết lập nó để nó tự động kiểm tra trong các tài liệu sửa đổi ... tốt hơn là dưới tên của cô ấy.

Cuối cùng tôi có thể sẽ sử dụng nó từ máy linux dưới tên người dùng khác.

Có cách nào để sửa đổi môi trường người dùng để thay đổi tên người dùng mà Subversion gọi cho bạn không? Tôi mong đợi một cái gì đó như thiết lập SVN_USERNAME='Mark' mà sẽ ghi đè tuy nhiên nó thường được tên.

Cập nhật: Dường như cờ --username rằng Michael gọi không làm việc để thay đổi tên báo cáo của "svn stat", ngay cả đối với tệp cục bộ: kho. Ngoài ra, nó là dính, do đó bạn không cần phải xác định nó cho lệnh tiếp theo. Tôi thậm chí còn khởi động lại và nó vẫn sử dụng giá trị "--username" từ lần khởi động trước đó của tôi.

Trả lời

252

Hầu hết các lệnh Subversion đều có tùy chọn --username để chỉ định tên người dùng bạn muốn sử dụng cho kho lưu trữ. Subversion nhớ tên người dùng và mật khẩu kho lưu trữ cuối cùng được sử dụng trong mỗi bản sao làm việc, có nghĩa là, trong số những thứ khác, nếu bạn sử dụng svn checkout --username myuser bạn không bao giờ cần chỉ định lại tên người dùng.

As Kamil Kisiel says, khi Subversion đang truy cập kho lưu trữ trực tiếp khỏi hệ thống tệp (tức là URL của kho lưu trữ là dạng file:///path/to/repo hoặc file://file-server/path/to/repo), nó sử dụng quyền hệ thống tệp của bạn để truy cập kho lưu trữ. Và khi bạn connect via SSH tunneling (svn+ssh://server/path/to/repo), SVN sử dụng quyền FS của bạn trên máy chủ , như được xác định bằng thông tin đăng nhập SSH của bạn. Trong những trường hợp đó, svn checkout --username có thể không hoạt động cho kho lưu trữ của bạn.

+0

Cảm ơn câu trả lời nhanh. Cờ --username dường như rất dính, ngay cả khi khởi động lại. Và nó hoạt động tốt trên tập tin của tôi: kho lưu trữ. – markets

11

Subversion thường hỏi tôi về "tên người dùng Subversion" của tôi nếu nó không sử dụng tên người dùng đã đăng nhập của tôi. Vì vậy, khi tôi lười biếng (thường) Tôi sẽ chỉ để cho nó hỏi tôi mật khẩu của tôi và tôi sẽ nhấn enter, và chờ cho các dấu nhắc tên người dùng và sử dụng tên người dùng Subversion của tôi.

Nếu không, giải pháp của Michael là cách tốt để chỉ định tên người dùng ngay.

+1

Tôi xem đây là một câu trả lời tốt hơn vì nó hoạt động cho tất cả các lệnh SVN (thanh toán, cam kết, v.v.) nơi cờ --username dường như không tồn tại hoặc hơi khác nhau đối với các lệnh khác nhau ... – edwardsharp

6

Tôi tin rằng nếu bạn sử dụng phương thức file: // để truy cập kho lưu trữ lật đổ của bạn, các thay đổi của bạn luôn được thực hiện dưới người dùng truy cập kho lưu trữ. Bạn cần sử dụng một phương thức hỗ trợ xác thực như http: // hoặc svn: //.

Xem http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.serverconfig.choosing

0

TortoiseSVN luôn nhắc tên người dùng. (trừ khi bạn yêu cầu không được)

6

Sử dụng Subversion với mô-đun Apache hoặc svnserve. Tôi đã có thể thực hiện các hoạt động với nhiều người dùng bằng cách sử dụng --username.

Mỗi khi bạn gọi lệnh Subversion dưới dạng người dùng 'mới', thư mục $HOME/.subversion/auth/<authentication-method>/ của bạn sẽ có mục nhập mới được lưu vào bộ nhớ cache cho người dùng đó (giả sử bạn có thể xác thực bằng mật khẩu hoặc phương pháp xác thực chính xác cho máy chủ bạn đang liên hệ là người dùng cụ thể đó).

-3

Tôi tin rằng bạn có thể đặt biến môi trường SVN_USER để thay đổi tên người dùng SVN của bạn.

+3

Bạn có thể cung cấp tham chiếu cho cái đó? Tôi đã thực hiện tìm kiếm và chỉ tìm thấy svn_username, một bản vá mà ai đó đã tạo và tôi không thể biết nó có được đưa vào đường chính hay không ... Tôi nghĩ tôi sẽ tìm thấy các hit khác nếu có. – markets

+0

Tôi vừa thử nó, và nó không hoạt động (svn v1.6.17). – Tobias

69

Đối với svn qua ssh thử:

svn list svn+ssh://[user_name]@server_name/path_to_repo 

svn sẽ nhắc bạn cho mật khẩu của user_name.

+6

Cũng hoạt động cho 'https: // user_name @ .../path'. – Frank

+1

Không hoạt động với tên người dùng như: ví dụ johndoe @.com – neoneye

+1

'https: // user_name @ .../path' không hoạt động đối với tôi (cygwin) nhưng' --username' hoạt động tốt. – zelanix

30
"svn co --username=yourUserName --password=yourpassword http://path-to-your-svn" 

Đã làm việc cho tôi khi sử dụng tài khoản người dùng khác. Bạn sẽ được nhắc nhập lại tên người dùng/mật khẩu. Bạn cần phải đăng nhập như trên một lần và tất cả các bạn đã thiết lập cho các lần tiếp theo (Trừ khi bạn khởi động lại máy của bạn).

+4

Cẩn trọng khi cung cấp mật khẩu trên dòng lệnh. Bất kỳ ai có thể xem danh sách quy trình trên máy sẽ có thể xem mật khẩu trong danh sách quy trình. Phạt tiền trên một hệ thống một người dùng, nhưng không tốt trên một hệ thống đa người dùng. – bleater

+6

cũng, mật khẩu của bạn được ghi lại trong lịch sử lệnh shell rất có thể tìm kiếm được ... – Phob

36

Bạn có thể thiết lập một tên người dùng mặc định qua ~/.subversion/máy chủ:

[groups] 
yourgroupname = svn.example.com 

[yourgroupname] 
username = yourusername 

Xin lưu ý rằng phiên bản cũ của svn không hỗ trợ nó (ví dụ 1.3.1 [sic!]).

2

Nếu bạn đang sử dụng svn + ssh để kết nối với kho lưu trữ thì điều duy nhất xác thực bạn và ủy quyền cho bạn là thông tin đăng nhập ssh của bạn. MỌI NGƯỜI khác bị bỏ qua. Tên người dùng của bạn sẽ được đăng nhập dưới dạng chính xác như được thiết lập trong kết nối ssh của bạn. Một lời giải thích tuyệt vời của việc này là tại jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html

12

Nếu bạn cần phải xác định một tên người dùng khác hơn là bạn sử dụng đăng nhập để sử dụng với svn + ssh just add an entry to your .ssh/config file:

 
Host example.com 
User jdoe 
+0

man ssh_config sẽ cho bạn biết tất cả về nó. Tôi chưa tìm được cách nào để tạo ra động lực này (ví dụ dựa trên biến môi trường). – bbaassssiiee

+0

hoạt động như một sự quyến rũ, cảm ơn – redDevil

7

Hầu hết các câu trả lời dường như là cho svn + ssh, hoặc dường như không làm việc cho chúng tôi.

Để truy cập http, cách đơn giản nhất để thoát ra một người sử dụng SVN từ dòng lệnh là:

rm ~/.subversion/auth/svn.simple/*

Hat tip: http://www.yolinux.com/TUTORIALS/Subversion.html

2

Đến ~/.subversion/auth/svn.simple/*, và bạn sẽ thấy một danh sách các tệp chứa thông tin về tài khoản người dùng svn của bạn. Chỉ cần xóa tất cả những thứ khác mà bạn không cần.

Sau đó, khi bạn làm bất cứ điều gì liên quan đến hoạt động SVN, chẳng hạn như cam kết, rm, v.v. Bạn sẽ được nhắc nhập lại tên người dùng hoặc mật khẩu.