2011-12-21 31 views
5

Vì một số lý do giáo dục mà tôi đã bắt đầu cách đây một thời gian để xây dựng thư viện của riêng mình. Nó bắt đầu như một thư viện đơn giản với một số lớp có thể sử dụng, nhưng vì nó vẫn phát triển hàng ngày và tôi đã sử dụng nó trong một số dự án, nó bắt đầu không thể theo dõi những thay đổi, vì tôi không sử dụng SVN.Thực hành tốt nhất để lưu thư viện từ các dự án thực tế của chúng là

Bây giờ tôi đã bắt đầu sử dụng SVN Tôi muốn thêm thư viện cũng như các dự án vào kho SVN khác nhau. Một cho mọi dự án (vì thư viện cũng là một dự án).

Phương pháp hay nhất để lưu thư viện của tôi ngoài dự án là gì? Mỗi dự án đều có thư mục /library/ chứa tất cả các loại thư viện trong đó. Vì vậy, whats thực hành tốt nhất của tôi để làm theo:

  • tôi có thể thêm /thư viện/framework/ thư mục và đặt nó trên bỏ qua trong SVN dự án và sau đó kiểm thư viện trong thư mục đó (điều này thậm chí có thể?)
    • Pro: Mọi dự án đều có khuôn khổ riêng, nếu khuôn khổ có thể thay đổi, nó sẽ không phá vỡ bất kỳ mã nào trong dự án.
    • Con: Nếu tôi có 100 dự án và tất cả đều cần cập nhật thiết yếu (bảo mật khôn ngoan), tôi phải cập nhật tất cả chúng theo cách thủ công.
  • Tôi cũng có thể thanh toán thư viện ở đâu đó trên máy chủ và liên kết tượng trưng thư mục /library/framework/ sau khi bỏ qua nó trong dự án svn.
    • Pro: Một bản cập nhật sẽ khắc phục tất cả các dự án trong trường hợp cập nhật cần thiết.
    • Côn: Như đã nói ở trên: một bản cập nhật sẽ sửa chữa/thay đổi tất cả các dự án ...
    • Côn: Nếu dự án cần phải được thiết lập để một máy chủ (không phải của tôi ...)

Bất cứ ai có bất kỳ suy nghĩ nào?

Trả lời

3

Tôi thường sử dụng svn externals cho việc này. Vì vậy, tôi sẽ tạo thư mục thư viện trong dự án sau đó thêm định nghĩa bên ngoài cho các thư viện và thành phần riêng biệt.

Điều này không nhất thiết phải giải quyết câu hỏi của bạn về việc cập nhật nhiều dự án, nhưng IMO là một vấn đề riêng có thể được xử lý thông qua tự động hóa và không tham gia khi chúng tôi đang nói về tổ chức/phiên bản/phát triển.

+0

hãy nói như vậy nếu tôi không hiểu, nhưng là đúng là một lệnh svn update trong thư mục dự án của tôi sẽ không cập nhật bên ngoài svn? Ngay sau khi tôi hỏi, tôi nghĩ rằng các giao diện của tôi - không giả sử thay đổi trong cùng một phiên bản chính và nếu tôi thực sự cần thay đổi giao diện- tôi cũng có thể thiết lập một thẻ/nhánh cụ thể cho các dự án đó vẫn cần cùng một nội dung - do yêu cầu của họ. – Niels

+2

Theo mặc định, nó sẽ cập nhật các phần tử bên ngoài. Vì vậy, tùy thuộc vào phương pháp phát triển của bạn và cách bạn tổ chức các dự án bên ngoài, bạn có thể muốn ghim mọi thứ vào một thẻ cụ thể hoặc một chi nhánh được bảo đảm duy trì BC. Bạn luôn có thể sử dụng cờ '--ignore-externals' với các lệnh cập nhật mặc dù sẽ không nhận được phiên bản mới nhất. – prodigitalson

1

Thực ra tôi đã ở trong tình huống tương tự cách đây một thời gian.

Tôi giải quyết nó thông qua một tập tin .htaccess (tôi sử dụng apache-2 như webserver [1]), bạn có thể chỉ định cái gì đó như

php_value include_path /absolute/path/to/libraries:/absolute/path/to/my/project:/lib/3rd_party 

và như vậy, mà là khá lớn vì có thư viện của bạn trong các lần kiểm tra git/svn khác nhau.

[1] http://httpd.apache.org/docs/2.0/howto/htaccess.html

+0

Tôi biết giải pháp của bạn và tôi sử dụng nó đôi khi nhưng trong ranh giới của php bằng cách sử dụng 'set_include_dir' chức năng, nhưng mối quan tâm chính của tôi là nhiều máy chủ. Nếu bạn có 5 máy chủ khác nhau, bạn có cần thanh toán trên tất cả các máy chủ không? Trong trường hợp đó bạn vẫn phải cập nhật mọi máy chủ trên bất kỳ bản cập nhật thư viện nào, nó ít cập nhật hơn nhiều so với việc cập nhật tất cả các dự án ... – Niels

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