2009-04-23 22 views
15

Khi chúng tôi thực hiện phân nhánh và sáp nhập với svn, chúng tôi luôn có cùng một điều xảy ra.tortoise svn luôn hợp nhất 45 tệp phụ

Chúng tôi có bản sao mới nhất của thân cây.

Tạo chi nhánh và chuyển đổi.

Thực hiện một số thay đổi nhỏ trên một tệp trong nhánh.

Hợp nhất nhánh trở lại vào thân cây.

Tại thời điểm này, chúng tôi sẽ có một tệp cần được comittied, cộng với 45 tệp phụ khác. Điều này xảy ra trên mỗi nhánh đơn và hợp nhất, và luôn luôn có 45 tệp phụ. Tôi không có ý tưởng làm thế nào để khắc phục vấn đề, nhưng nó cực kỳ khó chịu.

Có ai từng nhìn thấy điều này trước đây không?

CẬP NHẬT: Khi tôi thực hiện cam kết, các tệp mà tôi thực sự thay đổi có Trạng thái văn bản của chúng được sửa đổi và trạng thái thuộc tính của chúng trống. "45 tệp" là tất cả Trạng thái văn bản bình thường, Trạng thái thuộc tính được sửa đổi.

+0

Sẽ thực sự hữu ích nếu bạn mô tả 45 tệp phụ đó là gì. –

+0

Có thể trùng lặp: http://stackoverflow.com/questions/391864/svn-mergeinfo-properties-on-paths-other-than-the-working-copy-root – MPelletier

Trả lời

11

Chúng có thể là hợp nhấtinfo thuộc tính. Với phiên bản 1.5 của SVN, nó khá tích cực với việc thiết lập thuộc tính mergeinfo và khi bạn hợp nhất, các thuộc tính đó được cập nhật - yêu cầu một cam kết với chúng.

Câu trả lời là xóa thuộc tính mergeinfo từ họ. Cũng nâng cấp lên phiên bản 1.6 có hỗ trợ tốt hơn mergeinfo (nghĩa là nó viết ít thuộc tính hơn).

Tôi nên nói rằng những tệp này sẽ không có thay đổi rõ ràng nếu bạn nhìn vào sự khác biệt. Rõ ràng, nếu nội dung của chúng thay đổi, thì những thay đổi có thể cung cấp cho bạn manh mối (ví dụ: công cụ tự động viết thêm nhận xét, sửa đổi bố cục hoặc thêm dòng vào đầu hoặc cuối).


EDIT: Xem this blog post để biết thêm thông tin về các vấn đề sáp nhập SVN, và sửa lỗi.

+0

Đây có phải là điều tôi nên làm thường xuyên không? Tôi e ngại nâng cấp lên 1.6 sau một Tweet đáng ngại từ CodingHorror. –

+0

Tôi đã nâng cấp ứng dụng khách của mình (rùa) và bộ nhớ cache có thể làm cho trình khám phá tạm dừng; Tôi sẽ ở lại với 1.5.5 trong một thời gian dài hơn, và chỉ cẩn thận hơn với việc hợp nhất - tôi có xu hướng hợp nhất trên một thư mục 'cấp cao nhất', không bao giờ là subdirs và chưa bao giờ gặp vấn đề này. – gbjbaanb

+0

Tôi chỉ phát hiện các tệp bổ sung trong quá trình hợp nhất vào ngày khác và nhận ra chúng dưới dạng tệp đã được hợp nhất trước đó. Bạn có thể xác nhận rằng việc loại bỏ các thuộc tính svn: mergeinfo từ tất cả, nhưng gốc dự án của bạn là một hoạt động an toàn? Bất kỳ hậu quả tiêu cực để xem xét? Và ... đây có phải là một lỗi hay hành vi mong đợi? –

5

Rất có thể đó là thuộc tính mergeinfo như đã đề cập. Bạn có thể sẽ muốn dọn dẹp các thuộc tính mergeinfo trên các tệp và thư mục trong thân cây của mình. Một tập tin thực thi rất hữu ích cho việc này vì bạn có thể cần phải làm điều này một lần nữa trong tương lai. Một cái gì đó như sau:

echo Removing Nested Merge Information... 

svn propdel svn:mergeinfo subfolder1 --depth=infinity 

svn propdel svn:mergeinfo subfolder2 --depth=infinity 

svn propget svn:mergeinfo --depth=infinity trunk 

Sau đó cam kết trở lại thân cây sau khi bạn đã chạy tập tin thực thi trên bản sao làm việc của thân cây.

Ngoài ra, đổi tên và di chuyển thư mục là một cách phổ biến để tạo thuộc tính mergeinfo trên một thư mục/tệp trong repo lật đổ. svn1.6 không phải là hào phóng về việc thêm thuộc tính mergeinfo cho các hành động khác nhau.

1

Cá nhân, tôi nghĩ rằng mergeinfo gây ra nhiều sự cố hơn giải quyết, ít nhất với trạng thái hiện tại của công cụ. Khi đó là trong suốt về các cam kết, có thể nó sẽ có giá trị sử dụng.

Bạn có thể xóa an toàn các thuộc tính mergeinfo. Tuy nhiên, lưu ý rằng bạn sẽ cần phải theo dõi theo cách thủ công các bản sửa đổi nào để hợp nhất để tích hợp lại.

3

Đọc bài viết chi tiết tại http://www.collab.net/community/subversion/articles/merge-info.html

Đó là dài nhưng đáng giá. Lưu ý đặc biệt các đề xuất trong phần "Suy nghĩ một phần" ở cuối, bao gồm các gợi ý để giảm tiếng ồn mergeinfo.

Ngoài ra, thay vì sử dụng svn propdel để xóa thông tin hợp nhất không mong muốn, hãy xem xét sử dụng svn kết hợp với tùy chọn --record-only.

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