Background:Rompere il collegamento file in Mercurial dopo cattiva file diviso
All'inizio c'era un file base.c
, e che il file era nel repository che aveva solo un ramo Base
.
Base
era ramificato per rendere Extended
-branch. Quindi questo nuovo ramo ha apportato diverse modifiche a base.c
.
Se i bug sono stati corretti nel file base.c
in Base
, sarebbero uniti a Extended
.
Si scopre che aggiungere troppe cose a base.c
nel ramo Extended
non era una buona idea, quindi il file viene copiato in ext.c
. Quindi la maggior parte delle aggiunte Extended
vengono rimosse dalle funzionalità base.c
e Base
da ext.c
. Quindi, a questo punto base.c
in Extended
è molto simile a Base
.
Problema:
Quando il file è stato diviso, Mercurial è stato informato che ext.c
è una copia di base.c
, perché condividevano una storia comune. Sfortunatamente questa non era una buona idea.
Ora, se i bug sono fissi su Base
ramo e fuse per Extended
, Mercurial pensa che tali modifiche devono essere applicate a entrambi base.c
e ext.c
, anche se quest'ultimo non è più ha delle somiglianze con l'ex. Questo rende le unioni molto fastidiose.
C'è un modo per dire al Mercurial che ext.c
non dovrebbe più essere considerato come base.c
? Una soluzione sarebbe quella di sostituire ext.c
con il nuovo file, ma la cronologia non verrebbe seguita.
Interessante problema. Immagino tu abbia fatto la copia con 'hg copy'? – icabod
Si è utilizzato 'hg copy'. – user694733
È possibile interrompere la connessione se si 'hg dimentica ext.c' e quindi' hg add' it come un nuovo file ... ma poi si perde tutta la cronologia fino a questo punto. Tuttavia, potresti aggiungere una versione _earlier_ di 'ext.c' (forse anche prima della rinomina), e replay (graft) è storia da allora. – alexis