Svn ve svn + ssh için alt sürüm yolu farklılıkları


10

[02:48] [root @ server: ~] ps balta | grep svn 23986? Ss 0:00 / usr / bin / svnserve -d -r / srv / svn Bağımsız değişkenlerden gördüğünüz gibi benim svn root dir / srv / svn.

Şimdi, uzak makineden biraz sihir ...

Bu çalışıyor:

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

Ama bu değil:

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

Birkaç saat boyunca oynadığım , görünüşe göre ssh tünelini kullanırsam, aşağıdakileri kullanarak repo'yu alabileceğimi buldum:

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

... yani repoya tam fiziksel bir yol belirtmeliyim. Ha?

Yanıtlar:


13

Womble'ın dediği gibi, bu svn'nin ssh'ın 'özelliği'.

Svn sunucusu özgün svnserve ikili yerine svnserve sarmalayıcı komut dosyası vardı, çünkü svn + ssh depolar için tam yolu belirtmeden çalışma vardı. Daha sonra, alt sürüm güncellemesi sırasında bu komut dosyasının üzerine özgün ikili yazı yazılır.

Çözüm:

  1. Svnserve öğesini bin olarak yeniden adlandır

    mv /usr/bin/svnserve /usr/bin/svnserve.bin
    
  2. Bu komut dosyasını / usr / bin / svnserve olarak kaydedin:

    #!/bin/sh
    exec /usr/bin/svnserve.bin -r /srv/svn "$@"
    
  3. Güncelleme izinleri

    chmod 755 /usr/bin/svnserve
    

1
Tersi dışında aynı sorunu yaşadım. Ben svn + ssh: // ana bilgisayar / yol / to / repo neden yapamadım anlamaya çalışırken saat geçirdim çünkü otomatik olarak svn kök beni yönlendiren bir komut dosyası vardı. Tek yapmam gereken svn + ssh: // host / repo.
Bot

Kök bir değişken olarak ayarlanabilir ve daha sonra yanlışlıkla verilirse, kökleri $ @ 'dan kaldıran bir mantık olabilir mi? Sorunun @Bot 's gibi engeller.
MattPark

5

Bunun nedeni, SSH ( svn+ssh://) üzerinden svn'nin yalnızca yerel olarak bir alt sürüm havuzuna erişmesi, aktarım olarak SSH'yi kullanması ve dolayısıyla tüm dosya sistemine erişiminizin olmasıdır. Buna karşılık Svnserve'e "yollarınızı şununla başlatınız /srv/svnve böylece manüel olarak belirtmeniz gerekmez.


Fikriniz için teşekkür ederim, ama hayır, değil. Her şey berbat olana kadar her şey çok güzeldi.
Andrejs Cainikovs

Öyleyse, vidaladığınız her şeyi düzeltin.
womble

Haklısın, womble. Sorunun nerede olduğunu buldum.
Andrejs Cainikovs

3

Svn + ssh kullanan kullanıcılar için ssh login komutunu, subversion kullanıcısının ~ / .ssh / yetkili_anahtarlarını düzenleyerek düzenleyebilirsiniz. Bir kullanıcının satırı şuna benzer:

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

Svn kitabında daha fazla svn + ssh hilesi var


0

bu daha çok kendi başına bir soru gibidir, ama gerçekten bununla ilgilidir.

svn + ssh ile özel / genel anahtarları ayarladıktan sonra bu şekilde göreli yolları kullanarak repoma erişemiyorum:

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

bu hatayı alıyorum beri:

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

ama sadece böyle:

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

Bu, /home/svn/.ssh dizininde bulunan yetkili_anahtarlar2 dosyası

$ 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]

ve Andrejs tarafından önceki yanıtta önerilen svnserve.bin dosyası

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

Burada listelenen izin sorunlarını bile düşündüm:

-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

Gerçekten bir çözüm bulamıyorum ...


Cevabımı doğru okumadınız. Svnserve binary'yi svnserve.bin olarak yeniden adlandırmalı ve orada sahip olduğunuz sarmalayıcı komut dosyasını svnserve olarak kaydetmelisiniz. Veya her iki dosyanızın içeriği değiştirilmelidir.
Andrejs Cainikovs

Ben svnserve.bin yetkili_anahtarlar2 ve bu dosyada svnserve yürütme tam olarak aynı olması gerektiğini düşünüyorum, değil mi? Svnserve ikilisinin yeniden adlandırılmasını önlemek için bunu yaptım, bunun yanlış olduğunu düşünüyor musunuz?
mox601
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.