มี server SVN อยู่ตัวนึง
- รัน SVN อยู่
- Windows
- มี RDP ให้เข้า แต่ลืม pass
- ไม่มี SSH
- SVN เปิดให้ใช้แบบ HTTP ได้
ทำยังไงจะ backup SVN ตัวนี้ทั้งก้อนออกมาได้
ถ้าไม่ต้องคิดจะเอา revision ต่างๆตั้งแต่แรกมาด้วย ก็ใช้ check out อย่างเดียวก็จบ
mkdir mylocalrepository svn co http://servername/repository
แต่นี่จะเอาตั้งแต่ revision แรก
ก็เลยจะต้องใช้คำสั่ง svnadmin dump
svnadmin dump repositorypath แล้วก็กะจะเอาลงไฟล์เป็นแบบนี้ svnadmin dump repositorypath > backup_rep.svn
แต่พอลอง
ptantiku@ptantiku-desktop:~/$ svnadmin dump http://servername/repository svnadmin: 'http://servername/repository' is an URL when it should be a path
นั่นแปลว่า repositorypath จะต้องเป็นpathแบบlocalเท่านั้น ห้ามใช้dumpข้ามเครื่อง
เลยต้องไปค้นดูว่าจะทำไงบ้าง
---- เจอ rsvndump ทำได้ตรงๆเลย น่าเสียดายดัน bbuilt ไม่ผ่าน หาใน app-get ของ ubuntu ก็ไม่เจอ
(http://rsvndump.sourceforge.net , http://blog.sourcehosting.net/2008/11/03/dump-remote-subversion-repository/)
update:: download ที่เป็น tar.gz มา แล้วลง package เพิ่มอีกคือ libapr1-dev กับ libsvn1-dev (รวมถึงdependency) แล้วจะสามารถ make, make install ได้ง่ายๆ
ซึ่งถ้าใช้ตัวนี้แล้วง่ายมาก แค่
update:: download ที่เป็น tar.gz มา แล้วลง package เพิ่มอีกคือ libapr1-dev กับ libsvn1-dev (รวมถึงdependency) แล้วจะสามารถ make, make install ได้ง่ายๆ
ซึ่งถ้าใช้ตัวนี้แล้วง่ายมาก แค่
$rsvnsync http://servername/repository > backup_rep.svn
---- มีบางคนบอกให้ไปลองใช้ svk ซึ่งเป็นเครื่องมือจัดการกับพวกversion control อันนี้ยังไม่ได้อ่านและลอง
( http://moelhave.dk/2006/07/remote-mirroring-a-subversion-svn-repository/ อันนี้ดันบอกให้สร้างจำลองมาไว้ ในเครื่องตัวเองก่อน เห็นว่ายุ่งยากเลยไม่เอา) และ SVK ไม่มีอยู่ใน app-get ของ ubuntu มาตรฐาน
---- สุดท้ายก็เลยมาลงที่เครื่องมือพื้นฐานของ SVN ที่ชื่อว่า svnsync
โดยสร้าง repository เปล่าๆที่เครื่องก่อน
svnadmin create /home/svn/repository
ตั้งค่า hooks
echo ‘#!/bin/sh’ > /home/svn/repository/hooks/pre-revprop-change chmod +x /home/svn/repository/hooks/pre-revprop-change
สั่ง svnsync เพื่อทำการดาวน์โหลดrepositoryในแต่ละrevisionจากserver
svnsync init file:////home/svn/repository http://example.com/project_repository svnsync sync file:////home/svn/repository
เมื่อ sync เสร็จแล้ว
สั่ง svnadmin dump ที่เครื่องเพื่อ เอาออกมาเป็นไฟล์
svnadmin dump /home/svn/repository > backup_rep.svn
แล้วก็ลบทิ้งด้วย
rm -rf /home/svn/repository
ได้มาแล้วก็ต้องทดสอบ ด้วยการสร้างrepository ขึ้นมาใหม่แล้วก็ ลองใส่เข้าไป
พอเห็นผลลัพธ์เป็นอะไรทำนอง
ก็โอเคละ ผ่าน ใช้ได้
mkdir /home/svn/newrepo svnadmin create /home/svn/newrepo svnadmin load /home/svn/newrepo < backup_rep.svn
พอเห็นผลลัพธ์เป็นอะไรทำนอง
------- Committed revision 264 >>> <<< Started new transaction, based on original revision 265 * editing path : ABC/.classpath ... done. * editing path : ABC/META-INF/MANIFEST.MF ... done. * adding path : ABC/ABCInterfaces.jar ... done. * adding path : ABC/ABCNotebook.jar ... done. * editing path : ABC/build.properties ... done. * editing path : ABC/build.xml ... done.
ก็โอเคละ ผ่าน ใช้ได้
No comments:
Post a Comment