Đây là một tình huống phổ biến mà phải có một giải pháp hợp lý, nhưng bất chấp các trang đọc sách và thể dục dụng cụ Git, não tôi nhức nhối và tôi không thể thực hiện công việc này ...Git, sub-repos & libs bên ngoài để phát triển web - chiến lược tốt nhất một lần và cho tất cả?
Tôi đang làm việc với Wordpress, mặc dù điều này sẽ phù hợp với hầu hết các trang web của kịch bản dev. Tôi muốn quản lý các trang web cài đặt với một repo git và cũng quản lý các plugin WP, jQuery plugin và bit mã khác trong repos riêng biệt mà có thể dễ dàng được kéo/đẩy từ các nguồn bên ngoài của họ. Dường như đủ đơn giản cho đến khi bạn nhìn vào các chi tiết ...
Các tiêu chí
"Subfolders" tiêu chí Các thư mục cho mỗi plugin không nên bị ràng buộc vào thư mục gốc của repo nguồn của nó. Nhiều repos có nhiều thư mục lồng nhau như "my-repo-name/...", "dev /", "test /", "src /" trong đó nội dung của phần sau là điều bắt buộc. Điều này là quan trọng để giữ cho các URL tham chiếu được sạch sẽ và giảm thiểu rác công khai có sẵn.
"Không có Proxys" tiêu chí Giải pháp lý tưởng sẽ không yêu cầu thêm chi nhánh trung gian hoặc repos. Việc đẩy các thay đổi vào nguồn bên ngoài của plugin phải đơn giản và không yêu cầu nhiều lần kết hợp/đẩy trung gian.
"Real Files" tiêu chí Lý tưởng nhất là repo ngoài cho toàn bộ trang web nên thực sự chứa các tập tin của subrepos của plugin (tức là không có 'submodules'). Tôi có thể được thuyết phục xa này mặc dù ...
"xuất bản" tiêu chí Nó phải chơi tốt với rsync và/hoặc git push'ing đến máy chủ sống
Tôi đã nhìn vào những năm giải pháp
Git submodules đủ đơn giản để làm thay đổi và đẩy/kéo nhưng submodules thất bại trên "Thư mục con" và tiêu chí "Real file"
Git read-cây/subtr ee merge Giải quyết vấn đề "Real Files" và read-tree
thực sự cho phép bạn tham khảo thư mục con của một nhánh nhưng khi tôi làm như vậy và cố gắng hợp nhất các thay đổi trên luồng ngược dòng, Git không nhớ được nó đến từ thư mục con và toàn bộ cấu trúc của tổng thể nhánh theo dõi lib libs ... vì vậy FAIL trên tiêu chí này.
Apenwarrs cây con mở rộng (here) Tuyệt vời cho các tiêu chí "Real Files" và khá đơn giản để đẩy/kéo cho đến khi bạn muốn thực thi các "thư mục con" quy tắc. Lúc tốt nhất nó sau đó dường như yêu cầu các chi nhánh trung gian nơi bạn tách ra các thư mục mà bạn muốn từ các chi nhánh theo dõi từ xa và sau đó thêm này như là một cây con để chi nhánh chủ của bạn. Tôi đã không có nhiều may mắn sáp nhập/đẩy các thay đổi trên master trở lại repo nguồn. Tôi vẫn nghĩ rằng có thể có khả năng ở đây ...
Liên kết tượng trưng với repo bên ngoài Giải pháp tuyệt vời cho đến khi GIT ngừng theo các liên kết tượng trưng.Bây giờ nó không thành công trên "Real Files" và "xuất bản" Tiêu chí
Repos Nested Một nơi nào đó tôi thấy một câu trả lời SO mà nếu bạn một cách rõ ràng git add
một thư mục chứa repo khác và bao gồm các dấu gạch chéo, git sẽ KHÔNG submodule nó nhưng thay vì theo dõi các tệp riêng lẻ. Điều này có vẻ đầy hứa hẹn nhưng nó không thành công trên tiêu chí "Thư mục con".
Điều gì tiếp theo?
Tôi đã xem các tham chiếu đến "thanh toán thưa thớt" - hoặc có thể là một thứ liên quan đến việc cắt cành. Tôi hy vọng sẽ tránh được một giải pháp có liên quan đến các kịch bản shell hoặc quá phức tạp đến nỗi nó đòi hỏi tôi phải học lại nó mọi lúc (không thường xuyên) tôi thực hiện một thay đổi cho một plugin. Nó cần phải được dễ dàng hơn việc duy trì một repo riêng biệt cho mỗi plugin và sao chép qua lại từ cài đặt CMS chính.
Chắc chắn một người nào đó có một cách chức năng đơn giản để thực hiện công việc kịch bản phổ biến này? Cảm ơn trước sự giúp đỡ ...
Cảm ơn Mahalie. Một lý do là rất nhiều repos không đặt các tập tin lõi của họ trong thư mục gốc và thường thêm kiểm tra đơn vị và các thư mục khác trong nhánh master. Điều này dẫn đến các URL dài, xấu, đặc biệt đối với các thư viện JS cũng như quyền truy cập công khai vào nhiều tệp không cần thiết. Lý do khác là nếu bạn sử dụng git để đẩy đến một máy chủ trực tiếp (bằng cách nhân bản repo cục bộ và sau đó đẩy từ địa phương và hợp nhất trên máy chủ) thì điều này sẽ yêu cầu đẩy/sáp nhập thủ công mỗi repo. Là tất cả mọi người đang sử dụng GIT ngày nay ngay cả đối với phích cắm jquery, một chủ đề trang web điển hình có thể có 10 hoặc nhiều hơn repos trong đó. –