首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何插入或更改mercurial修订

如何插入或更改mercurial修订
EN

Stack Overflow用户
提问于 2010-08-28 07:11:23
回答 2查看 678关注 0票数 8

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

我刚刚使用hgsvn将一个巨大的SVN代码库转换为mercurial。它花了几个小时,并不得不通过大约12个分支机构,以获得整个东西。我现在的问题是.hgignore没有被提交,所以当我hgimportsvn一个分支时,.hgignore似乎没有附带它。我希望将该文件作为r0的一部分插入,或者将其插入之前(并将所有内容移位1)。我还尝试在Mercurial主干结帐结束时提交它,但似乎hgimportsvn总是克隆(分支?)使用相同的Mercurial版本创建我的SVN分支,因此.hgignore再次丢失。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-28 08:10:09

您可能需要像ConvertExtension这样的东西。查看--splicemap选项。

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

  1. 创建一个唯一修订版是.hgignore提交的新存储库。
  2. 创建一个包含两个40字符哈希的拼接映射文件:当前数据库的版本0和新数据库的版本0。
  3. 运行v0

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

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

代码语言:javascript
复制
@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
票数 5
EN

Stack Overflow用户

发布于 2010-09-07 22:25:55

也许你可以提交.hgignore,然后将提交重新定位到历史的开始(参见https://www.mercurial-scm.org/wiki/RebaseProject)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3588695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档