2011-11-13 31 views
12

Tôi đang cố gắng sử dụng hg push vào kho lưu trữ git, nhưng âm thầm không thành công. Tôi tìm thấy a single post on the mailing lista registered hg-git issue, nhưng cả hai đều khoảng nửa năm tuổi mà không có nhiều hoạt động. Vì vậy, tôi bắt đầu nghĩ rằng tôi hiểu lầm/misconfigure một cái gì đó. My ~/.hgrc chứahg-git đẩy âm thầm không thành công

[extensions] 
hgext.bookmarks = 
hgext.git = 
#hggit = /path/to/hg-git-0.3.1/hggit 
[bookmarks] 
track.current = True 

đoạn này tái tạo các vấn đề:

mkdir /tmp/Git 
cd /tmp/Git 
git init 
echo 'something' > myfile 
git add . 
git commit -m 'Started' 
cd .. 
hg clone /tmp/Git /tmp/Hg 
cd /tmp/Hg 
echo 'another thing' >> myfile 
hg ci -m 'Working' 
hg log 
# Two items listed 
hg push 
cd ../Git 
git log 
# Only one item listed, but two expected 

tôi đã cố gắng cả hg-git 0.2.6-2 vận chuyển với Ubuntu 11.10, và phiên bản được gắn thẻ mới nhất, 0.3.1. My mercurial là phiên bản 1.9.1

Tôi thậm chí đã thử hai cách giải quyết được đề xuất, hg update master trước khi cam kết và hg bookmark -f master sau khi cam kết, nhưng cả hai đều đưa ra lỗi.

UPDATE:

Tôi tạo ra một new issue for this

Trả lời

19

Có hai vấn đề ở đây: đẩy một cách rõ ràng nên thất bại, và hg-git nên báo cáo nó (nhưng nó không).

Việc đẩy không thành công, đưa ra "abort: git remote error: refs/heads/master failed to update" when pushing to local clone, vì đó là sự thúc đẩy đến một kho lưu trữ không trống (xem more on that from a mercurial user's perspective). Phiên bản hoạt động của đoạn mã trên là điều này (lưu ý việc sử dụng kho lưu trữ Bare).

mkdir /tmp/Git 
cd /tmp/Git 
git init 
echo 'something' > myfile 
git add . 
git commit -m 'Started' 
cd .. 
git clone --bare -l /tmp/Git /tmp/Bare 
hg clone /tmp/Bare/ /tmp/Hg 
cd /tmp/Hg 
echo 'another thing' >> myfile 
hg ci -m 'Working' 
hg log 
# Two items listed 
hg push 
cd ../Bare 
git log 
# Two items listed 

Về vấn đề này, tôi nghi ngờ có vấn đề với các phiên bản mới nhất được gửi kèm với Ubuntu. Những gì tôi đã làm là

apt-get remove mercurial-git python-dulwich 
easy_install hg-git 

Nó loại bỏ dulwich 0.7.1, và cài đặt 0.8 được yêu cầu theo quy định của trang web hg-git. Bây giờ, nó hoạt động cho tôi. Phiên bản thủy ngân (1.9.1) có vẻ hoạt động tốt.

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