代码之家  ›  专栏  ›  技术社区  ›  Asa Ayers

我怎样才能强迫mercurial接受空提交

  •  8
  • Asa Ayers  · 技术社区  · 14 年前

    我正在尝试将SVN回购转换为 hgsvn 我有一些提交,其中svn属性被修改,但是由于Mercurial不使用这些属性,它认为这是一个空提交并中止。有什么办法可以强迫这个吗 hg commit 接受一个不会改变任何事情的承诺?

    我对 HGSNV 黑客攻击,跳过空的提交。

    5 回复  |  直到 7 年前
        1
  •  3
  •   Rudi    14 年前

    如果将本地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 <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)
    

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

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

    继续进口。

    但是在你尝试之前做个备份。

        2
  •  3
  •   Martin Geisler    14 年前

    我认为你不能在反复无常的情况下做空虚的承诺。这里是 a thread explaining why .

        3
  •  1
  •   Martin Geisler    14 年前

    当我以前在p4和hg中需要空提交时,我只使用了一个被设置为“空提交”的文件。只需将某种类型的随机字符串(我通常使用时间和日期)转储到一次性文件中,然后 hg commit 离开…

        4
  •  1
  •   Neil T    7 年前

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

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

    这将删除 Dimy.txt 从上一次提交开始,将其保留为空。(您可以在步骤1中使用TortoiseHg,但在步骤2和3中需要使用命令行工具。)

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

        5
  •  0
  •   iuzuz    10 年前

    也许,下面的内容不会在这种情况下帮助你,但会对其他读者有所帮助。

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