如何强制 Mercurial 在 SVN 转换期间接受空提交?

问题描述 投票:0回答:5

我正在尝试使用

hgsvn
转换 SVN 存储库,并且我有一些修改了 SVN 属性的提交,但由于 Mercurial 不使用这些内容,因此它会将其视为空提交并中止。有没有办法强制这个
hg commit
接受不改变任何内容的提交?

我对

hgsvn
的内部结构还不够熟悉,无法破解它以跳过空提交。

svn mercurial hgsvn
5个回答
3
投票

如果您将本地 svn.$REVNUM 标记添加到头部修订版(=现在也具有 svn.($REVNUM-1) 标记的修订版),则可以跳过此提交。然后您可以继续使用 hgpullsvn。

假设您的导入处于此状态(上次导入的转速为 15800,仅属性转速为 15801):

$ hg log -l1
changeset:   1234:123456789abc
branch:      trunk
tag:         tip
tag:         svn.15800
parent:      1233:cba987654321
user:        Rudi <[email protected]>
date:        Tue Aug 24 11:42:23 2010 +0200
summary:     Foobar

$ svn info
Path: .
URL: svn+ssh://example.com/foobar/trunk
Repository Root: svn+ssh://example.com/foobar
Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10
Revision: 15801
Node Kind: directory
Schedule: normal
Last Changed Author: rudi
Last Changed Rev: 15801
Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010)

然后您只需添加 svn.15801 标签即可:

$ hg tag -l -r 123456789abc svn.15801

然后继续导入。

但是在尝试此操作之前请先进行备份。


3
投票

我认为你不能在 Mercurial 中进行空提交。这是一个解释原因的帖子


1
投票

当我之前需要在 p4 和 hg 中进行空提交时,我只是使用了一个预留为“空提交”的文件。只需将某种随机字符串(我通常使用时间和日期)转储到一次性文件中,然后

hg commit
消失......


1
投票

根据 @vorrtex 对原始问题的评论,在 Mercurial 中强制执行空提交的最简单方法如下:

  1. 添加一个新文件(例如,
    Dummy.txt
    )并提交。
  2. hg forget Dummy.txt
  3. hg commit --amend

这将从之前的提交中删除

Dummy.txt
,并将其留空。 (您可以在步骤 1 中使用 TortoiseHg,但在步骤 2 和 3 中需要使用命令行工具。)

我将其添加为新答案,因为最初扫描此线程时我错过了评论,并且现有答案不会创建真正空的提交。


0
投票

也许,以下内容对您的情况没有帮助,但也许对其他读者有帮助。

您可以通过导入几乎空的补丁来进行“空”提交。我导出了一个补丁,删除了其中的所有更改,只留下 3 行(diff...、---... 和 +++ ...),然后使用

hg import --bypass --message ...

导入它
© www.soinside.com 2019 - 2024. All rights reserved.