2010-08-24 23 views
8

Tôi đang cố gắng chuyển đổi một repo SVN với hgsvn và tôi có một số cam kết trong đó các thuộc tính SVN được sửa đổi, nhưng vì Mercurial không sử dụng chúng. cam kết và hủy bỏ. Có cách nào để buộc điều này hg commit chấp nhận một cam kết không thay đổi bất cứ điều gì không?Làm thế nào tôi có thể buộc mercurial chấp nhận một cam kết trống

Tôi không quen thuộc với nội bộ của hgsvn để hack nó để bỏ qua các cam kết trống.

+2

Có một hack: tạo 1 tệp, cam kết, sau đó xóa tệp đó và sử dụng sửa đổi. – vorrtex

Trả lời

3

Bạn có thể bỏ qua cam kết này nếu bạn thêm thẻ svn .VN REVNUM địa phương vào bản sửa đổi đầu (= sửa đổi cũng có thẻ svn. ($ REVNUM-1) bây giờ). Sau đó, bạn có thể tiếp tục với hgpullsvn.

Say nhập của bạn đang ở trạng thái này (rev nhập khẩu cuối cùng là 15800, các rev tài sản duy nhất là 15.801):

$ hg log -l1 
changeset: 1234:123456789abc 
branch:  trunk 
tag:   tip 
tag:   svn.15800 
parent:  1233:cba987654321 
user:  Rudi <[email protected]> 
date:  Tue Aug 24 11:42:23 2010 +0200 
summary:  Foobar 

$ svn info 
Path: . 
URL: svn+ssh://example.com/foobar/trunk 
Repository Root: svn+ssh://example.com/foobar 
Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10 
Revision: 15801 
Node Kind: directory 
Schedule: normal 
Last Changed Author: rudi 
Last Changed Rev: 15801 
Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010) 

Sau đó, bạn chỉ cần thêm thẻ svn.15801:

$ hg tag -l -r 123456789abc svn.15801 

và contunie để nhập.

Nhưng tạo bản sao lưu trước khi bạn thử.

+0

Cảm ơn, điều này đã giúp tôi vượt qua cam kết đó. –

1

Khi tôi cần các cam kết trống trong p4 và hg trước đây, tôi đã sử dụng một tệp đã được đặt sang một bên để 'trở thành' cam kết trống. Chỉ cần đổ một chuỗi ngẫu nhiên của một số loại (tôi thường sử dụng thời gian và ngày) vào tập tin throwaway, và hg commit đi ....

0

Có thể, những điều sau đây sẽ không giúp bạn trong tình huống này, nhưng sẽ bị ảnh hưởng bởi người đọc khác.

Bạn có thể thực hiện cam kết "trống" bằng cách nhập bản vá gần như trống. Tôi đã xuất bản vá, xóa tất cả thay đổi trong đó, chỉ để lại 3 dòng (khác ..., --- ... và +++ ...) và nhập nó với hg import --bypass --message ...

0

Theo nhận xét của @ vorrtex trên câu hỏi ban đầu, phương pháp đơn giản nhất để buộc cam kết trống trong Mercurial như sau:

  1. Thêm tệp mới (nói, Dummy.txt) và cam kết.
  2. hg forget Dummy.txt
  3. hg commit --amend

này sẽ loại bỏ Dummy.txt từ trước cam kết, để lại nó trống rỗng. (Bạn có thể sử dụng TortoiseHg cho bước 1 nhưng bạn sẽ cần phải sử dụng công cụ dòng lệnh cho bước 2 và 3.)

Tôi đang thêm câu trả lời này vì khi quét chủ đề này ban đầu, tôi đã bỏ lỡ nhận xét và các câu trả lời hiện có không tạo ra cam kết thực sự trống.

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