Sự khác biệt đường dẫn lật đổ cho svn và svn + ssh


10

[02:48] [root @ máy chủ: ~] ps ax | grep svn 23986? Ss 0:00 / usr / bin / svnserve -d -r / srv / svn Như bạn thấy từ các đối số thư mục gốc svn của tôi là / srv / svn.

Bây giờ, một số phép thuật từ máy từ xa ...

Những công việc này:

> svn co svn://svn-user@domain.com/test-repo

Nhưng đây không phải là:

> svn co svn+ssh://svn-user@<putty-session-name>/test-repo
'No repository found in 'svn+ssh://svn-user@<putty-session-name>/test-repo'

Chơi xung quanh cho vài giờ tôi đã tìm thấy rằng appearantly nếu tôi sử dụng đường hầm ssh, tôi có thể nhận được repo của tôi sử dụng sau đây:

> svn co svn+ssh://svn-user@<putty-session-name>/srv/svn/test-repo

... Điều đó có nghĩa là tôi nên chỉ định đường dẫn vật lý đầy đủ đến repo. Huh?

Câu trả lời:


13

Như womble đã nói, thực sự đây là 'tính năng' của svn so với ssh.

Tôi đã có svn + ssh hoạt động mà không chỉ định đường dẫn đầy đủ đến kho lưu trữ vì máy chủ svn có tập lệnh bao bọc svnserve thay cho nhị phân svnserve ban đầu. Sau đó, trong quá trình cập nhật lật đổ, tập lệnh này đã bị ghi đè bởi tệp nhị phân gốc.

Giải pháp:

  1. Đổi tên svnserve thành bin

    mv /usr/bin/svnserve /usr/bin/svnserve.bin
    
  2. Lưu tập lệnh này dưới dạng / usr / bin / svnserve:

    #!/bin/sh
    exec /usr/bin/svnserve.bin -r /srv/svn "$@"
    
  3. Cập nhật quyền

    chmod 755 /usr/bin/svnserve
    

1
Tôi đã có cùng một vấn đề ngoại trừ ngược lại. Tôi đã dành hàng giờ cố gắng để tìm ra lý do tại sao tôi không thể làm svn + ssh: // host / path / to / repo vì tôi có một đoạn script đang chạy tự động hướng tôi đến root svn. Tất cả những gì tôi cần làm là svn + ssh: // host / repo.
Bot

Root có thể được đặt thành một biến, và sau đó có một số logic loại bỏ root khỏi $ @ nếu nó được cung cấp sai? Nó sẽ ngăn chặn vấn đề như của @Bot.
MattPark

5

Đó là bởi vì svn trên SSH ( svn+ssh://) chỉ đang truy cập vào kho lưu trữ lật đổ "cục bộ", sử dụng SSH làm phương tiện vận chuyển và do đó bạn có quyền truy cập vào toàn bộ hệ thống tệp. Ngược lại, Svnserve được thông báo "bắt đầu đường dẫn của bạn /srv/svnvà vì vậy bạn không phải chỉ định thủ công.


Cảm ơn ý kiến ​​của bạn, nhưng không, nó không phải là. Mọi thứ đều hoạt động tốt cho đến khi tôi có mọi thứ như thường lệ.
Andrejs Cainikovs

Vâng, sau đó, sửa chữa bất cứ điều gì bạn làm hỏng.
womble

Bạn nói đúng, womble. Có vẻ như tôi đã tìm thấy vấn đề ở đâu.
Andrejs Cainikovs

3

Bạn có thể chỉnh sửa lệnh đăng nhập ssh cho người dùng bằng svn + ssh, bằng cách chỉnh sửa ~ / .ssh / ủy quyền của người dùng lật đổ. Dòng cho người dùng sẽ trông như:

command="/usr/bin/svnserve -r /srv/svn [other svnserve options]" <key type> <user key> <key comment>

Có nhiều thủ thuật svn + ssh trong sách svn


0

nó giống như một câu hỏi hơn, nhưng nó thực sự liên quan đến câu hỏi này.

khi thiết lập svn + ssh bằng khóa riêng / chung tôi không thể truy cập repo của mình bằng các đường dẫn tương đối theo cách này:

svn co svn+ssh://svn@SERVERIP/simple-webapp-svn simple-webapp-svn

kể từ khi tôi nhận được lỗi này:

svn: URL 'svn+ssh://svn@SERVERIP/simple-webapp-svn' doesn't exist

nhưng chỉ như thế:

svn co svn+ssh://svn@SERVERIP/home/svn/projects/simple-webapp-svn simple-webapp-svn

Đây là tệp ủy quyền_keys2 tôi có trong thư mục /home/svn/.ssh

$ sudo cat /home/svn/.ssh/authorized_keys2
command="/usr/bin/svnserve.bin -t --tunnel-user=USERNAME",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [rsa-key] [user-note]

và tệp svnserve.bin được đề xuất bởi Andrejs ở câu trả lời trước

$ cat  /usr/bin/svnserve.bin 
#!/bin/sh
exec /usr/bin/svnserve -r /home/svn/projects "$@"

Tôi thậm chí đã nghĩ về các vấn đề cấp phép, được liệt kê ở đây:

-rwxr-xr-x 1 root root 63684 2009-12-12 06:45 /usr/bin/svnserve
-rwxr-xr-x 1 root root    61 2010-08-25 17:19 /usr/bin/svnserve.bin

Tôi thực sự không thể đưa ra giải pháp ...


Bạn đã không đọc chính xác câu trả lời của tôi. Bạn nên đổi tên nhị phân svnserve thành svnserve.bin và lưu tập lệnh bao bọc bạn có ở đó dưới dạng svnserve. Hoặc đơn giản, nội dung của cả hai tập tin của bạn nên được hoán đổi.
Andrejs Cainikovs

Tôi nghĩ rằng việc gọi svnserve.bin từ ủy quyền_keys2 và trong tập tin thực thi svnserve đó phải giống hệt nhau, phải không? Tôi đã làm như vậy để ngăn chặn đổi tên nhị phân svnserve, bạn có nghĩ nó sai không?
mox601
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.