Bối cảnh:Phá vỡ kết nối tập tin trong Mercurial sau khi tập tin xấu chia
Lúc đầu có một tập tin base.c
, và tập tin đó là trong kho mà chỉ có một chi nhánh Base
.
Base
được phân nhánh để tạo Extended
-branch. Sau đó, chi nhánh mới này có một số thay đổi được thực hiện cho base.c
.
Nếu lỗi được sửa trong tệp base.c
trong Base
, chúng sẽ được hợp nhất thành Extended
.
Nó chỉ ra rằng việc thêm quá nhiều thứ vào base.c
trong chi nhánh Extended
không phải là một ý tưởng hay, vì vậy tệp được sao chép thành ext.c
. Sau đó, hầu hết các phần bổ sung Extended
đều bị xóa khỏi các chức năng base.c
và Base
từ ext.c
. Vì vậy, tại thời điểm này, base.c
trong Extended
rất giống với ở Base
.
Vấn đề:
Khi tập tin được chia, Mercurial đã được thông báo rằng ext.c
là một bản sao của base.c
, bởi vì họ chia sẻ một lịch sử chung. Thật không may đây không phải là một ý tưởng tốt.
Bây giờ nếu lỗi được cố định trên Base
chi nhánh và sáp nhập để Extended
, Mercurial cho rằng những thay đổi này sẽ được áp dụng cho cả hai base.c
và ext.c
, mặc dù sau này không còn có bất kỳ điểm tương đồng với cựu. Điều này làm cho việc sáp nhập rất khó chịu.
Có cách nào để nói với Mercurial rằng ext.c
không còn được coi là giống như base.c
? Một giải pháp sẽ thay thế ext.c
bằng tệp mới, nhưng sau đó lịch sử sẽ không theo.
Sự cố thú vị. Tôi cho rằng bạn đã tạo bản sao với 'hg copy'? – icabod
Có 'hg copy' đã được sử dụng. – user694733
Bạn có thể ngắt kết nối nếu bạn 'hg quên ext.c' và sau đó' hg thêm' nó như một tệp mới ... nhưng sau đó bạn sẽ mất tất cả lịch sử đến thời điểm này. Tuy nhiên, bạn có thể thêm một phiên bản _earlier_ của 'ext.c' (thậm chí có thể trước khi đổi tên), và phát lại (ghép) nó là lịch sử kể từ đó. – alexis