2010-05-24 32 views
6

Tôi đang lên kế hoạch cấu trúc thư mục của tôi cho một Linux/apache/dự án web php như thế này:Component dựa dự án web bố trí thư mục với git và symlink

Chỉ www.example.com/webroot/ sẽ được tiếp xúc trong apache

www.example.com/ 
    webroot/ 
    index.php 
    comp1/ 
    comp2/ 
    component/ 
    comp1/ 
     comp1.class.php 
     comp1.js 
    comp2/ 
     comp2.class.php 
     comp2.css 
    lib/ 
    lib1/ 
     lib1.class.php 

sự Thư mục component/lib/ sẽ chỉ nằm trong đường dẫn php.

Để hiển thị các tệp css và js trong thư mục webroot, tôi dự định sử dụng các liên kết tượng trưng.

webroot/ 
    index.php 
    comp1/ 
     comp1.js (symlinked) 
    comp2/ 
     comp2.css (symlinked) 

tôi đã cố gắng làm theo các nguyên tắc:

  • bố trí bởi các thành phần và các thư viện, không phải theo loại tập tin và không phải bởi "công cộng' hoặc 'phi công', index.php là một ngoại lệ này là.
  • phơi bày tập hợp các tập tin tối thiểu trong một thư mục web công cộng và làm cho mọi thứ khác không thể truy cập được trên web. Vì vậy, cấu trúc thành phần và thư viện cũng hiển thị trong mã html kết quả trong các liên kết , có thể giúp phát triển.
  • sử dụng git phải an toàn và luôn hoạt động. nó sẽ là ok để làm theo một số thủ tục để thêm một liên kết để git, nhưng sau đó kiểm tra chúng ra hoặc thay đổi các chi nhánh nên được xử lý một cách an toàn và sạch sẽ

Làm thế nào git xử lý các liên kết symlinking của các tập tin duy nhất một cách chính xác, có một cái gì đó để xem xét?

Khi nói đến hình ảnh, tôi sẽ cần liên kết các thư mục, cách xử lý bằng git?

component/ 
    comp3/ 
     comp3.class.php 
     img/ 
     img1.jpg 
     img2.jpg 
     img3.jpg 

Họ nên được liên kết ở đây:

webroot/ 
    comp3/ 
     img/ (symlinked ?) 

Nếu sử dụng liên kết tượng trưng cho điều đó có nhược điểm có lẽ tôi có thể di chuyển hình ảnh vào webroot/cây trực tiếp, trong đó sẽ phá vỡ các nguyên tắc đầu tiên cho ba (git thực tế).

Vì vậy, đây là câu hỏi về git và symlink. Nhưng tôi muốn được nghe ý kiến ​​về cách bố trí php, có thể bạn muốn sử dụng chức năng bình luận cho việc này.

Trả lời

2

Ngay khi bạn cần phải tái sử dụng một số bộ các tập tin ở nơi khác, đó chính là lúc bạn nên bắt đầu suy nghĩ về mặt components hoặc (trong git) submodules

Thay vì quản lý webroot, và complib trong cùng một kho lưu trữ (là SVN hoặc "Centralized way" for CVCS), bạn xác định:

  • n repos, one pe r thành phần bạn cần phải tái sử dụng (vì vậy 'img' sẽ là một repo Git tái sử dụng như một submodule trong vòng webroot, ví dụ)
  • một dự án chính để tham khảo các sửa đổi chính xác của những submodules bạn cần.

Đó là một trong những ưu điểm của các môđun con của liên kết tượng trưng: bạn tham khảo một sửa đổi chính xác, và nếu thành phần đó có một số diễn biến của riêng nó, bạn không nhìn thấy chúng ngay lập tức (không cho đến khi bạn cập nhật submodule bạn anyway).
Với liên kết tượng trưng, ​​bạn thấy trạng thái bất kỳ là tập hợp các tệp ở đầu kia của liên kết đó.

+0

Cảm ơn bạn đã chỉ ra điều này. Tôi đã không nghĩ đến việc nhìn thấy các thành phần như các dự án riêng biệt. Tôi sẽ suy nghĩ về việc tách các thành phần ở một điểm sau, nhưng bây giờ tôi sẽ giữ chúng lại với nhau trong một kho lưu trữ, giúp tôi giữ nó đơn giản - karlthorwald - aka – user89021

+0

Tôi không chắc chắn nhưng giải pháp này không tính đến lý do cho việc liên kết tượng trưng là giữ hầu như tất cả các tệp trong một thư mục không công khai chưa được phơi sáng? Tôi sẽ làm cho câu hỏi rõ ràng hơn bây giờ. - karlthorwald - aka – user89021

+0

@ user89021: không có vấn đề gì: bạn có thể kết hợp các mô-đun con với sylink (symlink thành submodule!). Điều quan trọng cần lưu ý ở đây là Git không có nghĩa là chứa tất cả mọi thứ trong * một * repo: http://stackoverflow.com/questions/984707/what-are-the-git-limits/984973#984973 – VonC

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