问题标签 [mercurial-convert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
646 浏览

mercurial - 汞转换失败:“中止:未知修订!”

在给定场景的情况下,我如何弄清楚如何调试以下问题?我以前hg convert在源和目标存储库上运行过,一切正常。我再次运行它以从源转换新的变更集。

版本

水银 2.7.1

命令

文件映射“DirNameRemap”

沙马

结果

0 投票
1 回答
135 浏览

mercurial - 将使用 hg 创建的子 mercurial 存储库中的更改同步回其父 mercurial 存储库

我有一个父存储库 A。

我创建了一个父存储库的小型子存储库 B,其中包含一个精心挑选的子文件夹小列表,供另一个团队使用 hg-convert 访问

其中 filemap.txt 不进行任何重命名。它仅包括或排除文件夹。如:

从 A 转换为 B 工作正常。我还可以重新运行 hg convert 命令以将 A 上的后续更改“推送”到 B(我在这里松散地使用术语推送......)

但是当我想将 B 的更改“推”回 A 时呢?在没有文件映射的情况下运行 hg convert BA 会在 A 中重新创建 B 中的所有提交,因此我在 A 中有大量重复的提交。

将来有没有合理的方法使 A 和 B 保持同步?如果以不同的顺序对 A 和 B 应用更改,这可能是不可能的吗?

0 投票
1 回答
127 浏览

mercurial - 将 Bazaar 回购转换为 Mercurial

我正在使用 GUI 来处理我的版本控制。目前我正在使用 Bazaar Explorer(bzr 的 GUI),但我想使用 TortoiseHG(hg 的 GUI)。

对于像我这样的 Windows 用户,我发现几个迹象表明这可以通过命令行使用:

我确保启用了 TortoiseHG 的“转换”扩展。但是,这不起作用。我收到以下错误消息:

有人可以帮我解决这个问题吗?

0 投票
1 回答
2608 浏览

svn - SVN 上的 HG Convert 给出“看起来不像 Subversion 存储库”

我刚刚用 Mercurial-2.9 安装了 TortoiseHG v2.11

我正在尝试转换使用 TortoiseSVN 1.8 创建的本地 Subversion 存储库。4、颠覆1.8.5

为了确保我的旧 Subversion 存储库没有任何奇怪的怪癖,我使用默认文件夹结构创建了一个名为 test_repo 的新 SVN 存储库,对 test_repowc 执行了 Checkout,然后将一些文本文件添加到主干,然后修改并提交文件几次提供一些历史。

然后我打开 cmd.exe,导航到该文件夹​​并尝试

并得到以下信息:

如您所见,Mercurial 为我执行了 file:/// 协议,但无法识别 subversion 存储库。我自己尝试过使用 file:/// 协议,使用 -s 标志指定存储库类型,在文件夹中运行 Mongoose 并将存储库作为 URL 访问,但似乎都不起作用。我也尝试过从工作副本而不是从存储库进行转换,但这也不起作用。

我想知道这是否与 SVN 1.7 或 1.8 引入的新 SVN 文件结构有关(某些 SVN 客户端暂时不兼容)?

使用当前版本的 TortoiseSVN 和 TortoiseHG 是否有其他人对此感到幸运?

我打算让这成为一个超级快速的过渡,对 DVCS 和 Mercurial 感到非常兴奋,但我已经碰壁了。我读过很多人说它非常简单,但要么我有一个奇怪的边缘案例,要么它不像谣言听起来那么容易。

我已经阅读了其他工具,例如 HGSubversion,我可以在其中将我的 SVN 克隆为 HG 存储库,但由于这些是单独的存储库,我宁愿只转换 SVN,确保一切正常,然后删除并卸载 SVN。我宁愿我的 HG 存储库不再“连接”到 SVN(HGSubversion 允许从克隆的 HG 存储库“推送”到父 SVN 存储库,对吧?)。其他工具的评论褒贬不一,所以我希望转换扩展能够正常工作。

在此先感谢 - 期待 Mercurial!

编辑:

记录 Windows 的解决方案:

  1. 打开命令提示符
  2. 导航到您的 SVN 存储库(不是工作副本)
  3. svnserve -r .\ -d
  4. 打开另一个命令提示符
  5. 导航到您想要您的 mercurial repo 的位置
  6. 可选:运行where hg...如果 TortoiseHg 版本不是第一个,请编辑路径以使其成为第一个 - 此版本包括使用svn://协议所必需的 SVN python 绑定。编辑路径后重新启动 cmd 提示符。
  7. hg convert -s svn svn://localhost .\hg_repo_name

    • 我做了我的 computername.full.domain.name 而不是 localhost,但 localhost 也应该可以工作。
    • svn://斜线方向是喜欢http://file:///不喜欢C:\
    • 如果您的 SVN 存储库代码没有主干或者您没有使用主干文件夹(我的第一个存储库没有使用,因为我不知道自己在做什么),您需要这个,它告诉 mercurial 使用根目录作为主干:

    hg --config config.svn.trunk= convert -s svn svn:\\localhost .\hg_repo_name

    • 我刚刚有一个 SVN 存储库,在其中我将一个代码文件夹导入到根目录中,但没有导入主干......我尝试使用上面的代码将主干设置为等于代码文件夹名称,但它不起作用......但是,当我将文件夹名称附加到 svn url 时,它起作用了:

    `hg 转换 svn://%computername%.domain.com/code_folder .\hg_repo_name

祝你好运!

0 投票
2 回答
915 浏览

svn - Hg 转换为 SVN 给出“看起来不像 Subversion 存储库”

这个问题与SVN 上的 HG Convert 给出的“看起来不像 Subversion 存储库”几乎相同,但那里给出的解决方案对我不起作用。

即使我有与 Subversion 1.7(db 格式 4)兼容的本地 svn 存储库,我也得到了这个:

我在 Windows 8 Pro x64 上有 TortoiseHg 2.11(带有 Mercurial 2.9)和 TortoiseSVN 1.8.4(Subversion 1.8.5)。我按照这里的步骤http://blog.dummzeuch.de/2013/12/26/converting-from-subversion-to-mercurial/

尝试将 SVN 1.5 存储库格式与 db 格式 3 一起使用,结果相同。

我还尝试通过从存储库克隆它并在 %userprofile%\mercurial.ini 中启用扩展来设置 HGSubversion(不完全确定这是否会),如手册https://www.mercurial-scm.org/wiki/HgSubversion中所述

无法让它工作,这就是我得到的:

据我了解,虽然 HGSubversion 不会转换 svn 存储库(我确实想转换)。我尝试了它,因为在另一个线程中被列为可能的解决方案。

请帮我把它放到 Mercurial 中!

0 投票
2 回答
339 浏览

mercurial - Mercurial 存储库清理保留 Kiln/Fogbugz 历史记录

TL;DR 版本:是否可以在不破坏 Kiln/Fogbuz 历史的情况下重组 Mercurial 存储库?还是我必须重新开始?


我有一个非常混乱的存储库,需要进行一些认真的清理,并且正在尝试找出最好的方法。目标是完全删除一些文件——它们不应该出现在任何提交中,永远——移动一些目录,并将一个目录拆分到一个完全独立的存储库中。我知道,我知道——你不应该能够改变历史。但是,在这种情况下,它要么更改历史记录,要么从头开始使用新的存储库。

有问题的存储库在 Mercurial 中管理,远程存储库托管在Kiln中。在Fogbugz中跟踪问题。由于一些提交链接处理规则,提交消息中对问题(案例)编号的任何引用Case 123都将转换为指向相关 Fogbugz 案例的链接。反过来,提到的案例有一个附有提交消息的注释。

当前结构

项目文件结构目前是这样的:

目标结构

我想要的结构是这样的:

a-plugin-folder将移至其自己的单独存储库。test-config-file.php将不再在存储库中进行跟踪。理想情况下,我还会对分支进行一些小的修剪和重命名。

在我的梦想世界中,file-with-sensitive-and-non-sensitive-info.php会以某种方式始终如一地被跟踪,但是敏感信息(几个密码)被拉到一个不受版本控制的配置文件中。我意识到这可能是一厢情愿的想法。

我目前的想法

我目前的想法是,我的愿望清单基本上是不可能的:从现在开始,我可以创建新的、结构合理的存储库,但不能保留我的更改历史记录,也无法进行我需要进行的根本性结构更改。在这个视图中,我应该使用当前的代码库,按照我想要的方式重新组织它,并将它作为变更集 1 提交给两个新的存储库(根存储库和插件存储库)。然后,我会在某处备份旧存储库的副本以供参考。主要缺点:(1) 我丢失了所有历史记录,(2) Kiln 和 Fogbugz 对历史提交的交叉引用都是吐司。

我的问题

所以,问题来了:有什么方法可以做我想做的事——重组,拉出一些文件,让一切看起来很漂亮——而不丢失我所有的历史?

我考虑过使用hg convert扩展名,大量使用filemap,splicemapbranchmap选项。我用这种方法看到的问题包括:(1) 破坏所有先前的构建,(2) 根本没有file-with-sensitive-and-non-sensitive-info.php先前的构建(或将其留在里面,这会破坏这一点),以及 (3) 大量渲染许多提交消息在他们引用文件名或 repo 结构的程度上是不正确的。换句话说,与刚开始干净、结构合理的存储库相比,我不确定这个选项对我有多大帮助。

我还考虑过极端的选择:编写某种自定义脚本来构建一个新的存储库,方法是遍历每个现有的提交,从 中剥离敏感信息,file-with-sensitive-and-non-sensitive-info.php在必要的范围内重写提交消息,并提交所有内容的修订版本。从理论上讲,这可以解决我所有的问题,但代价是重新发明轮子并且可能要花费大量时间。我正在寻找不等同于编写整个hg扩展的东西。

编辑:我正在考虑创建一个空的存储库,然后编写一个脚本,一次使用hg exporthg import带来一个变更集,在必要时进行编辑以从文件中去除密码等敏感信息。有没有理由这不起作用?

0 投票
1 回答
326 浏览

mercurial - 无法使用 hg-git 或 hg convert 将 Git 存储库转换为 Mercurial

我正在尝试将现有的 git 存储库转换为 mercurial,但没有运气。我已经尝试过 hg convert,但是当我运行 hg convert 时,如下所示:

我收到以下错误:

当我尝试使用 hg-git 克隆存储库时,我得到了同样的错误。我已经尝试使用 hg convert 和 hg-git 针对本地克隆的存储库和通过 HTTP 提供的存储库,并且我已经尝试了 Windows 和 Linux 机器上的转换/克隆过程。非常感谢您对此的任何帮助。

0 投票
0 回答
145 浏览

svn - 缺少合并提交,将 SVN 存储库转换为 hg

我正在使用包含的 hg 合并工具从现有的 SVN 存储库进行转换。我正在使用安装了最新 TortoiseHg 的 Windows 7 机器(版本 2.11.2 和 Mercurial-2.9.2、Python-2.7.6、PyQt-4.10.3、Qt-4.8.5)。我正在使用这个命令:

hg convert https://[url to root of repository] [output dir] --datesort

我的问题是生成的 hg 存储库中没有跟踪历史合并。具体来说,所有提交都存在并且看起来在解剖学上是正确的,但分支没有显示为合并回 hg.xml 中的默认分支。我尝试使用 git-svn 工具进行并行转换,它成功地跟踪了合并。

在从 SVN 存储库转换后,mercurial 有没有办法自动识别和显示从分支返回到主干的合并?

0 投票
2 回答
187 浏览

mercurial - 拆分 mercurial 存储库时出错

我有一个托管在包含多个文件夹的 bitbucket 上的 mercurial 存储库。我的目标是将这些文件夹中的每一个拆分到一个单独的存储库中。在尝试了一些关于 stackoverflow 的建议但失败后,我最后一次掷骰子是在bitbucket 教程中复制一个模拟示例

即使我按照信中的说明进行操作,这也失败了:

这与我之前尝试拆分实际存储库时出现的错误相同。

问题是: 1. 为什么会失败?2.还有其他方法可以拆分这些存储库吗?

0 投票
1 回答
356 浏览

git - 如何将带有分支的 Git 存储库转换为可用的 Mercurial 存储库?

我想将具有多个分支的 Git 存储库转换为 Mercurial 存储库。仅使用hg convert一个默认分支创建,然后每个 Git 分支都有一个头。

我已经阅读了如何使用 hg convert 将 git 分支导入到 mercurial 中?并且知道不可能知道哪个提交属于 Git 中的哪个分支。然而,一个拥有与分支一样多的头的存储库对我来说不是一个可行的解决方案。

由于所有分支都不同,我显然不能将它们全部合并到一个头上。

如何转换或修改转换后的存储库,以使每个负责人都在不同的分支上?请注意,我不一定需要将所有现有提交分配给正确的分支,但我希望从这一刻开始的提交分配给正确的分支,并且每个分支只有一个头。