版本控制 – 什么是hg copy?
我们最近在我们的存储库中创建了一个目录的hg副本.我们以为是
做一些像cp -a和hg这样的添加,也许标志不定 这个文件已经从repo中的另一个文件复制了(所以hg 注释显示原始提交者).但现在似乎是hg 复制品比这更多或不同的东西.我找不到 很多关于复制的工作原理.所以: >什么是hg副本做什么和什么特殊待遇这样做 (这个问题在Mercurial邮件列表中被询问,你可能也想要follow the original thread) 解决方法
它添加新文件并将其标记为旧文件的副本.因为它们是副本,原始文件中的更改将被合并到副本中.时间从左到右: (init) --- (edit a.txt) ---- (a.txt edit is copied to b.txt) / (hg copy a.txt b.txt)
这种机制只有在合并时才会开始.如果b.txt不存在 让我们以缩写形式继续上述图表: (i) -- (edit a) -- (a edit copied to b) -- (edit a) -- (merge) / / (copy a b) --/------- (edit b) ------------------/ 问题是最终合并是如何完成的.共同的祖先点 要仔细检查,我试过了: $hg init $echo a > a $hg add a $hg commit -m init $hg copy a b $hg commit -m "copy a b" 这是副本,b现在包含一个. $hg update 0 0 files updated,0 files merged,1 files removed,0 files unresolved $echo aa >> a $hg commit -m "edit a" created a new head $hg merge merging a and b to b 0 files updated,1 files merged,0 files removed,0 files unresolved (branch merge,don't forget to commit) $hg commit -m "a edit copied to b" 这是第一个合并,编辑到a已被复制到b: $cat b a aa 我们现在并行进行更改: $echo aaa >> a $hg commit -m "edit a again" $hg update 3 1 files updated,0 files unresolved $echo bbb >> b $hg commit -m "edit b" created new head $hg merge 1 files updated,don't forget to commit) 没有进一步的复制: $cat a a aa aaa $cat b a aa bbb 至于禁用这个…你不能真正地明确禁用副本 如果第一个合并是一个问题,那么可以使用hg resolve –tool $hg resolve --tool internal:local b 我们可以把b带回来只包含一行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |