2013-09-04 19 views
6

Chúng tôi chỉ di cư đến Git, vì vậy nếu tôi đặt câu hỏi ngu ngốc, xin vui lòng tha thứ cho tôi :-)Khi xây dựng chỉ một thư mục con của một repo Git, Jenkins cho thấy những thay đổi của toàn bộ repo - tại sao?

Git chúng tôi repo chứa một số dự án Maven, như thế này

ssh://[email protected]:7999/foo/foo.git 
    bar1 
    bar2 

tôi có việc làm Jenkins riêng biệt để xây dựng bar1 và bar2. Để ngăn chặn điều đó một push to bar1 cũng gây nên bar2, tôi cấu hình các plugin Git trong bar2 dưới Advanced... Included Regions để chỉ bao gồm bar2/.* - và ngược lại trong công việc bar1: bar1/.*

này hoạt động tốt, nhưng có một điều mà cằn nhằn tôi: Những thay đổi trong cả hai công việc cho thấy tất cả những thay đổi của repo (bar1 và bar2) thay vì chỉ những thay đổi của dự án cụ thể.

Tôi làm cách nào để định cấu hình?

Ảnh chụp màn hình: enter image description here

+0

Bạn có sử dụng repo cho mỗi cái (ví dụ: bar1 trong repo và bar2 của chính nó trong repo của chính nó) hoặc cả hai trong cùng một repo (im giả định sau, nhưng bạn nói repos là số nhiều, vì vậy im nhầm lẫn). – Lee

+0

Có, cả bar1 và bar2 đều nằm trong cùng một repo foo. Xin lỗi nếu điều đó không rõ ràng, tôi đã thay đổi câu hỏi. – eerriicc

+0

Nghĩ rằng đó có thể là những gì bạn có ý nghĩa, có một nửa cách viết câu trả lời của tôi dưới đây trước khi thực hiện và nghĩ rằng tôi muốn kiểm tra trước khi gửi một câu trả lời. – Lee

Trả lời

-1

Tôi giả sử bạn có nghĩa là cam kết đăng nhập khi bạn giới thiệu những thay đổi, trong trường hợp bạn không thể làm những gì bạn yêu cầu mà không có một khách hàng tùy chỉnh git hoặc ít nhất là một git tùy chỉnh cam kết kịch bản người xem .

Một kho lưu trữ duy nhất trong lý thuyết chỉ bao giờ chứa một dự án. Nếu không, bạn đang sử dụng git "sai" (sử dụng từ "sai" theo nghĩa rất lỏng lẻo vì git chỉ là một công cụ, sử dụng sai là không thể, chỉ sử dụng nó cho các yêu cầu của riêng bạn).

Cách duy nhất để thực hiện những gì bạn muốn là chia các thư mục bar1 và bar2 thành git repo riêng biệt. Nếu chúng giống như mô-đun, cả hai đều được yêu cầu trên cùng một trang, bạn có thể git init/clone vào thư mục bar1 và bar2 tương ứng cho từng dự án để bạn có thể kiểm soát chúng một cách riêng biệt.

Một giải pháp thay thế khác là tách chúng ra thành git repo riêng biệt, sau đó tạo repo "chính" thứ ba chỉ bao gồm hai repo khác làm mô-đun phụ bên trong các thư mục tương ứng. Sau đó, sử dụng một móc git tùy chỉnh như bạn có thể đã làm, để làm cho tổng thể kéo và xây dựng đúng thư mục/project/bar (x). Tuy nhiên đây là một chút của một cách hacky của làm việc hoàn toàn vì lợi ích của việc không phải thiết lập một vài thư mục đầu tiên.

Về cơ bản, bạn không thể tách nhật ký cam kết dựa trên thư mục, mà không cần viết trình xem cam kết tùy chỉnh của riêng bạn. Bạn cần phải tách dự án thành nhiều repo. Làm thế nào bạn sau đó đưa họ trở lại với nhau và tự động hóa bất kỳ nhiệm vụ xây dựng, là vào bạn. Không còn nghi ngờ gì nữa về những cách mà tôi đề cập ở trên. Chỉ là một trường hợp tìm ra giải pháp tốt nhất cho nhu cầu của bạn.

+0

Thật không may, quyết định đã được thực hiện để tích hợp một số dự án vào một repo. Nhưng cảm ơn câu trả lời của bạn! – eerriicc

+10

Google có nghĩa là hàng chục nghìn dự án trong một repo (Perforce) duy nhất. Facebook cũng vậy với git. Nếu bạn quyết định nói với họ rằng họ đang làm điều đó "sai", ** bạn cũng có thể cho Torvald biết, ** như [git] (https://github.com/git/git) có nhiều dự án (trong ý nghĩa rằng chúng được * xây dựng *, * đóng gói * và * triển khai * riêng biệt): git, gitk, git-gui, gitweb. –

+0

@PaulDraper Câu trả lời của bạn chứa rất nhiều thông tin sai về câu trả lời của tôi, thậm chí không đáng để chia nhỏ câu trả lời đó. Bạn cũng có thể muốn thực tế kiểm tra báo cáo của bạn quá. – Lee

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