2009-09-24 31 views
7

Tôi đang làm việc trên một chi nhánh tính năng và có một số thay đổi được cam kết với chi nhánh tính năng của tôi sẽ ảnh hưởng đến các nhà phát triển khác. Tôi muốn cam kết những thay đổi mới này vào thân cây để không ai bị xáo trộn để sửa lỗi sau này; tuy nhiên, tôi không muốn cam kết phần còn lại của nhánh tính năng vì nó chưa đầy đủ chức năng.Thực hành tốt nhất hợp nhất một phần SVN

Tôi phân nhánh khỏi thân cây tại r109. Chi nhánh của tôi đã có tất cả thay đổi đối với thân cây được hợp nhất trong phạm vi lên tới r145. Tôi cam kết của tôi "sẽ ảnh hưởng đến các nhà phát triển khác" thay đổi chi nhánh của tôi trong r152 và r153.

quá trình suy nghĩ của tôi ở đây là để svn chuyển bản sao làm việc của tôi vào thân cây và sau đó làm:

svn merge svn: // project/chi nhánh/myBranch -r 146: 153 ./project

SVN phàn nàn về xung đột vì thân cây chứa phiên bản gốc của một trong các tệp tôi đã thay đổi, trong khi tôi chỉ hợp nhất các thay đổi mới nhất (tôi đã thực hiện một vài thay đổi đối với tệp đó trong cam kết trước đó cho chi nhánh của tôi) và nó cũng phàn nàn về xung đột với một tệp mà một nhà phát triển khác đã thay đổi trong r149. Kể từ khi chi nhánh của tôi chỉ chứa sáp nhập từ thân cây lên đến r145 trước khi tôi cam kết, chi nhánh của tôi không phản ánh thay đổi đó.

OK - các xung đột dễ giải quyết, nhưng mối lo ngại của tôi là tôi sẽ gặp khó khăn trong vài ngày kể từ bây giờ khi tôi muốn tích hợp lại nhánh hoàn chỉnh của tôi vào thân cây.

Ngoài ra, tôi có thể thực hiện các thay đổi cần thiết cho thân cây và sau đó hợp nhất chúng vào nhánh của tôi, nhưng tôi không thích cách tiếp cận đó vì các thay đổi đã được thực hiện trong nhánh. Không có điểm trong việc thực hiện chúng hai lần.

Có ai có một số kinh nghiệm với việc hợp nhất một phần các chi tiết tính năng vào thân cây và sau đó là tái hòa nhập hoàn toàn không? Chiến lược tốt nhất ở đây là gì?

Trả lời

4

Nếu thứ tự của các thay đổi trên nhánh không quan trọng quá nhiều, bạn có thể chỉ hợp nhất các thay đổi đó vào thân cây và sau đó hợp nhất các thay đổi còn lại khi tính năng sẵn sàng tích hợp lại.

Nếu có thể, tôi sẽ tránh toàn bộ tình huống, bằng cách chờ đợi thay đổi cho đến khi chi nhánh sẵn sàng hợp nhất.

Trong hầu hết các trường hợp, nếu thay đổi phải được thực hiện ngay trên thân cây, tôi sẽ thực hiện thay đổi trên trunk, chứ không phải nhánh và sau đó hợp nhất từ ​​thân cây với nhánh thường làm.

+0

Cảm ơn! Tôi nhận ra sau khi cam kết với chi nhánh của tôi rằng đó là một cái gì đó nên đã được thực hiện trên thân cây để thay thế. Nếu không tôi sẽ chỉ làm theo cách bạn đề nghị. –

1

Để chắc chắn rằng bạn giữ lại tất cả các sửa đổi do bạn hoặc các nhà phát triển khác mà bạn muốn giữ và không có sửa đổi nào bạn không muốn, tôi nghĩ bạn có thể cần phải hợp nhất tất cả các tệp bị xung đột bằng cách sử dụng công cụ kết hợp đồ họa LVMerge của labview. Tôi đã thành công tốt sử dụng nó kết hợp với Rùa SVN - đây là hướng dẫn làm thế nào để tích hợp LVMerge vào SVN và sử dụng nó để giải quyết xung đột phiên bản:

http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/136/Using-LVmerge-LabVIEW-Merge-Tool-with-TortoiseSVN.aspx

+1

Công cụ đó khác gì so với công cụ hợp nhất rùa? – SeanJA

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