2009-07-21 41 views
7

Tôi hiện ftp tất cả các file của tôi vào trang web của tôi khi tôi làm một bản cập nhật (qua kết nối adsl slowish)xuất bản một trang web sử dụng svn xuất khẩu

Và tôi muốn làm cho mọi việc dễ dàng hơn, vì vậy tôi chỉ vừa mới bắt đầu sử dụng một tổ chức svn dịch vụ, và tôi nghĩ rằng tôi có thể tăng tốc độ những thứ lên một chút bằng cách làm một xuất khẩu svn của trang web của tôi trực tiếp vào máy chủ web của tôi

tôi đã thử một vài lần và nó có vẻ hoạt động ok, tuy nhiên nó lấy toàn bộ trang web mọi lúc hơi chậm để cập nhật 1 tệp

vì vậy câu hỏi của tôi là

là có thể thực hiện xuất và chỉ nhận các thay đổi kể từ lần xuất cuối cùng (thao tác này sẽ xử lý các tệp đã xóa như thế nào?)

HOẶC sẽ dễ dàng thực hiện cập nhật svn và svn xuất khẩu svn và chỉ ẩn các thư mục svn sử dụng apache htaccess

đây là một ý tưởng tốt, hoặc là có một cách tốt hơn để xuất bản trang web của tôi tôi đang cố gắng để đạt được các loại triển khai 1 cú nhấp chuột lý tưởng

lẽ có một số gotcha của tôi đã không nghĩ rằng ai đó khác đã chạy vào

debian/apache/php

Trả lời

8

Tôi sẽ thực hiện thanh toán svn và đã thực hiện thành công trên trang web trực tiếp trong một số năm. Bạn nên thêm mod_rewrite quy tắc lên 404 các thư mục .svn (và tệp).

+0

RewriteEngine on RewriteRule * \ svn /.* - [F] –

+0

để từ chối, cho phép deny from all

+0

Không thể làm FilesMatch chỉ thị để làm việc vì nó không phù hợp trên các thư mục, tuy nhiên DirectoryMatch làm việc tốt: trật tự cho phép, từ chối deny from all Miquel

5

Đây là những gì tôi đang làm trên máy chủ của tôi:

Đối với mỗi dự án tôi có một cấu trúc mà có vẻ ít hơn như thế này:

~/projects/myproj 
~/public_html/myproj 

dir Đầu tiên là một thanh toán từ SVN, trong khi thứ hai một là chỉ xuất khẩu svn.

Tôi có một kịch bản bash nhỏ

#!/bin/bash 
SOURCE="$HOME/projects/" 
TARGET="$HOME/public_html/" 
for x in `ls $SOURCE` 
do 
    if [ -d $SOURCE$x ]; then 
     svn update $SOURCE$x 
     svn export --force $SOURCE$x $TARGET$x 
    fi 
done 

xuất khẩu được thực hiện từ bản sao làm việc vì vậy nó rất nhanh.

+0

những gì xảy ra với các tập tin bạn đã xóa từ svn, bạn có xóa chúng theo cách thủ công không? – bumperbox

+0

thêm 'rm -Rf $ TARGET $ x' sau lệnh svn update trong tập lệnh ở trên và bạn sẽ không phải lo lắng về những điều đó nữa – RaYell

1

Có thể không chính xác câu trả lời bạn đang tìm kiếm, nhưng nếu bạn có quyền truy cập SSH vào máy chủ web (tùy thuộc vào dịch vụ lưu trữ của bạn; một số "chi phí thấp" không cung cấp quyền truy cập như vậy), bạn có thể sử dụng rsync để "đồng bộ hóa" trang web từ xa với những gì bạn có trên đĩa của mình.

Trước đây, tôi đã sử dụng một cái gì đó giống như ý tưởng bạn mô tả (tìm nhật ký svn giữa lần sửa đổi cuối cùng được đẩy vào sản xuất và HEAD, phân tích mọi dòng và cuối cùng tính toán những gì cần gửi tới máy chủ); nhưng nó không thực sự là một quá trình tuyệt vời; Bây giờ tôi sử dụng rsync, và như nó tốt hơn.

(Ở đây cũng vậy, bạn sẽ phải loại trừ thư mục svn, btw)

0

Bạn có thể chỉ chấp nhận có thư mục svn trong trang web của bạn (nói chung không phải là một vấn đề đặc biệt. Nếu bạn cấu hình nó không cho phép truy cập vào những điều này) - đây là tùy chọn dễ dàng. Ngoài ra, hãy làm những gì RaYell làm và có hai bản sao trang web của bạn trên máy chủ web. Một thanh toán bình thường bên ngoài thư mục web và một trong thư mục web của bạn.Khi bạn cập nhật, chỉ cần xuất svn (chỉ là một bản sao với .svn dirs) vào thư mục web (và bạn nên chắc chắn để xóa các tập tin cũ nếu bạn muốn tránh các tập tin đã được gỡ bỏ từ SVN còn lại trên trang web của bạn).

Tôi làm một cái gì đó như thế này, sử dụng robocopy đặt để phản ánh thanh toán svn trong khi loại trừ .svn thư mục, và có được cả xuất và xóa tập tin cũ trong một bước, do đó giảm thiểu thời gian chết nếu bản sao mất nhiều thời gian. Tôi chắc chắn điều này là dễ dàng trên unix quá, nếu đó là môi trường lưu trữ của bạn. Ví dụ: bạn có thể sử dụng rsync cục bộ: http://blog.gilluminate.com/2006/12/12/yes-you-can-rsync-between-two-local-directories/

0

Chủ đề cũ nhưng vì đây là những gì xuất hiện trong Google trong quá trình nghiên cứu của tôi, tôi nghĩ tôi sẽ thêm vào điều này. Tôi khuyên bạn nên xuất một trang web thay vì kiểm tra nó. Tôi muốn giữ các kho lưu trữ và các trang web riêng biệt. Tôi cũng không khuyên bạn nên xuất toàn bộ repo cho trang web mỗi lần, đặc biệt nếu chỉ có một vài thay đổi tệp tại một thời điểm. Những gì bạn có thể làm thay vào đó là làm một sự khác biệt trên repo để xem những gì thay đổi từ một bản phát hành khác và chỉ xuất khẩu những tập tin đó. Xem thêm thông tin tại địa chỉ:.. http://www.joeyrivera.com/2011/automate-svn-export-to-site-w-bash-script/

Các vấn đề liên quan