代码之家  ›  专栏  ›  技术社区  ›  Matt Joiner

如何将文件标记为Mercurial中其他两个文件的后代?

  •  0
  • Matt Joiner  · 技术社区  · 15 年前

    我有两个类似于python的脚本,我已经将它们合并为一个脚本(现在需要一些参数来适当地改变行为)。前面的两个文件都在我的mercurial存储库的尖端。如何指示新文件是我要删除的两个旧文件的组合?

    另外请注意,已经选择了一个文件而不是另一个文件,并且一些代码会在其中移动,因此如果无法使用 新的 名称,然后将一个文件的历史同化为另一个文件就足够了。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ry4an Brase    15 年前

    这不是一个完美的解决方案,这次可能为时已晚,但我认为 hg rename 会把你带到你想去的地方。这是一个序列:

    ry4an@hail [~/hg] % mkdir test
    ry4an@hail [~/hg] % cd test/
    ry4an@hail [~/hg/test] % hg init
    ry4an@hail [~/hg/test] % echo stuff > file1
    ry4an@hail [~/hg/test] % echo different > file2
    ry4an@hail [~/hg/test] % hg commit --addremove -m 'adding both separately'
    adding file1
    adding file2
    ry4an@hail [~/hg/test] % hg rename --force file1 file2
    ry4an@hail [~/hg/test] % hg commit -m 'overwrote 2 with 1'
    ry4an@hail [~/hg/test] % hg grep --follow different file2
    file2:0:different
    ry4an@hail [~/hg/test] % hg grep --follow stuff file2 
    file2:1:stuff
    

    请注意,“grep”文件发现“stuff”在文件2修订版1中,“different”在文件2修订版0中,因此这两个历史记录现在都在文件2中。

        2
  •  1
  •   tonfa    15 年前

    下面是两个无关文件“a”和“b”合并的示例。

    请注意,我滥用了列表格式,因为我不知道如何使用这个系统。似乎是标题但以“摘要:”开头的行实际上是从hg输出的,恰好是空行前面的最后一行。所有其他标题都是我自己的注释,解释命令/序列及其输出。命令出现在具有“Timeless MBP:…$”的行上。所有其他行都输出。

    安装程序

    timeless-mbp:~ timeless$ cd /tmp
    timeless-mbp:tmp timeless$ rm -rf q
    timeless-mbp:tmp timeless$ hg init q
    timeless-mbp:tmp timeless$ cd q
    

    定义我的用户名

    timeless-mbp:q timeless$ echo '[ui]' > .hg/hgrc
    timeless-mbp:q timeless$ echo 'username = timeless' >> .hg/hgrc
    

    首先创建、添加和提交文件A

    timeless-mbp:q timeless$ echo a > a
    timeless-mbp:q timeless$ hg commit -Am a
    adding a
    

    从新的草稿修订版开始(空)

    timeless-mbp:q timeless$ hg up -r null
    0 files updated, 0 files merged, 1 files removed, 0 files unresolved
    

    创建、添加和提交文件B

    timeless-mbp:q timeless$ echo b > b
    timeless-mbp:q timeless$ hg commit -Am b
    adding b
    created new head
    

    切换回我们的第一个文件,这只是为了创建一个交错的版本历史记录。

    timeless-mbp:q timeless$ hg up -r 0
    1 files updated, 0 files merged, 1 files removed, 0 files unresolved
    

    将a重命名为file,因为我们要将其与b合并,名称为“file”

    timeless-mbp:q timeless$ hg mv a file
    timeless-mbp:q timeless$ hg commit -m 'rename a to file'
    

    切换回第二个文件,这只是为了创建一个交错的版本历史记录。

    timeless-mbp:q timeless$ hg up -r 1
    1 files updated, 0 files merged, 1 files removed, 0 files unresolved
    

    将B重命名为文件,因为我们要将其与名为“file”的a合并

    timeless-mbp:q timeless$ hg mv b file
    timeless-mbp:q timeless$ hg commit -m 'rename b to file'
    

    我之所以强制使用内部合并,是因为我不希望弹出合并工具,您可以使用其他合并工具(例如,在带有现代版Mercurial的OS X上,它往往会弹出filemerge.app,但很难在日志中显示)。

    timeless-mbp:q timeless$ hg --config ui.merge=internal:local merge 2
    0 files updated, 1 files merged, 0 files removed, 0 files unresolved
    (branch merge, don't forget to commit)
    

    用我想要的内容替换内容

    timeless-mbp:q timeless$ hg cat -r 2 file > file
    timeless-mbp:q timeless$ hg cat -r 3 file >> file
    

    确认它现在有我想要的内容

    timeless-mbp:q timeless$ cat file
    a
    b
    

    提交“合并”文件

    timeless-mbp:q timeless$ hg commit -m merging
    

    查看存储库历史记录

    timeless-mbp:q timeless$ hg log
    changeset:   4:d9d3d23ec1cc
    tag:         tip
    parent:      3:01c6a61cbe04
    parent:      2:3de70df713a7
    user:        timeless
    date:        Wed Jun 02 16:10:08 2010 +0300
    summary:     merging
    
    changeset:   3:01c6a61cbe04
    parent:      1:e6b8058965b4
    user:        timeless
    date:        Wed Jun 02 16:09:43 2010 +0300
    summary:     rename b to file
    
    changeset:   2:3de70df713a7
    parent:      0:635f50240100
    user:        timeless
    date:        Wed Jun 02 16:09:30 2010 +0300
    summary:     rename a to file
    
    changeset:   1:e6b8058965b4
    parent:      -1:000000000000
    user:        timeless
    date:        Wed Jun 02 16:09:17 2010 +0300
    summary:     b
    
    changeset:   0:635f50240100
    user:        timeless
    date:        Wed Jun 02 16:09:01 2010 +0300
    summary:     a
    

    检查注释输出

    timeless-mbp:q timeless$ hg ann -f -c file
    635f50240100 a: a
    e6b8058965b4 b: b
    
    推荐文章