Nhóm của tôi tại nhà tuyển dụng trước đây của tôi đã sử dụng Git và nó hoạt động tốt cho chúng tôi. Chúng tôi không phải là tất cả những gì lớn (có thể 16 hoặc hơn, với 8 ủy ban hoạt động thực sự?), Nhưng tôi có câu trả lời cho các câu hỏi của bạn:
- N-cách sáp nhập không quá phổ biến. Chúng tôi đã đưa ra một số quy ước về đặt tên chi nhánh cho phép chúng tôi viết kịch bản làm giảm quy trình "phát hành kỹ thuật" (tôi sử dụng dấu ngoặc kép vì chúng tôi không có kỹ sư phát hành) và mọi người sẽ tạo các chi nhánh riêng, nhưng chúng tôi hiếm khi có vấn đề với việc hợp nhất nhiều hơn hai nhánh (xem phần tiếp theo).
- (và # 3).Chúng tôi đã có kho lưu trữ trung tâm trên một máy chủ phát triển vì ba lý do: (a) Máy phát triển có RAID5 (khả năng chịu lỗi nhiều hơn) và sao lưu hàng đêm (máy trạm không phải là ban đêm), (b) bản phát hành sản xuất được xây dựng trên máy chủ phát triển, và (c) có một kịch bản lưu trữ tập trung đơn giản hóa. Kết quả là, sự kết hợp N-way đơn giản chưa bao giờ xảy ra. Điều gần nhất mà chúng tôi đã có đối với N-way là khi một người nào đó sáp nhập vào nhau và sau đó sáp nhập theo chiều dọc.
Git là một điều thực sự tuyệt vời đối với chúng tôi vì tính linh hoạt cao; tuy nhiên, chúng tôi đã phải thiết lập một số quy ước (tên chi nhánh và thẻ, vị trí repo, tập lệnh, v.v.) hoặc có thể hơi hỗn loạn. Khi chúng tôi đã thiết lập các quy ước, tính linh hoạt mà chúng tôi có chỉ là tuyệt vời.
Cập nhật: ước của chúng tôi về cơ bản là như sau:
- một thư mục trên máy chủ NFS của chúng tôi là nơi ở của tất cả các kho trung tâm
- chúng tôi đã có một số dự án thành phần chia sẻ, vì vậy chúng tôi đã phá vỡ chúng ra vào thư viện, về cơ bản, với các kho lưu trữ của riêng họ và các dự án có thể phân phối chỉ bao gồm chúng dưới dạng các mô đun con git.
- đã có chuỗi phiên bản và phát hành tên đối với chúng ta từ trên cao, vì vậy chúng tôi chỉ sử dụng một biến thể của những người như tên chi nhánh
- tương tự, cho thẻ, họ theo tên phát hành quá trình quyết
- các dự án chuyển giao chứa một tệp thuộc tính mà tôi đọc vào các kịch bản lệnh shell và cho phép tôi viết một kịch bản lệnh duy nhất để quản lý quá trình phát hành cho tất cả các dự án, mặc dù mỗi người có các biến thể nhỏ trên quy trình - các biến thể được tính trong các tệp thuộc tính đó
- Tôi đã viết tập lệnh có thể tạo lại gói có thể phân phối từ bất kỳ thẻ nào
- bằng git al hạ thấp chúng tôi để kiểm soát quyền truy cập bằng PAM và/hoặc quyền người dùng thông thường (ssh, v.v.)
- Có các quy ước khác khó đưa vào danh sách có dấu đầu dòng, như khi việc hợp nhất xảy ra. Thực sự, tôi và một người khác là loại "gitus" trong nhà, và chúng tôi đã giúp mọi người tìm ra cách sử dụng các nhánh và khi nào để hợp nhất.
- khiến mọi người tham gia vào các đoạn nhỏ và không thả bom khác trong nhánh chính là một thách thức. Một anh chàng đã mất khoảng hai tuần làm việc vững chắc trong một lần cam kết, và cuối cùng chúng tôi phải làm sáng tỏ tất cả. A to phí thời gian và bực bội cho tất cả mọi người.
- bình luận thông tin và chi tiết để đi với cam kết
Có những thứ khác mà bạn học được khi đội của bạn được trải nghiệm và học cách làm việc với nhau, nhưng điều này đã đủ để chúng ta bắt đầu.
Cập nhật: bất kỳ ai theo dõi những điều như vậy bây giờ đã biết về điều đó, nhưng Vincent Dreissen đã viết một bản vững chắc và khá toàn diện (nhưng không exaustive) take on branching and release engineering using Git. Tôi rất muốn khuyến khích sử dụng quy trình của mình như là một điểm khởi đầu bởi vì đối với hai lý do:
- rất nhiều đội làm theo cách này hoặc đang sử dụng một số biến thể gần (bao gồm cả Linux, Git, và nhiều nhóm dự án OSS khác), trong đó có nghĩa là phương pháp này đã được thử nghiệm và tinh chỉnh để thành công trong hầu hết các trường hợp. Bạn rất khó có thể đối mặt với một vấn đề chưa được đối mặt và giải quyết trong các ràng buộc của mô hình này.
- vì đã nói ở trên, hầu như bất kỳ kỹ sư nào có trải nghiệm Git đều sẽ hiểu những gì đang diễn ra. Bạn sẽ không phải viết tài liệu chi tiết về bản chất cơ bản của quá trình phát hành của bạn; bạn sẽ chỉ phải ghi lại những điều cụ thể chỉ cho dự án hoặc nhóm của bạn.
Nguồn
2009-04-25 04:23:23
Tôi hy vọng nó không nhanh chóng, tôi nghĩ đó là một câu hỏi thực sự hay.Thật không may là tôi không đủ điều kiện để trả lời - tôi chỉ sử dụng git trên các dự án cá nhân, vì công việc khá đằng sau thời gian, vẫn sử dụng CVS cho một số dự án và svn cho những dự án khác. Đối với hầu hết các phần, có vẻ như những người sử dụng svn nghĩ rằng họ là "hiện đại". :-) – Benson
Tôi nghĩ bạn sẽ tìm thấy rất nhiều nơi làm việc (như tôi), nơi câu trả lời thực sự cho câu hỏi này là "riêng tư" hoặc "không có kiến thức về phần còn lại của nhóm". –
Thật không may có vẻ như câu trả lời tốt nhất là thực sự cho một nhóm nhỏ. Có ai làm việc này với các đội trong thập niên 50 - 100+ không? –