Svn 如何强制mercurial接受空提交

Svn 如何强制mercurial接受空提交,svn,mercurial,hgsvn,Svn,Mercurial,Hgsvn,我试图用hgsvn转换一个SVN repo,我有一些提交,其中修改了SVN属性,但由于Mercurial不使用这些属性,它将其视为空提交并中止。有没有办法强迫这个hgcommit接受一个不会改变任何东西的提交 我对hgsvn的内部结构不太熟悉,无法对其进行黑客攻击以跳过空提交。当我以前在p4和hg中需要空提交时,我只是使用了一个文件,该文件被放在一边作为空提交。只需将某种类型的随机字符串(我通常使用时间和日期)转储到一次性文件中,然后hgcommitaway….我认为不能在mercurial中执

我试图用
hgsvn
转换一个SVN repo,我有一些提交,其中修改了SVN属性,但由于Mercurial不使用这些属性,它将其视为空提交并中止。有没有办法强迫这个
hgcommit
接受一个不会改变任何东西的提交


我对
hgsvn
的内部结构不太熟悉,无法对其进行黑客攻击以跳过空提交。

当我以前在p4和hg中需要空提交时,我只是使用了一个文件,该文件被放在一边作为空提交。只需将某种类型的随机字符串(我通常使用时间和日期)转储到一次性文件中,然后
hgcommit
away….

我认为不能在mercurial中执行空提交。以下是。

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

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

继续进口


但在尝试此操作之前,请先做一个备份。也许,以下内容在这种情况下对您没有帮助,但可能对其他读者有所帮助


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

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

  • 添加一个新文件(比如,
    Dummy.txt
    )并提交
  • hg忘记Dummy.txt
  • hg提交——修改
  • 这将从上一次提交中删除
    Dummy.txt
    ,使其为空。(您可以在步骤1中使用OrtoiseHG,但在步骤2和3中需要使用命令行工具。)


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

    谢谢,这让我通过了提交。有一个黑客:创建1个文件,提交,然后删除该文件并使用amend。
    $ hg log -l1
    changeset:   1234:123456789abc
    branch:      trunk
    tag:         tip
    tag:         svn.15800
    parent:      1233:cba987654321
    user:        Rudi <rudi@example.com>
    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)
    
    $ hg tag -l -r 123456789abc svn.15801