【问题标题】:How can I force mercurial to accept an empty commit如何强制 mercurial 接受空提交
【发布时间】:2011-04-03 11:03:29
【问题描述】:

我正在尝试使用hgsvn 转换一个 SVN 存储库,并且我有一些修改了 SVN 属性的提交,但由于 Mercurial 不使用这些,它认为这是一个空提交并中止。有什么办法可以强制这个hg commit 接受一个不会改变任何东西的提交?

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

【问题讨论】:

  • 有一个技巧:创建 1 个文件,提交,然后删除该文件并使用修改。

标签: svn mercurial hgsvn


【解决方案1】:

当我之前在 p4 和 hg 中需要空提交时,我只是使用了一个被搁置的文件来“成为”空提交。只需将某种随机字符串(我通常使用时间和日期)转储到一次性文件中,然后 hg commit 就可以了....

【讨论】:

    【解决方案2】:

    我认为您不能在 mercurial 中进行空提交。这里是a thread explaining why

    【讨论】:

      【解决方案3】:

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

      假设您的导入处于此状态(最后导入的 rev 为 15800,仅属性 rev 为 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
      

      并继续导入。

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

      【讨论】:

      • 谢谢,这让我通过了那次提交。
      【解决方案4】:

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

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

      导入了它

      【讨论】:

        【解决方案5】:

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

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

        这将从先前的提交中删除Dummy.txt,使其为空。 (您可以在第 1 步中使用 TortoiseHg,但在第 2 步和第 3 步中您需要使用命令行工具。)

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-25
          • 2013-04-30
          • 1970-01-01
          • 1970-01-01
          • 2014-04-22
          • 2014-07-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多