An toàn để có thư mục /.svn/ trên trang web trực tiếp? (Làm thế nào để loại bỏ chúng nhưng vẫn giữ được khả năng cập nhật svn?)


10

Tôi đang thực hiện cập nhật svn để cập nhật mã cho trang web php của mình, nhưng nó để lại .svn/các thư mục.

Tôi nghĩ rằng thật nguy hiểm khi để những tệp đó có thể đọc được công khai, nhưng nó rất dễ dàng để cập nhật hệ thống.

Có cách nào để sử dụng svn updateđể cập nhật hệ thống, nhưng không xuất các .svn/thư mục?

Câu trả lời:


21

Nếu bạn đang sử dụng apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

Điều đó sẽ chặn mọi người truy cập các .svnthư mục từ xa (sử dụng trình duyệt) nhưng bạn có thể giữ lại (và khả năng svn) cho dự án.

BTW bạn có thể thay thế \.svncho \.githay \.cvsnếu bạn đang sử dụng một cái gì đó khác biệt so với lật đổ.


và điều này sẽ chặn tất cả các thư mục .svn trên trang web? tôi có nhiều thư mục con
siliconpi

hiện tại httpd.conf của tôi có <Directory /> Tùy chọn FollowSymLinks AllowOverride Tất cả </ Directory> tôi có thể thêm những gì bạn đã viết ngay bên dưới này như một điều riêng biệt hoặc hai mục nhập cần được hợp nhất không?
siliconpi

Nó sẽ phù hợp với bất kỳ thư mục được gọi là .svncó.
coredump

Bạn có thể thêm nó một cách riêng biệt.
coredump


3

Bạn đang muốn xuất mã của mình từ SVN sang trang trực tiếp ...

Đừng sử dụng svn updatecho điều đó. cập nhật có nghĩa là để sử dụng với việc cập nhật các bản sao làm việc, không xuất mã. Sử dụng svn exportthay vì nó xuất một cây thư mục sạch từ kho lưu trữ được chỉ định.

Các --forcelá cờ sẽ cho phép xuất khẩu ghi đè lên các tập tin hiện có.

Nhập thủ công SVN


Tôi có thể thông cảm nếu OP không muốn sử dụng export, vì nó liên quan đến việc luôn lấy một bản sao hoàn toàn mới của kho lưu trữ, thật rắc rối nếu đó là một repo lớn trên một kết nối nhỏ (giả sử máy chủ web là máy chủ được lưu trữ, nhưng repo SVN của bạn ở trong văn phòng địa phương của bạn và được chia sẻ bởi liên kết 1Mb). updatecó nghĩa là bạn không cần phải lấy toàn bộ mọi lúc.
Mark Henderson

Một điểm công bằng. Có lẽ xuất sang một bản sao cục bộ của trang web, sau đó chỉ cần thay đổi các thay đổi trên máy chủ web từ xa sẽ hoạt động trong tình huống đó? Tôi chưa bao giờ gặp vấn đề đó nên tôi đã không xem xét nó.
gsreynold

2

Tôi không đưa chúng vào các trang web sản xuất / trực tiếp. Vì tôi không muốn tôi và / hoặc các nhà phát triển khác quên mất ý tưởng tồi là gì khi chỉnh sửa mã trực tiếp. Tập lệnh cài đặt của tôi lọc các tập tin .svn của tôi ra.


@kerner - Làm thế nào để bạn cập nhật chúng sau đó?
siliconpi

1
Tại sao không chỉ sử dụng svn exportvà không bận tâm đến việc lọc chúng?
pjmorse

Tôi có một tập lệnh cài đặt mà tôi sử dụng cho các trang web của mình và điều chỉnh một chút cho phù hợp với từng trang. Nó cũng thường thực hiện các công việc như xây dựng cơ sở dữ liệu, bảng db và người dùng db, thiết lập bất kỳ người dùng hoặc quản trị viên mặc định nào, v.v. sao chép vào một nơi nào đó dọc theo ~ /, và sau đó chạy tập lệnh cài đặt là thành viên của bản sao làm việc đã nói, sau đó tùy ý xóa bản sao làm việc.
ekerner

1

Bạn nên xem xét một hệ thống triển khai thích hợp, chẳng hạn như Capistrano . Điều này có nghĩa là các máy chủ sản xuất của bạn không cần lật đổ và bạn có thể triển khai đến nhiều máy chủ và thêm logic tùy chỉnh để triển khai. Nó cũng làm cho nó tương đối dễ dàng để quay trở lại triển khai.

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.