2010-01-09 33 views
18

Tôi là người mới đến với mercurial. Gần đây tôi đã thiết lập một kho lưu trữ với 2 đồng nghiệp và đang gặp khó khăn khi đẩy mã của tôi. [Tôi đang sử dụng dòng lệnh hg trong Windows]. Đặc biệt khi tôi đẩy tôi nhận được một cuộc đối thoại như sau:Không thể hợp nhất trong mercurial

>hg commit -u petermr 

>hg push 
pushing to http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
abort: push creates new remote heads! 
(did you forget to merge? use push -f to force) 
>hg merge 
abort: there is nothing to merge 

>hg status 

Tôi sợ cam kết sử dụng push -f vì tôi nghĩ rằng sẽ tạo nhiều đầu và gây ra sự cố cho nhóm của chúng tôi.

Khi tôi cố gắng hợp nhất tôi nhận được một cái gì đó đối thoại như:

>hg merge -f 
merging src/test/resources/PMR/algorithm/cmlAll.xml 
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/irregular/cmlAll.xml 
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChange/cmlAll.xml 
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged 
was merge successful (yn)? y 

Vì có vài trăm file tôi không thể gõ "y" cho mỗi và tôi không thể tìm thấy một cách để kết hợp chúng lại với nhau .

CẬP NHẬT Tôi đã thử (2) câu trả lời đầu tiên và vẫn còn có một vấn đề:

>hg pull 
pulling from http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
no changes found 

>hg merge 
abort: outstanding uncommitted merges 

CẬP NHẬT để đáp ứng với @tonfa tôi không thể cam kết:

>hg commit 
abort: unresolved merge conflicts (see hg resolve) 

CẬP NHẬT @balpha (Tôi đã thay đổi tên của chủ sở hữu thành Foo)

>hg parent 
changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

changeset: 22:360aedb72f0e 
parent:  21:89c4bd671bd3 
parent:  18:3cffa8ca3a2a 
user:  Foo (not me) 
date:  Fri Jan 08 16:15:50 2010 +0000 
summary:  merged 


>hg tip 
changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

CẬP NHẬT

đầu hg

changeset: 24:9ec904d2d5a2 
tag:   tip 
user:  petermr 
date:  Sat Jan 09 16:40:38 2010 +0000 
summary:  trying to sync 

changeset: 22:360aedb72f0e 
parent:  21:89c4bd671bd3 
parent:  18:3cffa8ca3a2a 
user:  Foo (not me) 
date:  Fri Jan 08 16:15:50 2010 +0000 
summary:  merged 

CẬP NHẬT sau @balpha ý kiến ​​dưới đây cho thấy người trở lại mà yêu cầu cho một revison (đây là một số? Nếu vậy làm thế nào để tìm thấy nó?)

>hg revert --all 
abort: uncommitted merge - please provide a specific revision 

CẬP NHẬT vẫn không thể hợp nhất ...

>hg revert --all -r tip 
reverting .hgignore 
reverting .hgignore~ 
reverting src\test\java\org\xmlcml\cml\converters\polyinfo\RegressionTest.java 
reverting src\test\resources\PMR\algorithm\cmlAll.xml 
reverting src\test\resources\PMR\irregular\cmlAll.xml 
reverting src\test\resources\PMR\massChange\cmlAll.xml 
reverting src\test\resources\PMR\massChangeOk\cmlAll.xml 
reverting src\test\resources\PMR\ok\P340076.both.svg 
reverting src\test\resources\PMR\ok\P340076.p.svg 
reverting src\test\resources\PMR\ok\P340076.r.svg 
reverting src\test\resources\PMR\ratio\cmlAll.xml 

>hg status 
M .hgignore 
M .hgignore~ 
M src\test\resources\PMR\algorithm\cmlAll.xml 
M src\test\resources\PMR\irregular\cmlAll.xml 
M src\test\resources\PMR\massChange\cmlAll.xml 
M src\test\resources\PMR\massChangeOk\cmlAll.xml 
M src\test\resources\PMR\ok\P340076.both.svg 
M src\test\resources\PMR\ok\P340076.p.svg 
M src\test\resources\PMR\ok\P340076.r.svg 
M src\test\resources\PMR\ratio\cmlAll.xml 
? src\test\resources\PMR\bug\P020006work.both.svg 
? src\test\resources\PMR\irregular\cmlAll.xml.resolve 

>hg merge 
abort: outstanding uncommitted merges 

>hg commit 
abort: unresolved merge conflicts (see hg resolve) 

Lưu ý rằng

hg resolve -all 

sẽ trả về vấn đề ban đầu của việc phải giải đáp "y" cho hàng trăm câu hỏi riêng lẻ và tôi không biết sau đó liệu nó có giải quyết được vấn đề hay không. Sự giúp đỡ của bạn được đánh giá rất cao!

CẬP NHẬT @balpha đề nghị làm sạch - điều này dường như đã đạt được tiến bộ

>hg update --clean -r tip 
10 files updated, 0 files merged, 0 files removed, 0 files unresolved 

>hg merge 
merging src/test/resources/PMR/algorithm/cmlAll.xml 
output file src/test/resources/PMR/algorithm/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/irregular/cmlAll.xml 
output file src/test/resources/PMR/irregular/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChange/cmlAll.xml 
output file src/test/resources/PMR/massChange/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/massChangeOk/cmlAll.xml 
output file src/test/resources/PMR/massChangeOk/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.both.svg 
output file src/test/resources/PMR/ok/P340076.both.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.p.svg 
output file src/test/resources/PMR/ok/P340076.p.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ok/P340076.r.svg 
output file src/test/resources/PMR/ok/P340076.r.svg appears unchanged 
was merge successful (yn)? y 
merging src/test/resources/PMR/ratio/cmlAll.xml 
output file src/test/resources/PMR/ratio/cmlAll.xml appears unchanged 
was merge successful (yn)? y 
2 files updated, 8 files merged, 0 files removed, 0 files unresolved 
(branch merge, don't forget to commit) 

>hg merge 
abort: outstanding uncommitted merges 

>hg merge -f 
abort: outstanding uncommitted merges 

>hg commit -u petermr -m "still trying to sy 
nc" 

>hg merge 
abort: there is nothing to merge 

>hg push 
pushing to http://bitbucket.org/petermr/polyinfo/ 
searching for changes 
http authorization required 
realm: Bitbucket.org HTTP 
user: petermr 
password: 
adding changesets 
adding manifests 
adding file changes 
added 4 changesets with 298 changes to 290 files 
bb/acl: petermr is allowed. accepted payload. 
quota: 13.3 MB in use, 150.0 MB available (8.87% used) 
+0

chỉ cam kết kết quả hợp nhất. – tonfa

+0

hãy đăng đầu ra của 'hg parent' và' hg tip' – balpha

+0

... và 'hg heads' – balpha

Trả lời

15

bản sao địa phương của bạn của repo có lẽ không phải up-to-date. Làm một số

hg pull 

để thay đổi điều đó. Bây giờ bạn có hai đầu cục bộ (đầu trước của riêng bạn và đầu của repo bitbucket).Bây giờ

hg merge 

để hợp nhất hai người đứng đầu và

hg commit -m "Merged before pushing" 

Bây giờ repo địa phương của bạn chỉ có một đầu, và đầu này là con của người đứng đầu bitbucket, vì vậy đẩy ý chí không tạo từ xa đầu nữa:

hg push 

và bạn đã hoàn tất.

+0

Điều này dường như không cho phép tôi hợp nhất - xem CẬP NHẬT –

+1

+1 để tiếp tục trợ giúp tương tác –

+1

Câu trả lời được chấp nhận, nhưng xem thảo luận về câu hỏi để biết chi tiết –

5

Trước khi bạn đẩy mã vào một kho lưu trữ từ xa, trước tiên hãy đảm bảo repo cục bộ của bạn sạch sẽ và không có hợp nhất chưa thanh toán.

Sau đó, thực hiện kéo hg từ kho lưu trữ từ xa. Điều này sẽ tạo ra 2 đầu trên kho lưu trữ cục bộ của bạn.

Thực hiện hợp nhất địa phương và cam kết (giải quyết mọi xung đột).

Cuối cùng, hãy đẩy tới kho lưu trữ từ xa.

Nói chung, không được đẩy tới một kho lưu trữ từ xa nếu có nhiều đầu sẽ được tạo ở đó.

+0

+1 vì " repo phải sạch sẽ "một phần là điều quan trọng trong trường hợp này – balpha

+0

@Tarydon:" Trước tiên hãy đảm bảo repo địa phương của bạn sạch và không có sự hợp nhất chưa xử lý. " Bạn có thể giải thích làm thế nào để làm điều đó? – MikeSchinkel

4

Bạn có thể không muốn cam kết hợp nhất ngay cả cục bộ. Cách để làm sạch và bắt đầu lại (từ https://www.mercurial-scm.org/bts/issue1533) có vẻ là "hg update -C".

Như đã nói ở trên, có vẻ như "hg revert -a" phải hoạt động, nhưng dường như không.

+1

Tôi đã có chính xác vấn đề được mô tả trên đỉnh câu hỏi ban đầu và thấy rằng sao chép tất cả các tệp đã thay đổi của tôi, 'hg update -C' và sau đó sao chép lại các thay đổi đã làm việc cho tôi. – dukedave

0

Sử dụng TortoiseHg thay vì công cụ dòng lệnh, nó đơn giản và đồ họa hiển thị trạng thái của kho, vì vậy bạn sẽ không bị nhầm lẫn với tất cả các lệnh.

0

Tôi gặp sự cố tương tự. Hóa ra nguyên nhân gốc rễ là phần mở rộng "loại trừ" của Mercurial. Bằng cách tắt tiện ích mở rộng tạm thời, sự cố đã được khắc phục. Đề cập đến trang tiện ích mở rộng "loại trừ", chủ sở hữu đã thừa nhận đó là sự cố đã biết.

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