Quy trình công việc Git tốt nhất để làm việc với một dự án nguồn mở với các thay đổi cụ thể của chủ nhân là gì?


11

Tại nhà tuyển dụng hiện tại của tôi, chúng tôi đang sử dụng một dự án nguồn mở được lưu trữ trên Github như một thành phần của ứng dụng của chúng tôi. Tôi đã làm việc trong dự án này để thêm một số tính năng mà chúng tôi cần và để tích hợp nó với các hệ thống xây dựng của chúng tôi. Người quản lý của tôi và tôi đồng ý rằng chúng tôi muốn gửi càng nhiều công việc của chúng tôi về thành phần này càng hợp lý cho dự án nguồn mở. Câu hỏi của tôi là về quy trình / kỹ thuật tốt nhất là gì để duy trì các cam kết Git của tôi theo cách mà tôi có thể dễ dàng tách ra những điều hợp lý để thêm lại cho dự án nguồn mở - sửa lỗi và các tính năng mới đủ chung - từ những thứ dành riêng cho dự án của chúng tôi, như xây dựng vị trí và hằng số ứng dụng.

Những gì tôi đã làm cho đến nay là duy trì một chi nhánh Git riêng nơi tôi cam kết tất cả các thay đổi của mình, với độ chi tiết phù hợp. Sau đó, tôi sử dụng cherry-pickđể thêm các cam kết có thể mở được vào nhánh chính và gửi chúng lại cho Github.

Có vẻ như tôi nên sử dụng hợp nhất để làm điều này, vì vậy tôi không tiếp tục tạo các cam kết riêng biệt với nội dung giống hệt nhau, nhưng tôi không chắc chắn làm thế nào trong khi loại trừ các cam kết cụ thể của công ty và giữ quy trình làm việc hợp lý.

Ví dụ: tôi cho rằng tôi có thể cam kết những thứ có thể mở được trên những thứ cụ thể của chủ và công ty trên nhánh riêng, sau đó hợp nhất chủ vào nhánh đó khi cần, để lại nhánh chính chỉ vào cam kết trước khi hợp nhất, sao cho tôi có thể cam kết những thứ có thể mở cho nó một lần nữa và sau đó hợp nhất lại. Điều có vẻ khó xử về quy trình công việc này là tôi sẽ cần phải quyết định trước cho tất cả mọi thứ tôi làm thuộc chi nhánh nào, làm việc với những gì có vẻ như hoàn thành, sau đó cam kết và hợp nhất trước khi thử nghiệm. Một trong những điều tôi thực sự thích về Git là việc dễ dàng làm bất cứ điều gì bạn cần để làm cho ứng dụng của bạn hoạt động, sau đó quyết định sau đó về cách thức và nơi để thực hiện các thay đổi của bạn. Theo như tôi có thể nói, nếu bạn hiện đang ở trong một chi nhánh và đã hoàn thành một số công việc, thì '

Là những gì tôi đang làm một quy trình công việc hợp lý cho những đóng góp dài hạn? Bất cứ ai cũng có thể đề xuất một quy trình làm việc khác có thể tốt hơn và tại sao nó tốt hơn?


1
Bạn có thể gửi một số công việc lên một chi nhánh khác khá dễ dàng - sử dụng rebase git-scm.com/book/en/Git-Branching-Rebasing . Miễn là bạn cam kết trước, sau đó bạn có thể khởi động lại cam kết đó lên một nhánh khác, sau đó đặt lại nhánh hiện tại của bạn để xóa cam kết.
artbristol

Câu trả lời:


2

Đây là một chiến lược có thể phù hợp với bạn:

Tạo 2 repo git riêng, với một repo dành cho công việc của công ty và cái kia là repo chung (tôi muốn cam kết lại).

Để làm cho hệ thống này hoạt động, bạn cần thực hiện điều này (mà tôi coi là chiến lược quan trọng nhất): Xác định thế nào là "chung" và có thể được sử dụng bởi mọi người khác trong cộng đồng

Khi có định nghĩa này, bạn có thể tách ra những gì bạn sẽ cam kết lại và những gì bạn không cần phải cam kết.

Điều có ý nghĩa là những gì bạn viết mã cho cộng đồng phải ở dạng chung, vì một đoạn mã quá cụ thể sẽ không mang lại lợi ích cho ai (và thậm chí có thể không đưa nó vào nhánh chính).

Bây giờ bạn đã biết những gì bạn sẽ cam kết với cộng đồng, bạn có thể thực hiện hầu hết các công việc "trả lại" trong repo dành riêng cho nó. Sau đó, bạn chỉ cần rẽ nhánh đó vào repo dựa trên công việc của bạn và thực hiện bất kỳ công việc cụ thể nào trên công việc đó.

Tôi nghi ngờ rằng bạn sẽ dành nhiều thời gian hơn cho repo "trả lại", vì vậy chỉ cần nhớ cung cấp các nhận xét có giá trị, vv (thậm chí có thể là tài liệu) cho những người sẽ sử dụng dự án đó trong tương lai.

Tôi cũng tin rằng git có thể làm được nhiều hơn bạn nghĩ. Tôi đã xem video này trên Vimeo: http://vimeo.com/46010208 và cô ấy đã làm một công việc tuyệt vời để giải thích rất nhiều điều kỳ quặc mà git có thể làm.

Chiến lược của tôi không phải là duy nhất ngoài đó, nhưng nó chắc chắn có thể là điểm khởi đầu để bạn nghĩ về 1 phù hợp với bạn một cách cụ thể.


1

Tùy thuộc vào bản chất của cơ sở mã nguồn mở và những gì bạn cần đạt được bằng cách thay đổi nó, bạn có thể nhận được rất nhiều số dặm bằng cách tách các mối quan tâm của bạn. Trong ngã ba của dự án, chỉ thêm những thứ mà bạn dự định đóng góp trở lại ban đầu. Thêm móc hoặc điểm mở rộng để cho phép bạn thực hiện công việc của công ty bạn sẽ không được chia sẻ.

Bằng cách này, bạn sẽ không bao giờ phải lo lắng về việc phân chia hoặc quyết định trước những gì để chia sẻ và những gì không chia sẻ. Vì bạn đã thêm tính linh hoạt cho dự án ban đầu, bạn luôn có thể chọn chia sẻ một số phần của công ty bạn làm việc sau này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.