ข้อผิดพลาดในการโค่นล้ม: ย้ายที่เก็บอย่างถาวรแล้วเพื่อโปรดย้ายใหม่


23

ฉันตั้งค่าการโค่นล้มและ apache บนเซิร์ฟเวอร์ของฉัน

หากฉันเรียกดูผ่านเว็บเบราว์เซอร์ของฉันก็ใช้งานได้ดี ( http://svn.host.com/reposname ) อย่างไรก็ตามหากฉันชำระเงินในเครื่องของฉันฉันได้รับข้อผิดพลาดดังต่อไปนี้:

Command: Checkout from http://svn.host.com/reposname, revision HEAD, Fully recursive, Externals included  
Error: Repository moved permanently to 'http://svn.host.com/reposname/'; please relocate  

ฉันตรวจสอบบันทึกข้อผิดพลาดของ Apache แต่ไม่ได้พูดอะไร (มันทำตอนนี้ - ดูการแก้ไข)

ที่เก็บของฉันถูกเก็บไว้ภายใต้: / var / www / svn / repos /

เว็บไซต์ของฉันถูกเก็บไว้ภายใต้: / var / www / vhosts / x / ...

นี่คือไฟล์ conf สำหรับโดเมนย่อย:

<Location />
   DAV svn
   SVNParentPath /var/www/svn/repos/

   AuthType Basic
   AuthName "Authorization Realm"
   AuthUserFile /var/www/svn/auth/svn.htpasswd
   Require valid-user
</Location>

การรับรองความถูกต้องใช้งานได้ดี

ไม่มีใครรู้ว่าสิ่งที่อาจก่อให้เกิดนี้?

- แก้ไข

ดังนั้นฉันจึงเริ่ม apache (อีกครั้ง) และลองอีกครั้งและตอนนี้มันทำให้ฉันมีข้อผิดพลาด แต่มันไม่ได้ช่วยจริงๆ ใครมีความคิดว่ามันหมายถึงอะไร?

[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] Could not fetch resource information.  [403, #0]
[Wed Mar 31 23:41:55 2010] [error] [client my.ip.he.re] (2)No such file or directory: The URI does not contain the name of a repository.  [403, #190001]

- แก้ไข 2

ถ้าฉันทำsvn infoมันจะไม่ให้ประโยชน์อะไรเลย:

[root@server domain.com]# svn info http://svn.domain.com/repos/
Username: username
Password for 'username':
svn: Repository moved permanently to 'http://svn.domain.com/repos/'; please relocate

ฉันยังลองทำการเช็คเอาท์ในท้องที่ ( svn checkout file:///var/www/svn/repos/reposname) และใช้งานได้ดี ดังนั้นดูเหมือนว่าจะมีบางสิ่งที่เกี่ยวข้องกับ apache

ข้อมูลอื่น ๆ :

  • ฉันใช้ CentO 5.3
  • Plesk 9.3
  • การโค่นล้มรุ่น 1.6.9 (r901367)

- แก้ไข 3

ฉันพยายามย้ายที่เก็บ แต่ก็ไม่ได้สร้างความแตกต่างเลย

selinux ถูกปิดการใช้งานเพื่อที่จะไม่


1
ทำไมคุณถึงOptions +indexesไม่ควรทำอะไรที่มีประโยชน์ในตำแหน่ง svn
Zoredache

คุณได้ลองปิดการใช้งานการตรวจสอบ / การอนุญาตชั่วคราวหรือไม่?
Zoredache

ฉันพยายามทำให้มันแสดงภาพรวมของที่เก็บข้อมูลทั้งหมด (ภายหลังฉันพบว่ามีคำสั่งที่แตกต่างกันสำหรับเรื่องนั้น) ฉันก็ลบมัน ฉันลบการรับรองความถูกต้องด้วยเช่นกัน แต่มันก็ไม่ได้แก้อะไรเลย (รับรองความถูกต้องใช้งานได้จริงมันขอชื่อผู้ใช้ / รหัสผ่านและยอมรับการผสมผสานที่แท้จริงเท่านั้น)
บาร์ตเอส

คำตอบ:


22

ฉันมีสิ่งนี้เมื่อเร็ว ๆ นี้ ... แต่มันกลับกลายเป็นว่าฉันลืม URL :)

สิ่งหนึ่งที่คุณต้องทำคือให้แน่ใจว่า svn ที่ตั้งของคุณไม่ทับซ้อนกับเว็บไซต์ใด ๆ ของ apache-servable กล่าวคือถ้าคุณตั้งค่า DocumentRoot ของคุณเป็น / www และตำแหน่ง svn ของคุณเป็น / www / svn ... คุณกำลังมีปัญหา - Apache จะไม่ทราบว่าควรให้บริการกับอะไร (เช่น svn special hand หรือตัวจัดการ http ตรง)

ดูรายการคำถามที่พบบ่อยสำหรับการนี้


นี้ดูเหมือนว่ามันอาจจะเป็นคำตอบที่ถูก แต่นี่เป็นอีกโพสต์ที่เป็นไปได้ที่เกี่ยวข้องกับการนี้: forum.webfaction.com/viewtopic.php?id=2423
Paul Kroon

1
ว้าวฉันรู้เรื่องนี้แล้ว แต่ฉันคิดว่าฉันลองอีกครั้ง ฉันสร้างที่เก็บใหม่และได้ผล ฉันสับสนว่าทำไมจึงเป็นเช่นนั้นฉันจึง FTP ไปยังเซิร์ฟเวอร์ของฉันและพบว่ามีไดเรกทอรีในไดเรกทอรี httpdocs ของโดเมนย่อย (สร้างโดย plesk) เรียกว่าการทดสอบ (เหมือนกับที่เก็บของฉัน) ฉันลบมันแล้วตอนนี้ก็ใช้งานได้ ขอบคุณสำหรับความช่วยเหลือ
Bart S.

1
เพื่ออธิบายรายละเอียดเล็กน้อยในสถานการณ์ทั่วไปหนึ่งสถานการณ์ หากคุณมีการตั้งค่าโฮสต์เสมือนและต้องการ SVN ที่รูท (เช่นsvn.example.comเป็น URL repo ของคุณ) อย่าตั้ง "DocumentRoot / svn" จากนั้นใช้บล็อก "<Directory / svn>" ภายใน VirtualHost ของคุณเป็น กำหนดค่าตัวเลือก savn DAV สำหรับเส้นทางราก สิ่งนี้จะทำให้เกิดปัญหาที่ Apache สับสนระหว่างตัวจัดการ DAV และตัวจัดการภายใน ไม่ควรมีคำสั่ง DocumentRoot ในบล็อก VirtualHost ของคุณ ใช้บล็อก "<Location />" แทนเพื่อกำหนดค่าตัวเลือก DAV svn สำหรับเส้นทางของรูท
nezroy

ผมได้นำคำสั่งนามแฝงในการตั้งค่าของฉันเช่นแล้วตั้งค่าทุกอย่างในAlias svn /repositories <Location /svn/ >ปัญหานั้นเหมือนกันในลิงก์คำถามที่พบบ่อยแม้ว่ามันจะทำงานได้อย่างสมบูรณ์แบบเป็นเวลาหนึ่งเดือนแล้วก็หยุดในบ่ายวันพุธเวลาน้ำชา หากที่เก็บของคุณอยู่ที่ "/" คุณจะมีการทับซ้อนกับคำสั่ง DocumentRoot ของคุณ
Matt Connolly

มันทำงานได้อย่างสมบูรณ์แบบ! มันเป็นปัญหา DocumentRoot! +1
Feiticeir0


2

ตรวจสอบเว็บนี้: http://www.rkrishardy.com/2009/12/subversion-fix-svn-copy-causes-repository-moved-permanentl/

อาจเป็นชื่อแทนชี้ไปที่สถานที่เดียวกับที่กำหนดเป็น dav_svn.mod และมีสภาพการแข่งขันระหว่าง apache และ dav_svn ในขณะที่มีการ repo

มันอธิบายได้ดีขึ้นในบทความที่ให้ไว้

ใน dav_svn.conf:

  <Location /svn>  #Alias we are talking about
  DAV svn

ใน apache_site.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName svn.za11.pl

    #Alias /svn  "/mnt/nfs/svn/"  ###Comment out or change this alias
    DocumentRoot /mnt/nfs/svn/
    <Directory /mnt/nfs/svn/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        AuthType Basic 
        AuthName "Subversion Repository"
        AuthUserFile /etc/apache2/dav_svn.passwd
        Require valid-user
    </Directory> 
... rest of the file

1
ลิงค์ที่นี่ตายแล้วและไม่มีแนวโน้มที่จะมาแทนที่
sysadmin1138

//, จะอัพเดตคำตอบนี้ไหม?
Nathan Basanese

1

ฉันมีการตั้งค่า vhost กับ repo svn.mydomain.com/sites/ ของฉันที่ vhost ของฉันมี DocumentRoot และ Location block การลบ Documentroot สามารถแก้ไขปัญหานี้ได้


1

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันวาง repo ของฉันผิดภายใต้แผนผัง html ที่เสิร์ฟโดย Apache บนเครื่อง FC14 ของฉันด้วยการโค่นล้ม RPM ตามและการติดตั้ง Apache

SVNParentPath (ใน /etc/httpd/conf.d/subversion.conf) ควรชี้ไปที่ไดเรกทอรีนอก DocumentRoot

ฉันย้าย repo ของฉันออกไปและปัญหาก็หายไป

หวังว่านี่จะช่วยได้


1

ฉันรู้ว่ามันเก่า แต่ฉันพบใน Google เพราะฉันมีปัญหาเดียวกัน ตรวจสอบว่าพอร์ต 7080 ไม่ถูกบล็อกโดยคอมพิวเตอร์หรือไฟร์วอลล์ของเซิร์ฟเวอร์


0

ดูเหมือนว่าคุณไม่ได้ทำsvn checkoutแต่svn updateอยู่ในที่เก็บข้อมูลที่มีอยู่ (?)

ถ้าเป็นเช่นนั้นทำสิ่งนี้:

svn switch --relocate http://svn.host.com/reponame


ไม่อย่างที่คุณเห็นในข้อความแสดงข้อผิดพลาดฉันบอกว่า "คำสั่ง: ชำระเงินจาก ... " ฉันกำลังลองชำระเงินใหม่
Bart S.

0

ย้ายถาวรหรือไม่ คุณสามารถเป็นเหมือน HTTPFox หรืออะไรก็ได้และตรวจสอบว่า Apache แจกรหัสสถานะที่ถูกต้องสำหรับพื้นที่เก็บข้อมูลของคุณ (ควรเป็น200/OK) ฉันเชื่อว่ารหัสสถานะ301สอดคล้องกับ URL ที่ "ย้ายอย่างถาวร" และดูเหมือนว่าสิ่งที่ลูกค้า svn อ้างถึง


Firebug และ wget ทั้งสองให้ 200 ตกลง แต่อย่างที่ฉันบอกถ้าฉันเรียกดูผ่านเบราว์เซอร์ของฉัน (โดยการท่องไปhttp://svn.server.com/repos) มันใช้งานได้ดีฉันจะได้รับ "repos - Revision 0: /" และทุกอย่าง ปัญหาเกิดขึ้นเมื่อฉันทำการเช็คเอาต์
Bart S.

0

อาจจะช้าในการสนทนา แต่ฉันเห็นสิ่งนี้เมื่อใช้นามแฝงในการกำหนดค่า apache เพื่อจัดการกับ '/': Alias ​​/ svn / path / to / svn /


0

คุณต้องตรวจสอบให้แน่ใจว่าไม่มีแผนที่นามแฝงของ Alias ​​ไปยังตำแหน่งของ svn repos ฉันมีสิ่งนี้เมื่อเร็ว ๆ นี้เมื่อฉันมี

Alias /svn /var/lib/svn
<Location /svn>
...
</Location>

โดยที่นามแฝงและคำสั่งตำแหน่งจะใช้กับพา ธ เดียวกัน


0

ฉันเพิ่งมีปัญหาที่คล้ายกันไม่ได้เมื่อตรวจสอบ แต่เมื่อมีความมุ่งมั่น

เหตุผล? โฟลเดอร์นี้ "obj \ Debug \ TempPE" ด้วยเหตุผลแปลก ๆ บางอย่างที่โฟลเดอร์ "TempPE" ไม่สามารถใช้กับคอมมิทไปยังที่เก็บ

วิธีแก้ปัญหา? ... ยอมรับโฟลเดอร์อื่นทั้งหมดของโครงการหนึ่งต่อหนึ่งและลบตำแหน่งนั้นออกจากเซิร์ฟเวอร์ SVN

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.