Tái hòa nhập chỉ có thể được sử dụng nếu các phiên bản X đến Y trước đó được hợp nhất từ ​​<URL> để tái hòa nhập nguồn, nhưng đây không phải là trường hợp


127

Đã sử dụng các nhánh SVN với Rùa 1.6. Tôi đã định kỳ hợp nhất thân cây vào chi nhánh để giữ cho nó cập nhật.

Hôm nay, tôi nghĩ tôi sẽ tái hòa nhập chi nhánh. Tôi đã chọn "Tái hòa nhập một nhánh" từ Rùa và nhận được thông báo lỗi sau:

Tái hòa nhập chỉ có thể được sử dụng nếu các phiên bản 4709 đến 5019 trước đây được hợp nhất từ http://subversion/svn/saxdev/trunknguồn tái hòa nhập, nhưng đây không phải là trường hợp

Sau đó, nó liệt kê khoảng 50 tệp với các mô tả như thế này:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

Sửa đổi 5019 là sửa đổi đầu. Bản sửa đổi 4737 là bản sửa đổi khi tôi tạo một chi nhánh.

Tôi có cái này từ nhật ký sửa đổi 4737

Hành động: Đã thêm Đường dẫn: / cành / qst Sao chép từ đường dẫn: / trunk

Đối với tôi, thông báo lỗi đó nói rằng chi nhánh ban đầu không phải từ thân cây, điều đó không đúng.

Có ý kiến ​​gì không?


1
Được chứ. Tôi không thực sự sử dụng Subversion nữa, nhưng sẽ tin lời bạn!
colinjwebb 14/07/2015

1
Cảm ơn anh bạn. Tôi nghĩ rằng trang này là tốt hơn cho nó.
Xám

Câu trả lời:


138

Nếu bạn đang làm việc trên một chi nhánh và luôn cập nhật thông tin với những người khác, bạn có thể sẽ bị bối rối khi bạn tạo một bản sao của thân cây và cố gắng tái hòa nhập chi nhánh của bạn nếu bạn nhận được một tin nhắn như thế này:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

Tôi đã thấy một số cách giải quyết trên Google nhưng chúng khiến tôi lo lắng như 'hack'. Để giải quyết nó, tôi quyết định thực hiện những gì lật đổ đang gợi ý trong tin nhắn. Tôi đã trở lại chi nhánh của mình và hợp nhất rõ ràng các bản sửa đổi được chỉ định:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Khi tôi đã làm điều này, tôi có thể trở lại bản sao hoạt động của thân cây và tái hòa nhập chi nhánh mà không gặp vấn đề gì.

Tôi hi vọng cái này giúp được


16
Đẹp! "làm những gì lật đổ được gợi ý trong tin nhắn". :)
Adam

7
Tôi đồng ý, câu trả lời phổ biến hơn là hấp dẫn, nhưng có lẽ tốt hơn để sửa nó một cách chính xác. Tôi đã phải đi đến các tập tin có vấn đề cụ thể và svn mergenó từ thân cây.
Steve Kehlet

1
Nó hiệu quả tuyệt vời đối với tôi. Thủ thuật chính là Rùa đã không cho tôi biết sửa đổi vấn đề. Sau khi nâng cấp dòng lệnh svn của khách hàng, tôi đã có thể nhận được nó để gửi cho tôi một tin nhắn như bạn có, và sau đó có thể hợp nhất sửa đổi vấn đề và quay trở lại trung kế.
dùng12861

7
Điều này không hiệu quả với tôi vì các hợp nhất "mất tích" được liệt kê đã được thực hiện trong chi nhánh (nguồn tái hòa nhập).
Sam

6
Trong khi câu trả lời này nghe có vẻ hợp lý, nó không hiệu quả với tôi. Tôi tiếp tục nhận được thông báo lỗi tương tự. Điều đã giúp, là xóa các thuộc tính svn: mergeinfo khỏi các tệp được liệt kê, giống như câu trả lời được chấp nhận đang gợi ý.
Jenny O'Reilly

85

[[Mặc dù giải pháp của tôi đã có hiệu quả với tôi trong quá khứ, nhưng nó có thể dẫn đến kết quả không phù hợp với các khách hàng SVN hiện đại. Trong trường hợp của chúng tôi, các lỗi hợp nhất dường như là sản phẩm phụ của tự động hóa gây nhầm lẫn lịch sử SVN của chúng tôi và không phải là hoạt động thực sự. Tôi sẽ để lại đây cho hậu thế nhưng xin vui lòng xem xét câu trả lời được chấp nhận thay thế. ]]

Giải pháp cho tôi là loại bỏ bất kỳ svn:mergeinfothuộc tính nào bằng cách nào đó được gắn vào các tệp riêng lẻ trong cấu trúc phân cấp.

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

Để tìm các tệp có thông tin mergeinfo bạn có thể làm:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Sau đó, bạn có thể xóa các thuộc tính mergeinfo:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

Sau khi tôi hoàn thành điều này, hợp nhất của tôi thực hiện tốt.


2
Điều này thực sự giúp tôi giải quyết vấn đề của mình nhưng vấn đề của tôi là do hợp nhất một bản sửa đổi từ thư mục con thay vì thực hiện điều này trên thư mục gốc. Vấn đề của tôi là - Tôi đã thực hiện hợp nhất nhưng thư mục gốc không nhận ra rằng việc hợp nhất đã xảy ra, điều này có nghĩa là tôi phải cập nhật thủ công propinfoinfo với các số sửa đổi bị thiếu. LƯU Ý Tôi chỉ có thể làm điều này vì không có thay đổi tệp nào khác cho bản sửa đổi và sẽ gây ra hành vi không mong muốn nếu các tệp khác cần được hợp nhất - bạn sẽ cần hợp nhất lại các bản sửa đổi nếu đây là trường hợp.
Thi hành

5
Trong TortoiseSVN, bạn có thể nhấp chuột phải vào tệp, chọn "TortoiseSVN" -> "Thuộc tính" và Xóa thuộc tính svn: mergeinfo.
StarCub

3
@StephenKennedy Bạn có thể gặp phải vấn đề tái sử dụng một chi nhánh đã được tái hòa nhập. Nếu vậy, hãy kiểm tra phần cuối của svnbook.red-bean.com/en/1.7/ trên bắt đầu bằng "Sau khi hợp nhất --reintegrate được thực hiện từ chi nhánh này đến chi nhánh, chi nhánh không còn có thể sử dụng được cho công việc tiếp theo."
AlexMA

6
+1. Bạn không cần phải xóa tất cả các mergeinfos; chỉ là những người có phạm vi thiếu. Xem câu trả lời của tôi để biết cách xóa chỉ vấn đề mergeinfos bằng cách lọc đầu ra lỗi TortoiseSVN.
Iain Samuel McLean Elder

4
-1. Bạn không nên xóa các thuộc tính mergeinfo trừ khi bạn thực sự chắc chắn về những gì bạn đang làm. Nhiều người có thể đọc nó, xóa các thuộc tính này và vô tình giới thiệu các vấn đề khác. Paul Whipp có một câu trả lời tốt hơn.
Bizmarck

15

Nếu bạn cố gắng tái hòa nhập chi nhánh của mình thành trung kế và bạn thấy các lỗi như thế này từ TortoiseSVN:

Hợp nhất thử nghiệm tái hòa nhập chỉ thất bại !: "Chỉ có thể sử dụng tái hòa nhập nếu một số sửa đổi trước đây được hợp nhất từ ​​thân cây, nhưng đây không phải là trường hợp"

Nhấp vào văn bản lỗi và nhấn CTRL+ A, CTRL+ Cđể sao chép tất cả văn bản.

Dán văn bản vào chuỗi ở đây của tập lệnh PowerShell này:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

Kịch bản trích xuất các đường dẫn tương đối của các tệp có vấn đề mergeinfo và đưa ra một danh sách các lệnh để sửa từng lệnh.

Bạn có thể phải thay đổi 'userdata'giá trị cho phù hợp với cấu trúc kho lưu trữ của bạn.

Thực thi tập lệnh để xuất các lệnh bạn cần để loại bỏ vấn đề mergeinfos.

Trong ví dụ này, tập lệnh sẽ tạo đầu ra này:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

Tại dấu nhắc lệnh, bạn có thể điều hướng đến cơ sở chi nhánh (myproject) và thực hiện các lệnh để xóa vấn đề mergeinfos.

Bạn sẽ thấy đầu ra như thế này:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Như trong câu trả lời của Gray , bây giờ bạn nên thực hiện các thay đổi cho chi nhánh và cố gắng tái hòa nhập lại. Lần này nó nên hoạt động!


1
Rất lâu trước khi tái hòa nhập tôi đã hợp nhất (không tái hòa nhập) một số thay đổi đối với trung kế từ chi nhánh của tôi vì tôi vô tình cam kết với chi nhánh của mình khi tôi có ý định cam kết với trung kế. Nó có thể là lý do đằng sau những lỗi tái hòa nhập này?
Iain Samuel McLean Elder

Đó chính xác là những gì dường như đã gây ra vấn đề này trong trường hợp của tôi. Cảm ơn đã dành thời gian để viết kịch bản!
Sam

@Sam Vui mừng bạn thấy nó hữu ích. Bạn có cần phải thay thế không gian theo nghĩa đen bằng một \s+để làm cho nó hoạt động cho bạn?
Iain Samuel McLean Elder

Sắp xếp; đó là nhiều hơn những +gì cần thiết cho nó để làm việc cho tôi. Trong trường hợp của tôi, một số dòng có hai khoảng trắng và các dòng khác có ba khoảng trắng, vì vậy cần hỗ trợ cho số lượng khoảng trắng khác nhau. Tôi không chắc tại sao tôi lại thay đổi không gian thành a \s; điều đó có lẽ không cần thiết, rất xin lỗi vì phần đó!
Sam

@Sam Không phải lo lắng, nhưng bây giờ tôi sẽ thay đổi nó thành một không gian theo nghĩa đen cho đến khi TortoiseSVN bắt đầu trộn nó với các tab hoặc bất cứ điều gì :-) Tôi đã rời khỏi +vì nó hữu ích cho bạn.
Iain Samuel McLean Elder

11

Trên thực tế, tôi đã sửa nó bằng cách sử dụng tùy chọn "hợp nhất hai nhánh khác nhau" để hợp nhất thân cây và nhánh vào bản sao làm việc của tôi. Sau đó, tôi cam kết điều đó với thân cây.

Kỳ diệu


4
Câu trả lời này không thực sự giải thích những gì bạn đã làm. Không có ví dụ, thậm chí không có liên kết đến phần cần thiết của hướng dẫn.
zigg

Nhìn lại, không có nó. Tuy nhiên, vì đây là câu trả lời của riêng tôi vào cùng ngày với câu hỏi, nó là câu trả lời tốt nhất trong vài tháng. Tôi muốn đoán rằng nó có ý nghĩa nếu bạn vẫn sử dụng Rùa SVN 1.6. Thay vào đó, tôi đã chấp nhận câu trả lời của Gray là câu trả lời được chấp nhận.
colinjwebb

Ví dụ: svn merge ^ / tags / wx ^ / tags / yz. Lỗi tái hòa nhập xuất hiện cho tôi khi sử dụng 1.8 và hợp nhất vào trung kế nơi nguồn hợp nhất đã có một sửa đổi cụ thể trước đó được sáp nhập vào nó từ trung kế. 1.8 xuất hiện để quyết định rằng một sự hợp nhất tái hòa nhập đã được cố gắng, điều đó không được. Hợp nhất chạy khô với 1.6 sẽ hoạt động tốt, nhưng hợp nhất hai URL cũng phù hợp.
Nick

1
Kịch bản chính xác thất bại với 1.8 là sao chép thẻ từ một số phiên bản trở lại để phát hành bản vá, cherry chọn một thay đổi từ trung kế sang backport bằng cách hợp nhất vào thẻ đã vá, thực hiện thay đổi thêm cho thẻ đã vá và hợp nhất lại vào thân cây. Những thay đổi giữa thẻ cơ sở và phiên bản được vá là những gì cần được hợp nhất trở lại trung kế và hợp nhất 2 URL sẽ xử lý việc đó.
Nick

Tôi nên đọc câu trả lời này trước khi dành 3 ngày cố gắng để hiểu những gì đang xảy ra. Tôi vẫn không hiểu tại sao tôi gặp phải vấn đề này nhưng nghi ngờ nhận xét từ @Nick là lý do - và bây giờ mọi thứ đang hoạt động Tôi sẽ không tìm kiếm thêm nữa ...
Dave Richardson

6

Một cái gì đó làm việc cho tôi trong rùa SVN: thay vì hợp nhất tất cả các sửa đổi từ chi nhánh, chọn phạm vi cụ thể và chọn thủ công tất cả các sửa đổi của bạn từ chi nhánh.


1
Cảm ơn bạn cho một ý tưởng cơ bản như vậy. Trong tất cả các câu trả lời, đây không chỉ là ít phức tạp nhất, mà nó là câu duy nhất phù hợp với tôi.
redman

3

Chỉ cần làm như SVN đang nói với bạn.

  1. Hợp nhất chi nhánh từ Reversion mà SVN đang nói với bạn
  2. Tái hòa nhập từ Chi nhánh đến trung kế

2
Không làm việc cho tôi. Những thay đổi đã tồn tại trong chi nhánh. Hướng dẫn của bạn trông giống như chúng nên hoạt động trong một số trường hợp, nhưng chúng dường như được dựa trên một giả định, vì vậy chúng không có vẻ phổ quát.
Sam

1

Xem thêm câu trả lời của tôi ở đây để có kinh nghiệm của tôi với một trường hợp tương tự. Tôi không chắc đây có phải là nguồn gốc của vấn đề của bạn không, nhưng có vẻ như Subversion 1.8 có vấn đề với mergeinfo khi hai thay đổi hủy lẫn nhau.


0

Tôi gặp vấn đề này. Tôi đã làm một bản ghi SVN trên chi nhánh của mình để tìm thấy là tôi đã hợp nhất thân cây với chi nhánh của mình.

Tôi lưu ý tất cả các sửa đổi.

Sau đó, tôi đã hợp nhất chi nhánh của mình với thân cây bằng cách chỉ định các bản sửa đổi bằng tay. Tôi đã chỉ định tất cả các phạm vi để loại trừ các sửa đổi là tôi đã hợp nhất thân cây. Tôi quản lý để có được chi nhánh của tôi sáp nhập.

Tôi đã phải thực hiện một số hoàn nguyên trên mergeinfo, nhưng tôi đã hợp nhất mã của mình.

Tôi lập tức xóa chi nhánh của mình.


0

Tôi đã gặp lỗi này sau khi sử dụng kiểm tra một phần của chi nhánh. Tôi đã giữ chi nhánh cập nhật với thân cây nhưng bản sửa đổi thân cây cho các phần của chi nhánh không được kiểm tra tất nhiên là không được cập nhật. Việc khắc phục là thực hiện kiểm tra toàn bộ chi nhánh và sau đó hợp nhất trong tất cả các thay đổi thân cây. Sau khi cam kết những điều này với chi nhánh, tôi có thể hợp nhất chi nhánh vào thân cây thành công.


0

Có vấn đề này trên

  • RùaSVN 1.9.7, Bản dựng 27907 - 64 Bit, 2017/08/08 19:34:38
  • Lật đổ 1.9.7, phát hành
  • tháng tư 1.5.2
  • tháng tư 1.5.4
  • nông nô 1.3.9
  • OpenSSL 1.0.2l ngày 25 tháng 5 năm 2017
  • zlib 1.2.8
  • SQLite 3.14.1

nhấp chuột phải vào nhánh mà bạn muốn hợp nhất (nhưng nhận được thông báo này) và chọn tùy chọn "cập nhật để sửa đổi" và sau đó trên hộp thoại mở ra (ảnh chụp màn hình bên dưới) chọn những sửa đổi đó và nhấp vào ok - khi tất cả các phiên bản trước đó được hợp nhất, bạn sẽ không nhận được tin nhắn này

nhập mô tả hình ảnh ở đây

Thêm phần này vào đây để giúp ai đó đang sử dụng Rùa SVN


-1

Tôi biết đây là một bài viết cũ, nhưng tôi đã đấu tranh để giải quyết vấn đề này cho đến khi tôi phát hiện ra rằng các tệp được liệt kê trong thông báo lỗi có vấn đề thuộc tính SVN.

Tôi đã nhấp chuột phải vào các tệp gặp rắc rối: TortoiseSVN> Thuộc tính và thấy rằng tệp có hai svn: mergeinfo và một trong số chúng không được kế thừa từ dữ liệu. Vì vậy, tôi đã loại bỏ mergeinfo đó.

Tôi sử dụng TortoiseSVN 1.12.2, Build 28653 - 64 Bit.

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.