gpt4 book ai didi

mercurial - 如何插入或更改 Mercurial 修订版

转载 作者:行者123 更新时间:2023-12-02 23:18:40 27 4
gpt4 key购买 nike

如何更改 r0 ,使其看起来像我在创建存储库时添加了 .hgignore 或在当前的 r0 之前插入提交?

我刚刚使用 hgsvn 将一个巨大的 SVN 存储库转换为 Mercurial。花了几个小时,并且必须经过大约十几个分行才能拿到整个东西。我现在的问题是 .hgignore 没有提交,所以当我 hgimportsvn 分支时,.hgignore 似乎没有附带它。我想将该文件作为 r0 的一部分插入或在其之前插入(并将所有内容移 1)。我也尝试在我的 Mercurial 主干结帐结束时提交它,但似乎 hgimportsvn 总是从我的 SVN 分支创建的同一个 Mercurial 版本克隆(分支?),所以 .hgignore 又丢失了。

最佳答案

您可能需要类似 ConvertExtension 的东西。查看--splicemap选项。

要创建一个新的历史记录,并将 .hgignore 文件添加为第一个修订版:

  1. 创建一个新的存储库,其唯一修订版本是 .hgignore 提交。
  2. 创建一个包含两个 40 字符哈希值的 splicemap 文件:当前数据库的 rev 0 和新数据库的 rev 0。
  3. 运行hg convert <current_db_dir> <new_db_dir> --splicemap splice_filename

这会将当前数据库中的每个修订添加到新数据库中。 splicemap 指定对父级的编辑,因此如果当前数据库的修订版 0 将其父级设置为新数据库的修订版 0。

下面是一个 Windows 批处理文件,它创建一个 3 修订版数据库和一个 1 修订版数据库,其中包含 .hgignore 文件,并将它们拼接在一起。结果应该是您正在寻找的结果。如果您有一个大型原始数据库,则可能需要一段时间,因为源数据库的整个历史记录都会被重写到目标数据库。

@echo off

@REM Create a 3-revision database
hg init current
cd current
echo >file1
hg add
hg ci -m file1
echo >file2
hg add
hg ci -m file2
echo >file3
hg add
hg ci -m file3

@REM Add the first revision to the splice map
hg log -r 0 --template "{node} " > ..\map

@REM Display the result
hg log
cd ..

@REM Create a 1-revision database
hg init ignore
cd ignore
echo glob:*.txt>.hgignore
hg add
hg ci -m ignore

@REM Specify this node as the parent of the other
@REM database's first revision in the splice map
hg log -r 0 --template "{node}\n" >> ..\map
hg log
cd ..

@REM Here's the resulting splice map
type map

@REM Make a copy to store the result
hg clone ignore result

@REM Add revisions from "current" to "result" honoring
@REM the splice map
hg convert current result --splicemap map

@REM Display the result
cd result
hg log

关于mercurial - 如何插入或更改 Mercurial 修订版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com