2011-04-14 29 views
39

Tôi đang cố gắng tìm ra quy trình làm việc tốt nhất để làm việc với một nhánh của dự án mã nguồn mở hiện có trong Github. Tôi muốn thực hiện một dự án hiện có và thực hiện những thay đổi quan trọng đối với nó, trong trường hợp này là chuyển nó sang android và thêm chức năng chỉ dành riêng cho android. Tôi muốn thỏa mãn những điều sau đây:Luồng công việc tốt nhất khi giả mạo và đổi tên dự án GitHub

  1. Có thể kéo các thay đổi từ repo công khai của họ sang cổng Android mới khi mã gốc được cập nhật.
  2. Có thể sumbit thay đổi (thông qua yêu cầu kéo) cho dự án ban đầu khi tôi sửa lỗi không chỉ áp dụng cho cổng android.
  3. Có phiên bản được đổi tên riêng biệt của dự án để làm rõ rằng đó là một cổng Android. Tôi nhìn vào việc đổi tên một cái nĩa và Github đã cho tôi những cảnh báo rất lớn về việc này.

những suy nghĩ ban đầu của tôi là tôi sẽ ngã ba dự án ban đầu sau đó ngã ba và đổi tên ngã ba của tôi để cho tôi Repos sau:

original-author/projectA 
nicstrong/projectA 
nicstrong/projectA-android 

Điều này sẽ cho phép tôi làm việc trên repo địa phương của tôi local/projectA- android đẩy thay đổi để nicstrong/projectA-android. Sau đó, để cập nhật từ dự án ban đầu, tôi có thể rebase nicstrong/projectA thành mới nhất từ ​​tác giả gốc/projectA rồi lấy/hợp nhất từ ​​nicstrong/projectA đến local/projectA-android.

Câu hỏi của tôi là:

  1. Tôi khá mới cho toàn bộ Git điều. Điều này có vẻ giống như cách tiếp cận tốt không? Hoặc có một luồng công việc tốt hơn để xử lý scenerio này không?
  2. Làm cách nào để xử lý việc đẩy từ dự án A-android trở lại nicstrong/projectA để tôi có thể thiết lập yêu cầu kéo cho dự án gốc?

Trả lời

17

1/Vâng, đó dường như là cách tiếp cận an toàn nhất, như sửa đổi bất kỳ bạn kết thúc back-porting trong nicstrong/projectA sẽ nằm trong một dự án với cấu trúc tương tự như original-author/projectA.
Điều đó có nghĩa là yêu cầu kéo sẽ dễ dàng hơn để sắp xếp, vì bạn sẽ ở trong một dự án phản chiếu dự án của tác giả gốc.

2/Nếu bạn có refactoring lớn xảy ra trong nicstrong/projectA-android, tôi sẽ tạo ra một ngành backport, cẩn thận sáp nhập hoặc anh đào-chọn những gì bạn cần từ những thay đổi rất nhiều đến chi nhánh backport, và sau đó đẩy chi nhánh đó để nicstrong/projectA.
(có nghĩa là bạn đã thêm nicstrong/projectA làm điều khiển từ xa nicstrong/projectA-android)

+2

Để tạo nhiều dĩa cần thiết, tôi đã sử dụng kỹ thuật được mô tả trong bài đăng này: http://adrianshort.org/2011/11/08/create-multiple-forks-of-a-github-repo/ – dbasch

+1

@dbasch đúng, nhưng nó sẽ không phải là một ngã ba thực sự, trong đó sẽ không có bất kỳ yêu cầu kéo từ một "ngã ba" thứ hai trở lại repo ban đầu. – VonC

+0

Tôi sẽ sử dụng kho dự ánA cho các yêu cầu kéo đến repo gốc. Các thay đổi trong projectA-android/backport sẽ được hợp nhất thủ công với projectA. Đây có phải là chiến lược tốt không? – dbasch

3

Tên của kho lưu trữ git phụ thuộc nhiều vào tên của điều khiển từ xa. Hãy tiếp tục và sao chép nó, sau đó chỉ cần thêm một từ xa mới (bằng một tên khác) và bắt đầu đẩy ở đó. Tại thời điểm đó, tất nhiên, bạn có thể đi trước và thay đổi tên của thư mục dự án mà không có vấn đề.

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