Trong Subversion tôi có thể là người dùng khác với tên đăng nhập của mình không?


253

Tôi muốn biết làm thế nào Subversionđể thay đổi tên mà những thay đổi của tôi xuất hiện bên dưới.

Tôi 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áy tính xách tay XP nơi tôi luôn đăng nhập dưới tên của vợ tôi. Tôi muốn DB lật đổ để hiển thị các thay đổi dưới tên của tôi.

Sau này tôi sẽ sao chép DB để nó có thể truy cập được cho cả 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. Có lẽ tôi sẽ thiết lập nó để nó tự động kiểm tra các tài liệu đã sửa đổi ... tốt nhất là dưới tên của cô ấy.

Cuối cùng, có lẽ tôi sẽ sử dụng nó từ mộ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ì đó giống như cài đặt SVN_USERNAME='Mark'sẽ ghi đè lên tuy nhiên nó thường có tên.

Cập nhật: Có vẻ như --usernamecờ mà Michael đề cập không hoạt động để thay đổi tên được báo cáo bởi "svn stat", ngay cả đối với tệp cục bộ: kho lưu trữ. Ngoài ra, nó dính nên bạn không cần chỉ định nó cho lệnh tiếp theo. Tôi thậm chí đã khởi động lại và nó vẫn sử dụng "--username"giá trị từ lần khởi động trước của tôi.

Câu trả lời:


280

Hầu hết các lệnh Subversion đều có --usernametùy chọn để chỉ định tên người dùng bạn muốn sử dụng cho kho lưu trữ. Subversion ghi 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 myuserbạn không bao giờ cần phải chỉ định lại tên người dùng.

Như Kamil Kisiel nói , khi Subversion đang truy cập kho lưu trữ trực tiếp ngoài hệ thống tệp (nghĩa là URL kho lưu trữ có dạng file:///path/to/repohoặ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 vào kho lưu trữ. Và khi bạn kết nối thông qua SSH đường hầm ( 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ởi thông tin đăng nhập SSH của bạn. Trong những trường hợp đó, svn checkout --usernamecó thể không hoạt động cho kho lưu trữ của bạn.


Cảm ơn vì sớm phản hồi. Cờ --username có vẻ rất dính, thậm chí trên các lần 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ữ.
thị trường

70

Đối với svn qua ssh hãy thử:

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

svn sẽ nhắc bạn user_namenhập mật khẩu.


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

4
https://user_name@.../pathkhông làm việc cho tôi (cygwin) nhưng --usernamehoạt động tốt.
zelanix

44

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

[groups]
yourgroupname = svn.example.com

[yourgroupname]
username = yourusername

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


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

Làm việc cho tôi khi trên một 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à bạn đã được 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 mình).


4
Cẩn thận khi cung cấp mật khẩu trên dòng lệnh. Bất cứ ai có thể xem danh sách quy trình trên máy sẽ có thể thấy mật khẩu trong danh sách quy trình. Tốt trên hệ thống một người dùng, nhưng không tốt cho hệ thống nhiều người dùng.
bleater


11

Subversion thường hỏi tôi về "Tên người dùng Subversion" 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 thường) tôi sẽ chỉ để nó hỏi mật khẩu của mình và tôi sẽ nhấn enter, và đợi lời nhắc tên người dùng và sử dụng tên người dùng Subversion của tôi.

Mặt khác, giải pháp của Michael là một cách tốt để chỉ định tên người dùng ngay lập tức.


1
Tôi coi đây là 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.) trong đó cờ --username dường như không tồn tại hoặc hơi khác biệt đối với các lệnh khác nhau ...
edwardsharp



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 như nhiều người dùng sử dụng --username.

Mỗi lần bạn gọi lệnh Subversion là người dùng 'mới', $HOME/.subversion/auth/<authentication-method>/thư mục của bạn sẽ có một mục nhập mới được lưu trong 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 thức xác thực chính xác cho máy chủ mà bạn đang liên hệ với tư cách là người dùng cụ thể đó) .


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 THỨ khác bị bỏ qua. Tên người dùng của bạn sẽ được đăng nhập lật đổ 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 về điều này là tại jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html


2

Truy cập ~/.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 người 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 của SVN, chẳng hạn như commit, rm, v.v. Bạn sẽ được nhắc lại để nhập tên người dùng hoặc mật khẩu.


-1

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


Không, nó không có. Không phải trên 1.9.5 cho Linux, ít nhất.
drkvogel

Nó sử dụng tên người dùng cục bộ của bạn theo mặc định, đây không phải là điều bạn muốn khi kết nối với kho lưu trữ từ xa.
drkvogel

-3

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


3
Bạn có thể cung cấp một tài liệu tham khảo cho điều đó? Tôi đã thực hiện tìm kiếm và chỉ tìm thấy svn_username, đây là một bản vá mà ai đó đã thực hiện và tôi không thể biết liệu nó có được đưa vào dòng chính hay không ... Tôi sẽ nghĩ rằng mình sẽ tìm thấy các lượt truy cập khác nếu vậy.
thị trường
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.